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

下载本文档

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

文档简介

1、课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 学生成绩管理系统已知技术参数和设计要求:现有学生成绩信息文件1(cj1.txt),内容如下姓名 学号 语文 数学 英语 张明明 01 67 78 82李成友 02 78 91 88张辉灿 03 68 82 56王露 04 56 45 77陈东明 05 67 38 47. . . . 学生成绩信息文件2(cj2.txt),内容如下:姓名 学号 语文 数学 英语 陈果 31 57 68 82李华明 32 88 90 68张明东 33 48 42 56李明国 34 50 45 87陈道亮 35 47 58 77. . . . 试

2、编写一管理系统, 其基本功能要求:实现对两个文件数据进行合并,生成新文件cj3.txt抽取出三科成绩中有补考的学生并保存在一个新文件cj4.txt对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)要求使用结构体,链或数组等实现上述要求.采用多种方法且算法正确者,可适当加分.要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)数据结构课程设计说明书一、需求分析 1、问题描述 现如今,学校人数的暴涨,对学生基本信息的录入,保存量越来越大,为了简化对工作人员的操作,故设

3、计一个程序来完成对学生基本信息的录入,保存,编辑等简单操作。2、基本任务(1) 对学生信息表cj1和cj2进行合并;(2) 把合并的信息生成cj3;(3) 把cj3中有补考的学生信息生成cj4;(4) 对合并后的文件3.txt中的数据按总分降序排序;(5) 输入一个学生姓名后,能查找到此学生的信息并输出结果。二、概要设计为了完成需求分析的基本任务,主要从以下3个方面进行设计:1、 主界面设计为了实现学生成绩管理系统的各项功能,设计了一个含有多个菜单项的主控菜单模块以链接系统的各项功能,以方便用户使用系统。系统主控菜单运行界面如图1所示:图1 学生成绩管理系统主菜单2、数据结构设计系统采用链表的

4、顺序存储结构。一个字符数组存储学生姓名。四个整型数存储学生学号语文成绩数学成绩英语成绩。和一个结构体数组。3、 系统功能设计(1)从c盘下读取cj1.txt和cj2.txt中的学生成绩信息。程序会给出提示,因为如果在c盘下不存在这两个文件那么程序将不能继续会自动退出。(2)程序给出选择是否将从c盘读取的学生信息保存到c盘下cj3.txt中,如果您选择是,那么程序将执行。如果在c盘存在一个名为cj3.txt的文件,那么程序将用读取的信息将其覆盖。如果不存在,则系统会自动生成一个名为cj3.txt的文件将数据放入其中。(3)程序会给出选择是否将cj3.txt中有补考的学生信息生成一个cj4.txt

5、的文件。如果您选择是。那么程序将会执行。对于在c盘是否有名为cj4.txt的文件的处理和上面一样。(4)程序会给出按总分大小排序的选项。程序设计了两种排序方法直接插入法排序和冒泡排序。 (5)最后程序设计了一个循环,实现根据学生姓名查找学生成绩信息。如果你所输入的学生姓名不存在,程序将会输出“查无此人”的提示符并提示是否继续查找。你可根据需要选择。如果选择否,程序退出。三、模块设计【主程序模块】:void main() fp=fopen(c:cj1.txt,rt);/从文本文件cj1.txt中读取数据传向cj3.txtfp=fopen(c:cj2.txt,rt); /从文本文件cj2.txt中

6、读取数据接到cj3.txt的后面fp=fopen(c:cj3.txt,rt);/从合成后的cj3.txt读取数据,生成链表fp=fopen(c:cj4.txt,wt);/把三科成绩中有补考的学生信息放入cj4.txtfor(i=1;i10;i+)/直接插入法排序for(i=0;inext=NULL;fp=fopen(c:cj3.txt,rt);/从合成后的cj3.txt读取数据,生成链表for(i=0;iname,7,fp);for(i=0;ino=x;for(i=0;iyw=x;for(i=0;isx=x;for(i=0;iyy=x;s-next=p-next;p-next=s;ch=fge

7、tc(fp);fclose(fp);(4)把有补考的同学存入cj4.txt中。在链表中扫面,如果有一科成绩不及格怎存放到cj4.txt。实现方法和前面相似。主要代码:fp=fopen(c:cj4.txt,wt);/把三科成绩中有补考的学生信息放入cj4.txtfputs(姓 名 学号 语文 数学 英语,fp);fclose(fp);fp=fopen(c:cj4.txt,a);s=p-next;while(s!=NULL)if(s-ywsxyyname,fp);for(i=0;ino/10+48;fputc(ch,fp);ch=s-no-(s-no/10)*10+48;fputc(ch,fp);

8、for(i=0;iyw/10+48;fputc(ch,fp);ch=s-yw-(s-yw/10)*10+48;fputc(ch,fp);for(i=0;isx/10+48;fputc(ch,fp);ch=s-sx-(s-sx/10)*10+48;fputc(ch,fp);for(i=0;iyy/10+48;fputc(ch,fp);ch=s-yy-(s-yy/10)*10+48;fputc(ch,fp);s=s-next;elses=s-next;fclose(fp);(5)用一个结构体数组存放学生信息,然后用直接插入法和冒泡法进行总分降序排列,先用直接插入法排好序后打乱,再用冒泡法排序,这两

9、个过程比较简单,就不多作介绍。(6)最后是查找,分别在数组和链表中查找,这个过程也比较简单,但要注意的是在输入要查找的人的姓名时如果人名为两个字则要在中间加两个空格。这样才能成功查找到。五、调试分析(1)编译,调试过后,运行程序。 (2)输入选择,进行两表的合成和生成cj4.txt。(3)合成成功后,选择对总分进行直接插入法排序。(4)打乱排序,再用冒泡法排序。(5)输入姓名进行查找六、用户手册1、本程序的特点是我们不在需要从键盘上输入数据,而是直接从已有文件中读取数据,这在数据量很大时或者需要反复使用同一个数据时有很大的优势。2、要程序运行的关键是在c盘下存在cj1.txt和cj2.txt两

10、个文件,用户在使用是需得注意。3、本人在写程序时重心主要放在对数据的处理上,所以在界面设计方面还做得不好,请多多包涵。4、程序操作很简单,只要按提示操作即可完成要求的内容。七、参考文献1、数据结构教程(第三版) 李春葆 尹为民 等编著 清华大学出版社2、C语言程序设计(第三版) 何钦铭 颜 晖 主编 高等教育出版社3、数据结构教程上机实验指导 李春葆 编著 清华大学出版社八、程序设计总结通过两个星期的折腾,总算把课程设计给完成了,这是一个坚苦而又漫长的过程。是啊,读了那么多年的书,课程设计可是第一次。看着劳动成果,很欣慰!虽然这不是我一个人做的,是大家的共同努力得来的。 “也许完成不了!”两个

11、星期前我们这样说,“完成他没问题!”一个星期前我们这样说,现在我们可以说:“哈哈,完成啦”!刚开始,可以说是没有头绪,于是就去图书馆找资料,找到了一些关于画图方面的,可是这点小进展远远不够,这只是一个小小的开始。下一步是上网查,找到了些与我们题目相似的,那时我们每个人都很高兴,可是那还不是我们要的,于是又上网查到了些有关的函数等等,终于在我们大家的努力下,完成了这个程序。虽然对着电脑做程序,有点累有点热,可是当看到劳动成果时,真是别有一番滋味在心头啊!世上无难事,只怕有心人,的确如此。做完这个程序最大的收获就是感受到了集体的力量,当然个人的智慧也是很重要的哦!做完这个课程设计,我们的自信一下子

12、提高了,我们也会写程序了;尽管对于有些人这种程序会很简单,可对我们C语言初学者来说,已经很不容易了。这次体验为以后的学习计算机的我们增强了信心。享受劳动成果的滋味实在很美妙啊!九、程序源代码附录#include#includevoid main()typedef struct LNodechar name6;int no;int yw;int sx;int yy;struct LNode *next;LinkList;struct NameNoint no;int yw;int sx;int total;char name6;st10;FILE *fp,*fp1;char ch,sname6;

13、int x,i,j;NameNo tmp;LinkList *p,*s;printf(n);printf(-);printf(学生成绩管理系统);printf(-);printf(nn);printf(在您的C盘根目录下是否有cj1.txt和cj2.txt文件?如果有请输入,);printf(否则输入;如果没有,那么程序将终止!or 0?);scanf(%d,&i);if(i=0) return;printf(nn);printf(对cj1.txt和cj2.txt进行合成请按);scanf(%d,&i);if(i!=1) return;printf(正在把cj1.txt和cj2.txt中的数据

14、进行合并n);printf(.n.n.n.n.n.n);if(fp=fopen(c:cj1.txt,rt)=NULL) /从文本文件cj1.txt中读取数据传向cj3.txtprintf(无cj1.txt文本文件,程序结束。n);return;fp1=fopen(c:cj3.txt,wt);ch=fgetc(fp);while(ch!=EOF)fputc(ch,fp1);ch=fgetc(fp);fclose(fp1);fclose(fp);if(fp=fopen(c:cj2.txt,rt)=NULL) /从文本文件cj2.txt中读取数据接到cj3.txt的后面printf(无cj12.tx

15、t文本文件,程序结束。n);return;fp1=fopen(c:cj3.txt,a);for(i=0;inext=NULL;fp=fopen(c:cj3.txt,rt);/从合成后的cj3.txt读取数据,生成链表for(i=0;iname,7,fp);for(i=0;ino=x;for(i=0;iyw=x;for(i=0;isx=x;for(i=0;iyy=x;s-next=p-next;p-next=s;ch=fgetc(fp);fclose(fp);printf(对cj3.txt中有不及格的学生信息生成cj4.txt请按);scanf(%d,&i);if(i!=1) return;pr

16、intf(正在生成cj4.txtn);printf(.n.n.n.n.n.n);if(i=1)fp=fopen(c:cj4.txt,wt);/把三科成绩中有补考的学生信息放入cj4.txtfputs(姓 名 学号 语文 数学 英语,fp);fclose(fp);fp=fopen(c:cj4.txt,a);s=p-next;while(s!=NULL)if(s-ywsxyyname,fp);for(i=0;ino/10+48;fputc(ch,fp);ch=s-no-(s-no/10)*10+48;fputc(ch,fp);for(i=0;iyw/10+48;fputc(ch,fp);ch=s-

17、yw-(s-yw/10)*10+48;fputc(ch,fp);for(i=0;isx/10+48;fputc(ch,fp);ch=s-sx-(s-sx/10)*10+48;fputc(ch,fp);for(i=0;iyy/10+48;fputc(ch,fp);ch=s-yy-(s-yy/10)*10+48;fputc(ch,fp);s=s-next;elses=s-next;fclose(fp);printf(生成成功!现在你可以在C盘根目录下看到一个cj4.txt文件);printf(nn);s=p-next;/将学生信息从链表复制到数组中for(i=0;ino;sti.yw=s-yw;s

18、ti.sx=s-sx;sti.total=s-yw+s-sx+s-yy;for(j=0;jnamej;s=s-next;printf(用直接插入法排序请按:);scanf(%d,&i);printf(nn);if(i=1)for(i=1;i=0&tmp.totalstj.total)stj+1=stj;j-;stj+1=tmp;printf( 直接插入法排序后总分从大到小排序为n);printf(nn);printf(姓 名 学号 语文 数学 英语 总分n);for(i=0;i10;i+)if(sti.nonext;/将排好序的数组打乱,从新用冒泡法排序for(i=0;ino;sti.yw=s

19、-yw;sti.sx=s-sx;sti.total=s-yw+s-sx+s-yy;for(j=0;jnamej;s=s-next;printf(用冒泡法排序请按:);scanf(%d,&i);printf(nn);if(i=1)for(i=0;ii;j-)if(stj.totalstj-1.total)tmp=stj; stj=stj-1; stj-1=tmp;printf( 冒泡法排序后总分从大到小排序为n);printf(nn);printf(姓 名 学号 语文 数学 英语 总分n);for(i=0;i10;i+)if(sti.no10)printf(%s ,);printf(%d,0);printf(%d ,sti.no);printf(%d ,sti.yw);printf(%d ,sti.sx);printf(%d ,sti.total-sti.yw-sti.sx);printf(%dn,sti.total);printf(n);else printf(%s ,); printf(%d ,sti.no); printf(%d ,sti.yw);

温馨提示

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

评论

0/150

提交评论