ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:82.62KB ,
资源ID:6600120      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6600120.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学生成绩管理系统计算机课程设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

学生成绩管理系统计算机课程设计.docx

1、学生成绩管理系统计算机课程设计通信工程学院课程设计报告2010.08.28一、实验题目:学生成绩管理系统二、系统功能:1学生基本情况录入。2允许对已经录入的数据进行显示。3允许进行数据的插入。4删除基本数据的相关信息。5基于姓名的查询。如:姓张的所有同学。6基于各种基本数据的统计计算。如:统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩)。列出90分以上(包括90)、80分以上(包括80)、70分以上(包括70)、60分以上(包括60)、不及格学生清单(学号、姓名、不及格的课程和成绩)。统计并

2、输出各门功课的平均成绩和总平均成绩。三、系统功能模块结构图学生成绩管理系统图1:学生成绩管理系统模块图四、数据结构设计及用法说明数据结构可参考下面定义typedefstructS1charno9;/*学号*/charname15;/*姓名*/charsex;/*性别*/intage;/*年龄*/intscore4;/*成绩*/floatsum;/*总分*/floataverage;/*平均分*/intorder;/*排名*/structS1*next;STUDENT;与创建文本菜单相关的函数:window、textbackground、clrscr、textcolor、cprintf、bios

3、key、gotoxy、gettext、puttext、putch。putch(0xc9); /*输出左上角边框*/putch(0xcd); /*输出水平线*/putch(0xbb); /*输出右上角边框*/putch(0xba); /*输出左垂直线*/putch(0xc8); /*输出左上角边框*/putch(0xbc); /*输出右下角边框*/1查找相关函数、编写数据结构、算法、代码等,8学时;(周一)2完成菜单以及插入、删除记录过程;(周二)菜单的样板模式为:1.Enterlist 输入记录2.Deletearecordfromlist 从表中删除记录3.printlist 显示链表中所有

4、记录4.Searchrecordonname 按照姓名查找记录5.Savethefile 将链表中记录保存到文件中6.Loadthefile 从文件中读入记录putethescore 计算所有学生的总分和均分8.insertrecordtolist 插入记录到表中9.Quit 退出3完成查找、显示记录。4完成保存数据到文件和从文件读数据的过程。5完成学生的总分和均分的计算。五、程序结构开始调用menu函数输入menuselect的值输入09中的一个数值,选择相应操作是输入是否为0?否判断键值,选择相应的操作结束退出输入9退出到主菜单图2:主程序流程图按键2输入要删除学生的学号或姓名是是否含有此

5、学生?否重新输入!删除信息结束图3:输入学生信息流程图按键1是info为空?否判断为输入记录输入学生相关信息结束图4:删除学生信息流程图按键3输入要显示学生的学号是是否为空?否显示该学生信息结束图5:显示学生信息流程图按键4输入学生学号是信息为空?否显示学生信息结束图6:查找学生信息流程图按键6是打不开文件?否申请空间结束退出图7:加载学生信息流程图按键7是信息为空?否指针后移否到表尾?是计算总成绩和平均成绩显示输出结 束图8:计算总分及平均分流程图六、各模块的功能及相关函数描述1数据结构链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。线形表的顺序存储结构的特点是逻辑关系上相邻的两个

6、元素物理位置上也相邻,因此可以随机存取表中任一元素。链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。链表的最大的优点是对表的添加、删除、查找、排序等操作比较方便,因此采用链表来存储学生相关信息。且对结点的定义如下:typedefstructS1charno9;/*学号*/charname15;/*姓名*/charsex;/*性别*/intage;/*年龄*/intscore4;/*成绩*/floatsum;/*总分*/floataverage;/*平均分*/intorder;/*排名*/structS1*next;STUDENT;2、menu主菜单与创建文本菜单相关的函数:win

7、dow、textbackground、clrscr、textcolor、cprintf、bioskey、gotoxy、gettext、puttext、putch。putch(0xc9);/*输出左上角边框*/putch(0xcd);/*输出水平线*/putch(0xbb);/*输出右上角边框*/putch(0xba);/*输出左垂直线*/putch(0xc8);/*输出左上角边框*/putch(0xbc);/*输出右下角边框*/3、main()主函数主函数采用模块化设计。首先在主程序中打印欢迎界面,声明一些必要变量,作一无限循环程序,循环体为一开关语句,该语句设置一个断点,其条件值是通过调用主

8、菜单函数得到的返回值,根据该值,调用相应的功能函数,同时设置一个断点,当返回值为一定条件时结束程序4、输入记录模块主要完成将数据存入单链表中的工作,可以从键盘逐个输入学生记录。学生记录由学生的基本信息和成绩信息字段构成。当从数据文件中读入记录时,他就是在以记录为单位存储的文件中,将记录逐条复制到单链表中。5、查询记录模块此模块主要完成在单链表中查找满足相关条件的学生记录,用户可以按照学生的学号和姓名进行查找,若找到该学生的记录,则返回指向该学生的指针。否则,返回一个值为NULL的空指针。6、更新记录模块此模块主要完成对学生的记录维护包括;对记录的修改、删除、插入等操作。一般来说,系统进行这些操

9、作之后,会将修改后的数据存下来。7、统计记录模块统计记录模块主要完成对学生各门功课总分及平均分的统计。8、输出记录模块此模块主要完成对学生记录的存储和将单链表中的学生记录信息以表格的形式在屏幕上打印出来。9、load()从文件中加载记录按照文件读写要求,先定义一个指向文件的指针,输入要读入数据的磁盘文件名,然后确定文件的打开方式。如果文件打不开,则退出函数,否则选择一种读文件方式,从文件头开始,将记录读入内存,直到文件尾。文件打开方式和读入方式的确定要依据输出文件的打开方式和写入方式,以名数据读入错误。如果输出文件是二进制文件,块写操作,读入也应设置为二进制打开方式,块读取方式。每读入一条记录

10、,都要做好指针链接关系,本函数将新结点链接到当前链表的尾部,链表的顺序和文件保存的顺序一10、delete()删除结点删除指定学号的学生记录。输入要删除的结点的学号,根据学号顺序查找结点,如果没找到,则输出没有找到的信息;否则显示找到的结点信息。如果删除的是头结点,则修改头指针,将该结点的前趋指针指向其后继结点,然后释放该结。11、insert()插入结点在指定结点前面插入新结点,申请空间得到指针info,输入新结点信息,存放info中,设链表头指针为h,p为指定结点的指针,q为p的前趋指针。从头结点开始循环移动指针p查找指定结点12、print()显示所有记录采用顺序访问的方法显示和查找记录

11、,定义一个指向结点的临时变量p,初值为单链表的头指针,输出指针所记录的数据后,将指针后移一个记录,直到p指针值为空,则所有记录输出完毕。13、search()查找结点按照姓、姓名、或者姓名的前几个字母来查找记录。从头结点开始顺序查找,当输入一个关键字符串后,用strlen()函数得到该串的长度len,在表中取学生姓名的前len个字母与所输入的字符串相比较,没有相同记录显示没有,遇到第一个匹配的记录则显示此记录,继续查找链表,仍有相同记录则继续显示,直到尾结点结束。七、实验结果(1) 开始界面:(2) 输入界面:(3) 显示界面:(4) 求平均分界面:(5) 查找界面:八、体会本次课程设计中,我

12、在前两天熟复习了上学期学过的C语言,使用结构化分析方法对课题进行分析,将系统分为几大模块,针对各个模块进行编程,写代码。期间,主要参考C语言课程设计案例精编清华大学出版社。实验的部分源程序都来源于此,其他程序由自己独立设计完成。编程期间,遇到了不少麻烦,最终也不能完全的实现老师所要求的全部功能,目前该程序可以完成对信息的输入输出,修改删除及成绩总计的求平均分等。在使用TurboC时,总会有改存储路径的麻烦,最好的办法就是将软件装到E盘,其中由于打字不认真造成的错误在所难免,而一些错误却会使整个程序崩溃:无论如何修改也不能运行程序。经过两天的复习及编程,到周三的时候已经可以实现主菜单的显示,以及

13、输入学生信息,并能显示记录。周四的时候可以实现对学生信息的显示查找,并努力实现对数据的保存及读取数据。直到最后对成绩单的统计和求平均值时,我总结了编程过程中存在的主要问题:首先,对一些的基础知识运用不熟练,主要是关于文件、指针、链表等的概念、初始化、赋值的基础知识。第二,对系统整体规划不清楚,模块之间联系考虑不周全。第三,个别功能不能实现,如成绩排序,备份,追加。总之,通过本次的课程设计,我了解了有关程序设计的基本流程及基本思路,对以后的编程有很大的帮助,尽管自己独立完成这项设计可能性很小,但在指导书的帮助下,我还是比较系统的了解到整个程序设计、运行的全过程。尽管自己的编程能力还很有限,但我也

14、希望能常常有这样的锻炼机会。九、附录:源程序#includestdio.h#includestdlib.h#includectype.h#includealloc.h#includestring.h#includeconio.h#includemem.h#defineN4typedefstructz1charno9;charname15;intscoreN;charsex2;intage;floatsum;floataverage;intorder;structz1*next;STUDENT;STUDENT*init();STUDENT*create();STUDENT*delete(STUD

15、ENT*h);voidprint(STUDENT*h);voidsearch(STUDENT*h);voidsave(STUDENT*h);STUDENT*load();voidcomputer(STUDENT*h);STUDENT*insert(STUDENT*h);voidgrade();voidcopy();voidappend();STUDENT*sort(STUDENT*h);intmenu_select();intsubmenu();voidgrade00(STUDENT*h);main()inti;STUDENT*head;head=init();clrscr();printf(

16、nn);for(;)switch(menu_select()case1:head=create();break;case2:head=delete(head);break;case3:print(head);break;case4:search(head);break;case5:save(head);break;case6:head=load();break;case7:computer(head);break;case8:head=insert(head);break;case9:exit(0);menu_select()char*menu=*MENU*,1.Enterlist,2.Del

17、etearecordfromlist,3.printlist,4.searchrecordonlist,5.savethefile,6.Loadthefile,puethefile,8.insertrecordtolist,9.quit、;、chars3;intc,i;gotoxy(1,25);、getch();clrscr();gotoxy(1,1);textcolor(YELLOW);textbackground(BLUE);gotoxy(19,2);putch(0xc9);for(i=1;i44;i+)putch(0xcd);putch(0xbb);for(i=3;i20;i+)、got

18、oxy(19,i);putch(0xba);gotoxy(63,i);putch(0xba); /*输出右垂直线*/gotoxy(19,20);putch(0xc8);for(i=1;i44;i+)putch(0xcd);putch(0xbc);window(20,3,62,19);clrscr(); /*清屏*/for(i=0;i15;i+)、gotoxy(10,i+1);cprintf(%s,menui);、textbackground(BLACK);window(1,1,80,25);gotoxy(10,21);do、printf(ntt Enteryourchoice(09)tocon

19、tinue:);scanf(%s,s);c=atoi(s);while(c13); /*选择项不在012之间重输*/returnc; 、STUDENT*init()returnNULL;STUDENT*create()inti;ints;STUDENT*h=NULL,*info; clrscr();for(;)info=(STUDENT*)malloc(sizeof(STUDENT);if(!info)printf(oOutofmemory); returnNULL; inputs(nnEntertheNum.as52081107.n Type0toEndEnter:,info-no,9);i

20、f(info-no0=0)break;inputs(Entername:,info-name,15);inputs(EnterthesexM(ale)orF(emale):,info-sex,2);doprintf(Entertheageofthestudent:);scanf(%d,&info-age);if(info-age30|info-ageageage30);printf(nnPleaseinput%dscoresn,N); printf(Theorderis:n);printf(score1.Englishnscore2.MATHSn);printf(score3.CLANGUAG

21、Enscore4.PHILOSOPHYn);s=0;for(i=0;iscorei); if(info-scorei100|info-scoreiscorei100|info-scoreiscorei; info-sum=s; info-average=(float)s/N;/*求出平均值*/info-order=0; info-next=h;h=info; return(h); /inputs(char*prompt,char*s,intcount)charp255;doprintf(prompt);/*显示提示信息*/scanf(%s,p);/*输入字符串*/if(strlen(p)cou

22、nt)printf(ntoolong!n); while(strlen(p)count);strcpy(s,p);voidprint(STUDENT*h)inti=0;STUDENT*p; clrscr();p=h;printf(nnn*STUDENT*n);printf(|rec| No | name |sex|age|sc1|sc2|sc3|sc4| sum|ave|n);printf(|-|-|-|-|-|-|-|-|-|-|-|n);while(p!=NULL) i+;printf(|%-3d|%-10s|%-15s|%1s|%3d|%3d|%3d|%3d|%3d|%4.2f|%4.2

23、f|%3d|n,i,p-no,p-name,p-sex,p-age,p-score0,p-score1,p-score2,p-score3,p-sum,p-average,p-order);p=p-next;printf(*end*n);STUDENT*delete(STUDENT*h)STUDENT*p,*q; chars9;clrscr();printf(PleaseentertheNo.thatyouwanttodelete:n);scanf(%s,s); q=p=h;while(strcmp(p-no,s)&p!=NULL) q=p; p=p-next; if(p=NULL) prin

24、tf(nListNo.%sstudentn,s);else printf(nnn*STUDENT*n);printf(| No | name |sex|age|sc1|sc2|sc3|sc4| sum|ave|n);printf(|-|-|-|-|-|-|-|-|-|-|n);printf(|%-10s|%-15s|%1s|%3d|%3d|%3d|%3d|%3d|%4.2f|%4.2f|%3d|n,p-no,p-name,p-sex,p-age,p-score0,p-score1,p-score2,p-score3,p-sum,p-average,p-order);printf(*end*n)

25、;getch(); if(p=h) h=p-next; elseq-next=p-next; free(p); printf(n*HavedeletedNo%sstudent*n,s);printf(*Dontforgettosave!*n); return(h); /*返回头指针*/voidsearch(STUDENT*h)STUDENT*p; chars15; intlen;clrscr(); printf(nnnPleaseenternameforsearchingn);scanf(%s,s); len=strlen(s);p=h; /*将头指针赋给p*/if(p=NULL) /*如果指针为空*/printf(nListdoesnotexist!n); while(p!=NULL) if(strncmp(p-name,s,len) p=p-n

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1