学生成绩管理系统数据结构程序设计实验报告2_第1页
学生成绩管理系统数据结构程序设计实验报告2_第2页
学生成绩管理系统数据结构程序设计实验报告2_第3页
学生成绩管理系统数据结构程序设计实验报告2_第4页
学生成绩管理系统数据结构程序设计实验报告2_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实 验 报 告课程名称 数据结构综合设计实验 实验项目 学生成绩管理系统 系 别_ _计算机学院 _ _专 业_ 网络工程 _班级/学号_网工1202/2012011411_学生姓名 _王宇涵_实验日期 _2014年6月6日 成 绩 _ 指导教师 黄改娟 田英爱 数据结构综合实验设计学生成绩管理系统1. 需求分析系统主要管理学生信息及成绩信息排序等事项。根据需要可以查询学生的信息。主要功能包括如下。(1) 使用中文菜单,界面升级和用户输入要人性化。(2) 将学生信息保存到文本文档中,具体对学生信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来,保存在自己定义的数据结构中,然后在对该数据结构进行操作,所有操作完成,或者在相应的命令后,再将学生信息保存到文本文档中。(3) 具有数据输入功能,输入的数据能最终保存在文件中。(4) 具有数据删除功能,能最终从文件中删除。(5) 排序功能,根据自己设计的数据结构,升级排序算法。(6) 具有多种查询及输出功能。(7) 其他功能。(8) 学生信息的修改。2. 设计方案总体功能结构 输入学生成绩 输出学生成绩 查询学生成绩 插入学生成绩 按总分排名主界面 删除学生信息 退出系统3函数Struct Student/结构体Int term;/学期Int num;/学号Char name12;姓名Float mrak1;成绩Float mark2;Float mark3;Float sum;/总分Float average;/平均分;void input(list *head) 输入函数void output(list *h) 输出函数void sortsum(list *head) 总成绩排名void sortnum(list *head)按学号排名void find (list *h)查找主函数list *del (list *h)删除函数list *insert(list *h)插入函数4程序代码#include #include #include #define MAXLEN 100#define Null 0/*/int count = 0;/*/typedef struct node int num; / 学号 char nameMAXLEN; / 姓名 /*/char sex2; /性别/char sex;/*/float sum; /总分float ave; /平均分int computer; /计算机成绩int english; /英语成绩int math; /数学成绩int chinese; /语文分数struct node *next; / 指针域list;/*/void input(list *head) /输入函数/*/list *p,*r;int i,n; / n 为学生人数 /*p=(list *)malloc(sizeof(list);p-next=Null;*/r=head; printf(请输入学生人数.n); scanf(%d,&n);for(i=1;inum); printf(请输入学生性别:n); scanf(%s,&p-sex);printf(请输入学生姓名:n); scanf(%s,&p-name); printf(请输入语文成绩:n); scanf(%d,&p-chinese); printf(请输入英语成绩:n); scanf(%d,&p-english); printf(请输入数学成绩:n); scanf(%d,&p-math); printf(请输入计算机成绩:n); scanf(%d,&p-computer); (p-sum)=(p-chinese)+(p-computer)+(p-math)+(p-english);(p-ave)=(p-sum)/4;p-next=Null; r-next=p; r=r-next;/*/count +;/*/ void output(list *h) /输出函数 /*/if (h = NULL)printf(记录为空!);/*/list *p; printf(学号t姓名t性别t语文成绩t数学成绩t英语成绩t计算机成绩t平均分t总成绩tn); p=h-next; while (p!=NULL) printf(%dnt%st%st%dt%dt%dt%dt%5.1ft%5.1fn,p-num,p-name,p-sex,p-chinese,p-math,p-english,p-computer,p-ave,p-sum);p=p-next;void sortsum(list *head) /总成绩排序/ struct node temp;/ const int n=20;/ int i,j,k;/ printf(按照总成绩排序:t);/ for(i=0;in;i+)/ / k=i;/ for(j=i+1;jn;j+)/ if(listj.sum 0)p=head;for(j=0; jnext-sum p-next-next-sum) temp = p-next ;p-next = p-next-next;temp-next = p-next-next;p-next-next = temp;p = p-next; i-; /*/void sortnum(list *head)int i=count, j, k;printf(按照学号排序:n);if (count=0 | count=1)return;list *p, *temp;while(i 0)p=head;for(j=0; jnext-num p-next-next-num) temp = p-next ;p-next = p-next-next;temp-next = p-next-next;p-next-next = temp;p = p-next; i-; /*/*int sortnum(node *list) /学号排序struct node temp;const int n=20;int i,j,k;printf(按照总成绩排序:t);for(i=0;in;i+)k=i;for(j=i+1;jn;j+)if(listj.numnext; printf(请输入要查找的学生学号:n); scanf(%d,&k); while (p & p-num!=k) p=p-next; if(p) printf(学号t姓名t性别t语文成绩t数学成绩t英语成绩t计算机成绩t平均成绩t总成绩n); printf(%dt%st%st%dt%dt%dt%d%5.1ft%5.1fn,p-num,p-name,p-sex,p-chinese,p-math,p-english,p-computer,p-ave,p-sum); else printf(目标没找到n);list *del (list *h) /删除函数 int k; / 要删除的学生学号 list *p,*q; q=h; p=h-next; printf(请输入待删除的学生学号:n); scanf(%d,&k); while (p & p-num!=k) q=p; p=p-next; if(p) q-next=p-next; free(p); count -; else printf(没有此学生的记录,无法删除!n); return (h);list *insert(list *h) /插入函数 list *p,*q,*r,*head; head=h; r=h; p=h-next; / 下面构造一个学生的信息 q=(list *)malloc(sizeof(list); printf(请输入待插入学生的学号:n); scanf(%d,&q-num); printf(请输入待插入学生性别:n); scanf(%s,&q-sex);printf(请输入待插入学生的姓名:n); scanf(%s,&q-name); printf(请输入待插入的语文成绩:n); scanf(%d,&q-chinese); printf(请输入待插入的英语成绩:n); scanf(%d,&q-english); printf(请输入待插入的数学成绩:n); scanf(%d,&q-math); printf(请输入待插入的计算机成绩:n); scanf(%d,&q-computer); (q-sum)=(q-chinese)+(q-computer)+(q-math)+(q-english);(q-ave)=(q-sum)/4;q-next=Null; / 找到链表的结尾结点 count -;while(p!=Null) r=p; p=p-next; / 将新结点插入表尾r-next=q; r=r-next; return (head);void main() /主函数 list *p; /*/p=(list *)malloc(sizeof(list);p-next=Null;/*/int k; / 控制循环的标志 while (1) printf( -n); printf( | 学生成绩管理系统 |n); printf( -n); printf( | 1. 登记成绩 |n); printf( | 2. 查询成绩 |n); printf( | 3. 插入成绩 |n); printf( | 4. 删除成绩 |n); printf( | 5. 按学号排序 |n);printf( | 6. 按总成绩排序 |n);printf( | 7. 输出所有学生成绩 |n); printf( | 8. 退出系统 |n); printf( -n); printf(请输入你的选择n); scanf(%d,&k); switch(k) case 1:/ p=input();/*/input(p);/*/break; case 2:find(p);break; case 3:p=insert(p);break; case 4:p=del(p);break; case 5:sortnum(p);output(p);break; case 6:sortsum(p); output(p);break; case 7:output(p);break; case 8:exit(0); default:printf(选择错误,重新开始n); 5实验总结 由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。在用的时候难免出现这样那样的错误。如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。解决的这个问题的办法是调整。一个系统的菜单和提示信息非常重要。如果没有这些用户根本不知道怎么用你设计的这个系统。在设计的调试过程中也无法顺利的完成调试工作。有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。回顾起此次课程设计,我感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识熟悉了,本次课程设计结束了,我们通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也使我们知道自己哪些方面做得还不够。这不仅是程序设计,更是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论