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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

学生成绩管理系统 毕业课程设计报告.docx

1、学生成绩管理系统 毕业课程设计报告(此文档为word格式,下载后您可任意编辑修改!)中南大学C语言程序设计课程设计报告课题名称:学生成绩管理系统专业电气信息学生姓名舒畅班级0914学号指导教师穆帅完成日期2010年7月10日信息科学与工程学院1 课程设计的目的 12 设计内容与要求 13 主要技术指标及特点 23.1 登录界面显示 23.2 登记学生资料 33.3 保存学生资料 43.4 删除学生资料 43.5 修改学生资料 63.6 查询学生资料 73.6 统计学生资料 73.8 对学生资料进行排序 93.9 程序主要代码 104 设计小结 31成绩管理系统1 课程设计的目的1加深对C语言程

2、序设计课程知识的理解,掌握C语言应用程序的开发方法和步骤;2进一步掌握和利用C语言进行程设计的能力;3进一步理解和运用结构化程序设计的思想和方法;4初步掌握开发一个小型实用系统的基本方法;5学会调试一个较长程序的基本方法;6学会利用流程图或N-S图表示算法;7掌握书写程设计开发文档的能力(书写课程设计报告)。2 设计内容与要求设计内容:成绩管理系统现有学生成绩信息,内容如下:姓名 学号 C 数学 英语 shuchang 12 99 98 99jiutian 32 87 68 87changzi 33 98 89 99jiutia 13 7 43 45设计要求: 封面(参见任务书最后一页) 系统

3、描述:分析和描述系统的基本要求和内容; 功能模块结构:包括如何划分功能模块,各功能模块之间的结构图,以及各模块的功能描述; 数据结构设计:设计数据结构以满足系统的功能要求,并加以注释说明; 主要模块的算法说明:即实现该模块的思路; 运行结果:包括典型的界面、输入和输出数据等; 总结:包括C语言程序设计实践中遇到的问题,解决问题的过程及体会、收获、对程序开发的认识与思考等。 附录:包括主要程序清单,要有适当的注释,使程序容易阅读。3 主要技术指标及特点程序流程图如下:3.1 登录界面显示此登录界面是预先设定好作为菜单来显示的,在主函数中以menu()来实现的,在函数中,是通过switchcase

4、来实现选择功能的,用户可以通过需要进行选择,方便了用户的使用,非常人性化。3.2 登记学生资料当系统中没有保存学生信息时,就会提示没有学生记录!也就是说不能从文件中导出,这时就需要用户进行学生资料的导入,当输入的学号已经存在时,系统会提示用户重新输入一个未被占用的学号信息,否则就重新分配内存空间。3.3 保存学生资料该操作是将用户输入的学生信息进行保存,用文件的方法进行调试,当用户输入对象的个数超过0时,显示保存成功,否则提示,系统连接为空。3.4 删除学生资料这里又是通过switchcase函数的调用,让用户进行选择,共有两种方法:1.按照学号 2.按照姓名,操作完成后,系统会自动提示,该学

5、生已经成功删除,当再次显示的时候,函数中的链表就不再指向该学号,从而起到删除的作用。删除完成后,再次保存一下学生资料,不然系统仍然默认为原始人数。3.5 修改学生资料通过选择到达修改界面:此时将呈现出现有的学生资料,按照要求将新的信息输入其中,再保存资料,如果输入的学号系统中未显示,那么系统则提示没有资料可以修改。这个为修改完的图片3.6 查询学生资料按照选择,则会呈现出用户需要查找的所有信息,每次呈现出来的时候都要用之前定义的printheader()函数,这个很好地将数据按照格式化的形式显现出来。此为按照学号查找的例子,按照姓名查找是同样道理。3.6 统计学生资料(自加功能)统计学生资料主

6、要还是用的switchcase函数,通过选择,用printheader(),printdata(r),printf(END)等函数用表格的形式将符合条件的学生信息全部显示出来,不过唯一不足的就是所有的学生信息没有能够连贯起来,每个学生信息前面都有表头,没处理好。3.8 对学生资料进行排序该图显示的是按照语文成绩排序完的结果,用链表将数据进行一个接一个的比较,按照降序将学生信息排列下来,最后提示排序已经完成,并将所有结果按照用户要求显示出来。3.9 程序主要代码 主函数#include stdio.- n#define HEADER2 | Number | Name |C|Math|Englis

7、h| Total | Average | n#define HEADER3 |-|-|-|-|-|#define FORMAT | %-10s |%-15s|%4d|%4d|%4d| %4d | %.2f |n#define DATA p-data.num,p-data.name,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.total,p-data.ave#define END - nint shoudsave=0; * *struct studentchar num10;* Number *char name20;char sex4;in

8、t cgrade;int mgrade;int egrade;int total;float ave;char neartime10;* 最近更新时间 *;typedef struct nodestruct student data;struct node *next;Node,*Link;菜单函数void menu()system(cls); *调用DOS命令,清屏.与clrscr()功能相同*cprintf(n);printf(Students performance management systemnn);printf(Menun);printf( *1 input 2 delete

9、*n);printf( *3 search 4 modify *n);printf( *5 insert 6 count *n);printf( *7 sort 8 save *n); printf( *9 dispaly 0 exit *n);printf(n);*cprintf()送格式化输出至文本窗口屏幕中*void printheader() *格式化输出表头*printf(HEADER1);printf(HEADER2);printf(HEADER3);void printdata(Node *pp) *格式化输出表中数据*Node* p;p=pp;printf(FORMAT,DAT

10、A);void Wrong()printf(n=error!n);void Nofind()printf(n=No record now!Please press Entern);void Disp(Link l) *显示单链表l中存储的学生记录,内容为student结构中定义的内容*Node *p;p=l-next; *l存储的是单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的后继结点才有学生信息*if(!p) *p=NULL,NUll在stdlib中定义为0*printf(n=No record now!Please press Entern);getchar();return

11、;printf(nn);printheader(); *输出表格头部*while(p) *逐条输出链表中存储的学生信息*printdata(p);p=p-next; *移动直下一个结点*printf(HEADER3);getchar();*作用:用于定位链表中符合要求的节点,并返回指向该节点的指针参数:findmess保存要查找的具体内容; nameornum保存按什么查找; 在单链表l中查找;*Node* Locate(Link l,char findmess,char nameornum) * 该函数用于定位连表中符合要求的接点,并返回该指针 *Node *r;if(strcmp(name

12、ornum,num)=0) * 按Number查询 *r=l-next;while(r!=NULL)if(strcmp(r-data.num,findmess)=0)return r;r=r-next;else if(strcmp(nameornum,name)=0) * 按Name查询 *r=l-next;while(r!=NULL)if(strcmp(r-data.name,findmess)=0)return r;r=r-next;return 0;*增加学生记录*void Add(Link l)Node *p,*r,*s; *实现添加操作的临时的结构体指针变量*char ch,flag

13、=0,num10;r=l;s=l-next;system(cls);Disp(l); *先打印出已有的学生信息*while(r-next!=NULL)r=r-next; *将指针移至于链表最末尾,准备添加记录*while(1) *一次可输入多条记录,直至输入Number为0的记录结点添加操作*while(1) *输入Number,保证该Number没有被使用,若输入Number为0,则退出添加记录操作*printf(please input the Number(pressoto upper level):);scanf(%s,num);flag=0;if(strcmp(num,0)=0) *

14、输入为0,则退出添加操作,返回主界面* return;s=l-next; while(s) *查询该Number是否已经存在,若存在则要求重新输入一个未被占用的Number* if(strcmp(s-data.num,num)=0) flag=1; break; s=s-next; if(flag=1) *提示用户是否重新输入* getchar(); printf(=Number %s existed already!Please press Enter.input again?(yn):,num); scanf(%c,&ch); if(ch=y|ch=Y) continue; else re

15、turn; else break;p=(Node *)malloc(sizeof(Node); *申请内存空间*if(!p) printf(n Allocate memory failure ); *如没有申请到,打印提示信息* return ; *返回主界面* strcpy(p-data.num,num); *将字符串num拷贝到p-data.num中*printf(please input the Name:);scanf(%s,p-data.name);getchar();printf(please input the score of C:);scanf(%d,&p-data.cgra

16、de);getchar();printf(please input the score of Math:);scanf(%d,&p-data.mgrade);getchar();printf(please input the score of English:);scanf(%d,&p-data.egrade);p-data.total=p-data.egrade+p-data.cgrade+p-data.mgrade;p-data.ave=p-data.total 3;getchar();* 信息输入已经完成 *p-next=NULL;r-next=p;r=p;shoudsave=1;查询函

17、数void Qur(Link l) *按Number或Name,查询学生记录*int sel; *1:按Number查,2:按Name查,其他:返回主界面(菜单)*char findmess20; *保存用户输入的查询内容*Node *p;if(!l-next)*若链表为空*system(cls);printf(n=No record now!Please press Entern);return;system(cls);printf(n=1Search by Numbern=2Search by Namen);printf( select1,2:);scanf(%d,&sel);if(sel

18、=1)* Number *printf(please input the Number you want to search:);scanf(%s,findmess);p=Locate(l,findmess,num);*在l中查找Number为searchinput值的节点,并返回节点的指针*if(p)*若p!=NULL* printheader(); printdata(p); printf(END); printf(press any key to back); getchar();elseNofind();getchar();else if(sel=2) * Name *printf(p

19、lease input the Name you want to search:);scanf(%s,findmess);p=Locate(l,findmess,name);if(p) printheader(); printdata(p); printf(END); printf(press any key to back); getchar();else Nofind(); getchar();elseWrong();删除函数*删除学生记录:先找到保存该学生记录的节点,然后删除该节点*void Del(Link l) * 删除 *int sel;Node *p,*r;char findme

20、ss20;if(!l-next)printf(n=no record!n);getchar();return;printf(n=1Delete by Numbern=2Delete by Namen);scanf(%d,&sel);if(sel=1)printf(please input the Number you want to delete:);scanf(%s,findmess);p=Locate(l,findmess,num);if(p)r=l;while(r-next!=p)r=r-next;r-next=p-next;free(p);printf(n=Delete success

21、ful!n);getchar();shoudsave=1;elseNofind();else if(sel=2)printf(please input the Name you want to delete:);scanf(%s,findmess);p=Locate(l,findmess,name);if(p)r=l;while(r-next!=p)r=r-next;r-next=p-next;free(p);printf(n=Delete successful!n);getchar();shoudsave=1;elseNofind();getchar();elseWrong();getcha

22、r();修改函数*修改学生记录。先按输入的Number查询到该记录,然后提示用户修改Number之外的值,Number不能修改*void Modify(Link l)Node *p;char findmess20;if(!l-next) system(cls);printf(n=no record!n);getchar();return;system(cls);printf(modify the information);Disp(l);printf(please input the Number you want to modify:);scanf(%s,findmess);p=Locate

23、(l,findmess,num);if(p)printf(please input the new Number(which was %s):,p-data.num);scanf(%s,p-data.num);printf(please input the new Name(which was %s):,p-data.name);scanf(%s,p-data.name);getchar();printf(please input the new C score(which was %d):,p-data.cgrade);scanf(%d,&p-data.cgrade);getchar();p

24、rintf(please input the new Math score(which was%d):,p-data.mgrade);scanf(%d,&p-data.mgrade);getchar();printf(please input the new English score(which was%d):,p-data.egrade);scanf(%d,&p-data.egrade);p-data.total=p-data.egrade+p-data.cgrade+p-data.mgrade;p-data.ave=p-data.total3;printf(n=modify succes

25、sful!n);shoudsave=1;getchar();elseNofind();getchar();插入函数*插入记录:按Number查询到要插入的节点的位置,然后在该Number之后插入一个新节点。*void Insert(Link l) Link p,v,newinfo; *p指向插入位置,newinfo指新插入记录* char ch,num10,s10; *s保存插入点位置之前的Number,num保存输入的新记录的Number* int flag=0; v=l-next; system(cls); Disp(l); while(1) printf(please input the

26、 Number you want to insert:n); scanf(%s,num); flag=0;v=l-next; while(v) *查询该Number是否存在,flag=1表示该Number存在* if(strcmp(v-data.num,s)=0) flag=1;break; v=v-next; if(flag=1) break; *若Number存在,则进行插入之前的新记录的输入操作* else getchar(); printf(n=Number %s no record,try again?(yn):,s); scanf(%c,&ch); if(ch=y|ch=Y) co

27、ntinue; else return; *以下新记录的输入操作与Add()相同*printf(please input the Number you want yo add:n);scanf(%s,num);v=l-next;while(v) if(strcmp(v-data.num,num)=0) printf(=sorry,new Number:%s!existing alreadyn,num); printheader(); printdata(v); printf(n); getchar(); return; v=v-next;newinfo=(Node *)malloc(sizeof(Node);if(!newinfo) printf(n Failed to allocate resources ); *如没有申请到,打印提示信息* return ; *返回主界面*

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2