重庆邮电大学软件技术基础实验报告耿道渠.docx

上传人:b****4 文档编号:6585278 上传时间:2023-05-10 格式:DOCX 页数:62 大小:595.99KB
下载 相关 举报
重庆邮电大学软件技术基础实验报告耿道渠.docx_第1页
第1页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第2页
第2页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第3页
第3页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第4页
第4页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第5页
第5页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第6页
第6页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第7页
第7页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第8页
第8页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第9页
第9页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第10页
第10页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第11页
第11页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第12页
第12页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第13页
第13页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第14页
第14页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第15页
第15页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第16页
第16页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第17页
第17页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第18页
第18页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第19页
第19页 / 共62页
重庆邮电大学软件技术基础实验报告耿道渠.docx_第20页
第20页 / 共62页
亲,该文档总共62页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

重庆邮电大学软件技术基础实验报告耿道渠.docx

《重庆邮电大学软件技术基础实验报告耿道渠.docx》由会员分享,可在线阅读,更多相关《重庆邮电大学软件技术基础实验报告耿道渠.docx(62页珍藏版)》请在冰点文库上搜索。

重庆邮电大学软件技术基础实验报告耿道渠.docx

重庆邮电大学软件技术基础实验报告耿道渠

重庆邮电大学-软件技术基础--实验报告(耿道渠)

《软件技术基础》实验报告

实验名称:

顺序表的操作

班级学号姓名

第9周星期2、5,6节成绩

一、实验目的:

1、掌握顺序表结构的实现方式;

2、掌握顺序表常用算法的实现;

3、熟悉利用顺序表解决问题的一般思路;

4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。

二、实验内容:

1、设计一个静态数组存储结构的顺序表,要求编程实现如下任务:

(1)建立一个顺序表,首先依次输人整数数据元素(个数根据需要键盘给定)。

(2)删除指定位置的数据元素(指定元素位置通过键盘输入),再依次显示删除后的顺序表中的数据元素。

(3)查找指定数据的数据元素(指定数据由键盘输入),若找到则显示位置,若没有找到则显示0。

2、使用顺序表实现一个电话本的管理程序,电话本中的每条记录包括学号、姓名、手机号码和固定电话四项。

要求实现菜单、初始化、添加、删除和显示等功能。

三、实验结果:

四、实验中遇到的问题及解决方法:

第一次编写C++,感觉力不从心,回去多看看PPT。

五、实验心得体会:

对顺序表的一些常用语句不熟悉,对顺序表的整体思路理解不深刻以后要加强练习

附:

源程序(自行编写或修改的程序。

若为修改程序请注明修改部分的功能,若为书上实例则可不附。

#include

#include

#include

#include

#defineMAXSIZE20

usingnamespacestd;

intnum;

typedefstruct

{

stringstudent_number;

stringname;

stringtel;

stringhome_phone;

intid;

}TEL;

voidshuaxin(TEL*);

voiddelet(TEL*);

voidfind(TEL*);

voidshow(TEL*);

intmain(void)

{

intchoose;

TELList[MAXSIZE];

while

(1)

{

cout<<"***************************欢迎来到XXX电话本系统*********************"<

cout<<"1.初始化并建立"<

cout<<"2.删除"<

cout<<"3.查找"<

cout<<"4.显示全部"<

cin>>choose;

system("cls");

while(choose<1||choose>4)

{

cout<<"输入错误,数字1-4,请重新输入!

"<

cin>>choose;

system("cls");

}

switch(choose)

{

case1:

shuaxin(List);break;

case2:

delet(List);break;

case3:

find(List);break;

case4:

show(List);break;

}

//system("cls");

}

return0;

}

voidshuaxin(TEL*list)

{

inti,j;

for(i=0;i

{

list[i].id=i+1;

list[i].home_phone="none";

list[i].name="none";

list[i].student_number="none";

list[i].tel="none";

}

system("cls");

cout<<"初始化成功,现在开始建表:

"<

cout<<"请输入需要建立的电话个数:

(小于"<

cin>>num;

while(num<1||num>MAXSIZE)

{

system("cls");

cout<<"输入错误,请重新输入"<

cin>>num;

}

system("cls");

cout<<"请依次输入学生的学号,姓名,移动电话,家庭电话"<

for(j=1;j<=num;j++)

{

cout<

cin>>list[j-1].student_number;

cin>>list[j-1].name;

cin>>list[j-1].tel;

cin>>list[j-1].home_phone;

cout<

}

if(num==(j-1))

{

system("cls");

cout<<"建立表完毕!

"<

}

}

voiddelet(TEL*list)

{

intj,i=0;

cout<<"请输入你需要删除的序号"<

cin>>j;

while(j<0||j>num)

{

cout<<"输入错误,请重新输入"<

cin>>j;

}

while(list[i].id!

=j)

i++;

for(j=i;j

{

list[j].name=list[j+1].name;

list[j].tel=list[j+1].tel;

list[j].student_number=list[j+1].student_number;

list[j].home_phone=list[j+1].home_phone;

}

list[j].home_phone="none";

list[j].name="none";

list[j].student_number="none";

list[j].tel="none";

num--;

system("cls");

cout<<"删除完毕"<

}

voidfind(TEL*list)

{

stringtelnum;

inti,key=0;

cout<<"请输入你需要查找的电话号码"<

cin>>telnum;

system("cls");

for(i=0;i

{

if(telnum==list[i].tel||telnum==list[i].home_phone)

{

if(key==0)

cout<<"依次学号姓名移动电话家庭电话"<

cout<

cout<

cout<

cout<

cout<

cout<

key=1;

}

}

if(key==0)

cout<<"未找到此电话号码"<

}

voidshow(TEL*list)

{

inti;

cout<<"现在有"<

cout<<"依次学号姓名移动电话家庭电话"<

for(i=0;i

{

cout<

cout<

cout<

cout<

cout<

cout<

}

cout<<"输出完毕"<

}

 

《软件技术基础》实验报告

实验名称:

链表的操作

(一)

班级学号姓名

第10周星期2、5,6节成绩

一、实验目的:

1、掌握单链表结构的实现方式;

2、掌握单链表常用算法的实现。

二、实验内容:

1、设计一个链表,要求编程实现如下任务:

(1)建立一个链表,首先依次输人整数数据元素(个数根据需要键盘给定)。

(2)删除指定值的结点(指定值通过键盘输入),再依次显示删除后的链表中的数据元素。

(3)查找指定值的结点(指定数据由键盘输入),若找到则显示查找成功,若没有找到则显示查找失败。

(4)在第i个节点(i由键盘输入,i=0表示插入的结点作为第1个结点)之后插入一个元素为x的节点。

三、实验结果:

四、实验中遇到的问题及解决方法:

编写过程中经常把C语言和C++的语句形式搞混乱,课后认真了解了C++后得以解决。

五、实验心得体会:

对单链表的实现方式和常用算法掌握不足,对C++部分基本概念不熟悉,需课后补强

附:

源程序(自行编写或修改的程序。

若为修改程序请注明修改部分的功能,若为书上实例则可不附。

#include

#include

#include

structLNode

{

intdata;

structLNode*next;

};

LNode*find(LNode*head,intx)

{

LNode*p=head->next;

while(p!

=NULL&&p->data!

=x)

p=p->next;

returnp;

}

voidInsert(LNode*head,inti,intx)

{

if(i<1)

cout<<"不存在第"<

else

{

LNode*p=head;

intk=0;

while(p!

=NULL&&k

{

p=p->next;

k++;

}

if(p==NULL)

cout<

else

{

LNode*s=newLNode;

s->data=x;

s->next=p->next;

p->next=s;

}

}

}

voidDelete(LNode*head,inti)

{

if(i<1)

cout<<"不存在第"<

else

{

LNode*p=head;

LNode*q;

intk=0;

while(p!

=NULL&&k

{

q=p;

p=p->next;

k++;

}

if(p==NULL)

cout<

else

{

q->next=p->next;

deletep;

}

}

}

voidmain()

{

LNode*head,*p;

head=newLNode;

head->next=NULL;

inti,x,y;

cout<<"请输入5个数,每个书中间空一格:

"<

for(i=1;i<=5;i++)

{

cin>>x;

Insert(head,i,x);

}

i=0;

cout<<"请输入需要删除的节点(1~5):

"<

cin>>i;

Delete(head,i);

cout<<"删除的节点"<

"<

p=head->next;

while(p!

=NULL)

{

cout<data<<"";

p=p->next;

}

cout<

cout<<"请输入需要查找的指定值的结点:

";

cin>>x;

if(find(head,x)!

=NULL)

cout<<"查找成功"<

else

cout<<"查找失败"<

cout<

i=0;

x=0;

cout<<"请输入在i节点及元素x"<

cin>>i>>x;

Insert(head,i,x);

cout<<"显示:

"<

p=head->next;

while(p!

=NULL)

{

cout<data<<"";

p=p->next;

}

cout<

}

 

《软件技术基础》实验报告

实验名称:

链表的操作

(二)

班级学号姓名

第11周星期2、5,6节成绩

一、实验目的:

1、熟悉利用线性链表解决问题的一般思路;

2、参照给定的链表的程序样例,验证给出的链表的常见算法,了解单链表结构的优点和不足。

二、实验内容:

1、使用链表实现一个电话本的管理程序,电话本中的每条记录包括姓名和电话两项。

要求实现菜单管理、记录的添加、删除和显示等功能。

三、实验结果:

四、实验中遇到的问题及解决方法:

对查找名字、查找号码等功能掌握不清,问老师和同学后基本清楚

五、实验心得体会:

体会到了C++的神奇与精彩,但是自己还不能实现这种神奇,达到这种精彩,但是增强了自身兴趣

附:

源程序(自行编写或修改的程序。

若为修改程序请注明修改部分的功能,若为书上实例则可不附。

#include

#include

#include

#include

#defineLENsizeof(TEL)

#defineSIZEsizeof(Size)

intn=0;

typedefstructtel

{

charname[10];

longnum;

structtel*next;

}TEL;

typedefstructtel_size

{

charname[10];

longnum;

}Size;

TEL*search(void);//从文件读取

TEL*insert(TEL*head);//插入

TEL*del(TEL*head);//删除

voidshowall(TEL*head);//输出到屏幕

voidfind_name(TEL*head);//通过名字查找

voidfind_number(TEL*head);//通过号码查找

TEL*revise(TEL*head);

voidsav(TEL*head);//储存

intmain(void)

{

TEL*head=NULL;

intchoose;

printf("welcometothistelphonenumbersystem\n");

head=search();

printf("1.insert\n");//选择显示界面

printf("2.del\n");

printf("3.showall\n");

printf("4.find_name\n");

printf("5.find_number\n");

printf("6.revise\n");

printf("7.save\n");

printf("8.end\n");

do//选择项

{

printf("pleasechooseyourchoose:

\n");

scanf("%d",&choose);

switch(choose)

{

case1:

head=insert(head);break;

case2:

head=del(head);break;

case3:

showall(head);break;

case4:

find_name(head);break;

case5:

find_number(head);break;

case6:

head=revise(head);break;

case7:

sav(head);break;

case8:

return0;

default:

printf("inputwrong!

\n");

printf("\n");

}

}while

(1);

return0;

}

TEL*search(void)//寻找文件是否存在函数

{

FILE*fp;

TEL*head=NULL;

TEL*p2,*p1;

p1=p2=(TEL*)malloc(LEN);

if((fp=fopen("TELnumber.txt","a+"))==NULL)//打开或者新建文件

{

printf("cantopenfile!

\n");

exit(0);

}

fseek(fp,0L,0);//文件指针倒回到开头

while(!

feof(fp))

{

if(fread(p1,SIZE,1,fp)!

=1)//需要防止读出错误情况

break;

if(head==NULL)

head=p1;

elsep2->next=p1;

p2=p1;

n++;

p1=(TEL*)malloc(LEN);

}

free(p1);

p2->next=NULL;

fclose(fp);

returnhead;

}

TEL*insert(TEL*head)//插入新号码函数

{

TEL*p0,*p1,*p2;

p0=(TEL*)malloc(LEN);

printf("pleaseinputanameandnumber:

\n");

scanf("%s%ld",p0->name,&p0->num);

p1=head;

p2=p1;

if(head==NULL)

{

head=p0;

p0->next=NULL;

}else

{

while(strcmp(p0->name,p1->name)>0&&p1->next!

=NULL)//比较字符串,找到应该插入位置

{

p2=p1;

p1=p1->next;

}

if(strcmp(p0->name,p1->name)<=0)//比较字符串,插入新号码

{

p2->next=p0;

p0->next=p1;

}else

{

p1->next=p0;

p0->next=NULL;

}

}

n++;

returnhead;

}

TEL*del(TEL*head)//删除函数

{

TEL*p1,*p2;

p1=head;

longdele;

printf("pleaseinputwhatnumberdoyouwanttodel:

\n");//输入删除的电话号码

scanf("%ld",&dele);

if(head==NULL)

printf("NULLlist!

\n");//空表情况

else

{

while(dele!

=p1->num&&p1!

=NULL)//找到位置

{

p2=p1;

p1=p1->next;

}

}

if(dele==p1->num)

{

if(dele==head->num)//删除在头部情况

head=head->next;

elsep2->next=p1->next;//输出删除的数据并用链表架空

printf("delethisperson'number:

\n");

printf("%10s%15ld",p1->name,p1->num);

n--;

}elseprintf("cantfindthisperson!

\n");//没找到情况

returnhead;

}

voidshowall(TEL*head)//打印函数

{

inti=0;

TEL*p;

p=head;

if(head==NULL)

printf("NULLlist!

\n");//空表情况

else

{

printf("thereis%dnumber:

\n",n);

printf("namenumber\n");

do

{

i++;

printf("%d.%10s%15ld\n",i,p->name,p->num);

p=p->next;

}while(p!

=NULL);

}

}

voidfind_name(TEL*head)//以名字方式寻找号码

{

TEL*p;

intdis=0;

charf_name[20];

p=head;

printf("pleaseinputaname:

\n");//输入名字

scanf("%s",f_name);

if(head==NULL)

printf("NULLlist!

\n");//空表情况

else

{

do

{

if(strcmp(p

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2