数据结构实训报告.docx
- 文档编号:27033435
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:12
- 大小:148.73KB
数据结构实训报告.docx
《数据结构实训报告.docx》由会员分享,可在线阅读,更多相关《数据结构实训报告.docx(12页珍藏版)》请在冰豆网上搜索。
数据结构实训报告
数据结构设计报告
题目:
基于链表结构的学生记录管程序
2009年10月9日星期五
目录
目录…………………………………………………..2
课程设计课题……………………………………………3
设计要求及分析…………………………………………3
软件开发…………………………………………………3
软件程序基本介绍………………………………………3
程序代码及功能介绍……………………………………4
收获与体会……………………………………………7
附录……………………………………………………8
软件使用说明及图示…………………………………11
【一.】课程设计课题:
基于链表结构的学生记录管理程序
【二.】课程设计要求及分析:
要求:
实现链表的遍历函数、插入结点函数、删除结点函数;实现菜单函数;为本课程的上机实践,确定编程规范。
需求分析:
①定义链表结构;
②编制主函数、菜单函数,确定函数之间的接口;
③编制简单创建链表函数、遍历函数、插入结点函数、正式创建链表函数、删除结点函数;使用多套数据,进行系统调试。
【三.】软件开发:
实训设备或环境
硬件设备:
微型计算机系统
软件环境:
操作系统Windows,开发工具TC2.0
【四.】软件程序基本介绍:
该软件程序结构采用的是1个结构体、主函数、菜单函数、链表函数、遍历函数、插入节点函数、删除节点函数,界面采用菜单提示输入。
【五.】程序代码及功能介绍:
1.函数结构
在main函数中共有6个调用函数,分别为:
STUDENT*create();
STUDEN*load(FILE*fp,STUDENT*head;
STUDENT*insert(STUDENT*head);
STUDENT*del(STUDENT*head);
voidprint(STUDENT*head);
voidsave(STUDENT*head,FILE*fs);
2.函数结构图如下:
3.数据结构设计
typedefstructstudent
{intcode;/*学号*/
charname[10];/*姓名*/
intscore;/*分数*/
structstudent*next;/*指向结构体的指针*/
}STUDENT;
4.功能设计
STUDENT*create()//创建一个函数
{STUDENT*head,*p,*q;//定义了3个指针,指针类型为STUDENT
q=head=(STUDENT*)malloc(sizeof(STUDENT));//开辟一个头节点,q,head指针都指向此节点
head->next=NULL;//
p=(STUDENT*)malloc(sizeof(STUDENT));//开辟一个节点且p指向该节点
printf("pleaseputintothecode,name,score:
\n");
scanf("%d%s%d",&p->code,p->name,&p->score);
while(p->code!
=0)//当学号不为零时
{q->next=p;p->next=NULL;q=p;//q指向下一个指针p
p=(STUDENT*)malloc(sizeof(STUDENT));//开辟一个新节点p
printf("pleaseputintothecode,name,score:
\n");
scanf("%d%s%d",&p->code,p->name,&p->score);
}
free(p);//释放p指针
returnhead;//返回到头
}
STUDENT*load(charfilename[])
{FILE*fp;STUDENT*p,*head;inti=0;
/*p=head->next;p=p->next;*/
if((fp=fopen("txt1.txt","rb"))==NULL)
{
printf("cannotopeninfile\n");
return;
}
/*while(!
feof(fp))
{
fscanf(fp,"%d%s%d",&p->code,p->name,&p->score);
i++;
}*/
for(p=head->next;p;p=p->next)
fscanf(fp,"code=%d,name=%s,score=%d\n",&p->code,p->name,&p->score);
return;
}
STUDENT*insert(STUDENT*head)//插入函数
{STUDENT*p,*st;//定义指针p,st
st=(STUDENT*)malloc(sizeof(STUDENT));//开辟一个节点,
printf("pleaseputintothecode,name,score:
\n");
scanf("%d%s%d",&st->code,st->name,&st->score);
for(p=head;p->next!
=NULL&&p->next->code
st->next=p->next;p->next=st;//插入,
returnhead;
}
STUDENT*del(STUDENT*head)//删除函数
{STUDENT*p,*s;//定义两个指针,p指针和s指针
intcode;
printf("pleaseputintothecode:
\n");
scanf("%d",&code);
for(p=head;p->next!
=NULL&&p->next->code!
=code;p=p->next);找到要删除的位置
if(p->next==NULL)
{printf("%ddoesnotexist!
",code);returnhead;}//判断要删除的学号是否存在
s=p->next;
p->next=p->next->next;
free(s);
returnhead;
}
voidprint(STUDENT*head)//输出函数
{STUDENT*p;//定义结构体指针p
printf("\n");
for(p=head->next;p;p=p->next)
printf("code=%d,name=%s,score=%d\n",p->code,p->name,p->score);
}//输出所有的学号姓名成绩
voidsave(STUDENT*head,charfilename[])
{FILE*fp;STUDENT*p;inti=0;
p=head->next;p=p->next;
if((fp=fopen("save.txt","wb"))==NULL)
{printf("cannotopeninfile\n");
return;
}
while(!
feof(fp))
{fprintf(fp,"%d%s%d",p->code,p->name,p->score);
i++;}
fclose(fp);
}
voidmain()//主函数
{intchoice=8;
STUDENT*head;
charfilename[12]="g:
\\txt1.txt";
while(choice!
=7)
{choice=menu();
switch(choice)
{case1:
head=create();break;
case2:
head=load(filename);break;
case3:
head=insert(head);break;
case4:
head=del(head);break;
case5:
print(head);break;
case6:
save(head,filename);break;
case7:
break;//有7个选项,每个选项执行不同的函数
}
}
【六】收获与体会
1基于链表结构的学生记录管理程序,复习了链表概念和相关基本操作。
2实现了链表的遍历函数、插入结点函数、删除结点函数;实现菜单函数;为本课程的上机实践,确定了编程规范。
【七】附录
附:
软件使用说明及图示:
一.使用说明:
该压缩软件的使用界面十分简明,运行环境为DOS操作系统,进入界面后,就会提示输入字符串的输入形式,结束符为“回车符”。
分7个功能选项:
1创建链表(从键盘数入)2创建链表(从文件读取)3插入4删除5输出6保存于文件7退出。
二.使用注意:
创建链表(从文件读取),此文件要存在;保存文件,此文件可有可无。
三.图示:
1.原始菜单界面:
2.创建链表:
从键盘输入,按提示输入1
输出从键盘输入的数据:
按提示输入5
3插入数据:
按提示输入3
输出插入后的数据:
按提示输入5
4删除数据:
按提示输入4
输出删除后的数据:
按提示输入5
5最后退出:
按提示输入按7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)