1、华中科技大学文华学院数 据 结 构课 程 设 计 报 告题 目:学生信息管理系统专 业:计算机应用与技术学 号:姓 名:指导老师: 时间:一、总体框架图1、 题目:学生信息管理系统2、 设计内容及要求:内容:完成简单的学生信息管理系统要求:(1)学生信息包括:学号、姓名、数学成绩、英语成绩、数构成绩;(2)用链表存放学生信息;(3)实现简单的菜单调用;(4)程序的功能包括:学生信息链表的建立;学生信息的显示;学生信息的查询;学生信息的删除;学生信息的插入;编写算法,以实现基本要求。二、本程序用到的基本操作 InintList( /学号char name20; /姓名int math;/高数in
2、t English;/英语int Data;/数据结构struct student *next;student;student *head=NULL;int length; /链表的长度void create()student *p1,*p2;length=0;int number=0;p1=(student *)malloc(sizeof(student);p1-num=-1;if(head=NULL)head=p1;printf(“请输入学生的学号、姓名、高数、英语、数据结构:n“);while(numbernum,p2-name, /输入学生信息if(p2-num=0)printf(“链
3、表创建完成!n“);break;length+; /链表的长度p1-next=p2;p2-next=NULL;p1=p1-next;number+;return ;void display()student *p=head-next;printf(“链表中所有的学生信息如下:n“);while(p!=NULL)printf(“%d %s %d %d %dn“,p-num,p-name,p-math,p-English,p-Data);p=p-next;return ;void search()int num_;student *p=head-next;printf(“需要查找的学生学号为:“)
4、;scanf(“%d“,while(p!=NULL)if(p-num=num_)printf(“学号为%d 的学生的信息如下:n“,num_);printf(“%d %s %d %d %dn“,p-num,p-name,p-math,p-English,p-Data);return; p=p-next;if(p=NULL)printf(“无此记录!n“);return ;void search1()char na_me20;student *p=head-next;printf(“需要查找的学生姓名为:“);scanf(“%s“,na_me);while(p!=NULL)if(!(strcmp
5、(p-name,na_me)printf(“姓名为%s 的学生的信息如下:n“,na_me);printf(“%d %s %d %d %dn“,p-num,p-name,p-math,p-English,p-Data);return; p=p-next;if(p=NULL)printf(“无此记录!n“);return ;void insert()int num_,i;student *p,*q;p=head;printf(“请输入你要插入位置: “);scanf(“%d“,if(num_length)printf(“找不到要插入的位置n“);return ;elseprintf(“请输入你要
6、插入的学生的学号、姓名、高数、英语、数据结构:n“);q=(student *)malloc(sizeof(student);scanf(“%d %s %d %d %d“,while(p!=NULL)if(p-num=q-num)printf(“该学号已经存在,无法插入!n“);return ;p=p-next;p=head;for(i=0;inext;q-next=p-next;p-next=q;length+;printf(“插入成功!n“);return ; void Delete()int num_;student *p,*q;q=head,p=head-next;printf(“请输
7、入要删除的学生的学号:n“);scanf(“%d“,while(p!=NULL)if(p-num=num_)q-next=p-next;free(p);length-;printf(“删除成功!n“);return ;p=p-next;q=q-next;if(p=NULL)printf(“找不到要删除的编号!n“);return ;void menu()printf(“_n“);printf(“| 学生信息管理系统 |n“);printf(“| 0、 退出系统 |n“);printf(“| 1、 建立链表 |n“);printf(“| 2、 显示链表 |n“);printf(“| 3、 查找链
8、表中的某个学生信息 |n“);printf(“| 4、 删除链表中指定学号的学生 |n“);printf(“| 5、 指定的位置上插入一个学生 |n“);printf(“_n“);return ;int main(void)int a;menu();int choice;while(1)printf(“请选择相应的功能:“);scanf(“%d“,switch(a)case 0:return 0;case 1:create();menu();break;case 2:if(head)display();menu();elseprintf(“链表为空,请先建立链表!n“);menu();brea
9、k;case 3:if(head)printf(“请选择是按学号查找还是按姓名查找,若是学号就按 7,姓名按 8n“);scanf(“%d“,if(choice=7)search();elsesearch1();menu();elseprintf(“链表为空,请先建立链表!n“);menu();break;case 4:if(head)Delete();menu();elseprintf(“链表为空,请先建立链表!n“);menu();break;case 5:if(head)insert();menu();elseprintf(“链表为空,请先建立链表!n“);menu();break;de
10、fault:break;system(“pause“);return 0;六、程序结果建立链表显示链表查询学生信息按学号查按姓名查删除信息插入信息退出系统七、心得体会这次的学生信息管理系统的设计中,使我懂得课堂上的知识,必须要通过实践操作才能掌握。在练习中,遇到一些问题,需要具体分析,具体操作,不断调试。在这过程中,遇到过很多问题。刚建立链表时,总是出错,经过不断地调试后来解决了。通过这次的设计,我发现了自身知识的欠缺,上机操作的经验不足,以及粗心。比如,一些错误不知道怎么改,后来同学讨论后才调试成功,还有字符串的比较都不熟,有时掉了地址符等等。虽然有很多欠缺,但在这过程中我也受益良多,感觉自己对程序的处理越来越清晰。在调试过程中,我发现有时一个小小的错误也会给程序带来很大的麻烦,所以以后应该更加细心,多多操作,积累经验。