《《数据结构课程设计》实验报告.doc》由会员分享,可在线阅读,更多相关《《数据结构课程设计》实验报告.doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、九江学院信息科学与技术学院数据结构课程设计报告书 题 目: 学生成绩管理系统 专 业: 信息管理与信息系统 班 级: 姓 名: 学 号: 同组人员: 指导老师: 设计时间: 2014年 3月 23日 2014年3月28日 目 录数据结构课程设计报告书11.课程设计(实训)计划32.系统需求分析与功能设计33. 总体设计44. 程序模块设计65. 技术难点与分析76. 系统测试87. 心得体会98. 参考文献101. 课程设计(实训)计划3月24日:完成必做项目班级通讯录管理 3月25日:上午完成选做项目的需求分析、总体设计 下午完成选做项目的模块设计 3月26号:完成系统的编码和调试 3月27
2、号:设计有效的测试方法与测试数据、书写实验报告3月28号:准备答辩2. 系统需求分析与功能设计(根据课题的要求进行简单的需求分析,设计相应的数据流图,得出相应的系统功能需要, 系统数据流图)(1)具备对成绩的管理功能(添加、删除、排序)(2)具备按学号、姓名查询成绩的功能。备注:成绩记录的信息有学号、姓名。可以用能表示学生成绩的结构体数组存储数据。学生成绩管理系统退出添加修改删除处理输入查询排序学生成绩管理系统查询功能管理功能1:删除学生姓名、学号、成绩及学生列。2:对学生信息进行相应的修改(对象为:姓名、学号、成绩)。3:输入学生姓名、学号、成绩来添加学生列。用C语言编程比较同类数据(成绩)
3、大小进行排序。4:通过输入学生的姓名、学号来查询对应的成绩。3. 总体设计(根据功能需求,设计系统的总体结构。系统总体功能模块图,菜单的设计)Creat()创建表,输入姓名 班级 学号 各科成绩void menu();主登陆界面void main();主函数void alter(linklist L);修改学生信息void delnode(linklist L);删除学生信息void insert(linklist L,listnode *p);插入学生信息void outputlist(linklist L);输出学生信息listnode * listfind(linklist L);查找学
4、生信息void sort(linklist L);实现学生成绩的排序4. 程序模块设计(设计并编写输入输出、查询统计、数据维护等功能模块的应用程序, 每个人设计2个以上的模块,一个组完成一个完整的系统,数据库访问,存储过程调用等作重点阐述)1.建立单链表(1)模块设计分析:用头插法建表虽然算法简单,但生成的链表中结点的次序和输入的顺序相反。为求得二者一致这里采用了尾插法建表。(2)算法思想:首先将新结点插到当前单链表的表尾上,然后需要增加一个尾指针,使之指向当前单链表的表尾。代码:linklist createlist()/*建立一个单链表*/ listnode *p,*r; int flag
5、=1; r=L; while(flag=1)p=(listnode *)malloc(sizeof(listnode); printf(学号 班级 姓名 性别 电话 地址 n);printf( -n); scanf(%s %s %s %s %s %s,p-data.num,p-data.clas,p-data.name,p-data.sex,p-data.phone,p-data.addr);r-next=p; r=p; printf( 继续建表吗? (1.是/0.不):); scanf(%d,&flag);if(flag=1)printf(创建成功!n); r-next=NULL; retu
6、rn L;2.删除操作(1)模块设计分析:通过“按姓名删除”和“按电话号码删除”两种方式,系统根据用户输入的信息在单链表中查找,如果找到,直接删除。如果没找到,系统会给出提示。(2)算法思想:采用指针数据类型,设定指针,通过赋值来判断是否符合所要求条件,如果满足,则删除数据成功,否则失败。代码:void delnode(linklist L) int i; int j;char name9;char phone11; listnode *p,*q;p=L; printf(-n); printf( 1.按姓名删除n); printf( 2.按电话号码删除n); printf(-n); print
7、f(请选择: );scanf(%d,&i);if(i=1) printf(请输入你要删除联系人的姓名:);scanf(%s,name);while(p & strcmp(p-data.name,name)!=0 )p=p-next;else printf(请输入你要删除联系人的电话号码:);scanf(%s,phone);while(p & strcmp(p-data.phone,phone)!=0 )p=p-next;if(p=NULL) printf(没有要删除的联系人!:n);elseprintf(%s,%s,%s,%s,%sn,p-data.num,p-data.clas,p-data
8、.name,p-data.sex,p-data.phone,p-data.addr); printf (真的要删除该联系人吗?(1.是/0.不):); scanf(%d,&j); if (j=1) q=L; while(q!=NULL & q-next!=p) q=q-next; q-next=p-next; free(p); printf(联系人已被删除!n); 5. 技术难点与分析(主要内容:本课题在设计过程中所遇到的技术难点及解决方法。)1. 程序编写格式混乱,经老师指导,按要求把程序的格式弄好。2. 程序中的功能不够完善,经老师指导,对程序进一步改进。3. 运行程序存在些问题,经老师指
9、导,分模块运行成功。6.系统测试(主要内容:测试环境描述,测试系统结构,系统功能测试,测试数据,测试结果等)登陆界面数据输入成绩排序按学号查找修改信息添加学生信息退出7. 心得体会(主要对本课题开发过程进行归纳和总结,还应包括所得结果与已有结果的比较和本课题尚存在的问题,以及进一步开发的见解与建议。感谢对本课题研究与论文撰写过程中曾直接给予帮助的人员) 通过这次实训设计,让我学到了很多,也让我对c有了更深的了解和掌握。不仅复习课本上所学知识,还通过查资料、问同学,学到了课本上没有的知识。从而启发我,要想写好程序,在学好课本知识的同时,还需要多读和专业有关的一些书籍,同时还需要多动脑子,尽量把所
10、学的知识综合起来应用,力争写出完美的程序。除此之外,我还得到了一些有用的教训:写程序时必须要细心,编译出错后必须逐个错误去改正,决不能心急浮躁,否则修改之后还会有新的错误。总的来说,这次课程设计还是很好的锻炼了我的自我编程能力以及发现解决问题的能力。8. 参考文献1.数据结构用c语言设计 主编 耿国华 高等教育出版社2.C语言程序设计教程 主编 杨路明 北京邮电大学出版社3.网上相关内容 源程序代码:1.建立单链表:linklist createlist()/*建立一个单链表*/ listnode *p,*r; int flag=1; r=L; while(flag=1)p=(listnode
11、 *)malloc(sizeof(listnode); printf(学号 班级 姓名 性别 电话 地址 n);printf( -n); scanf(%s %s %s %s %s %s,p-data.num,p-data.clas,p-data.name,p-data.sex,p-data.phone,p-data.addr);r-next=p; r=p; printf( 继续建表吗? (1.是/0.不):); scanf(%d,&flag);if(flag=1)printf(创建成功!n); r-next=NULL; return L;2.删除操作:void delnode(linklist
12、 L) int i; int j;char name9;char phone11; listnode *p,*q;p=L; printf(-n); printf( 1.按姓名删除n); printf( 2.按电话号码删除n); printf(-n); printf(请选择: );scanf(%d,&i);if(i=1) printf(请输入你要删除联系人的姓名:);scanf(%s,name);while(p & strcmp(p-data.name,name)!=0 )p=p-next;else printf(请输入你要删除联系人的电话号码:);scanf(%s,phone);while(p
13、 & strcmp(p-data.phone,phone)!=0 )p=p-next;if(p=NULL) printf(没有要删除的联系人!:n);elseprintf(%s,%s,%s,%s,%sn,p-data.num,p-data.clas,p-data.name,p-data.sex,p-data.phone,p-data.addr); printf (真的要删除该联系人吗?(1.是/0.不):); scanf(%d,&j); if (j=1) q=L; while(q!=NULL & q-next!=p) q=q-next; q-next=p-next; free(p); printf(联系人已被删除!n);