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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C语言毕业课程设计报告成绩管理系统.docx

1、C语言毕业课程设计报告成绩管理系统(此文档为word格式,下载后您可任意编辑修改!)机电工程学院 中 南 大 学计算机程序设计基础C+ 课 程 设 计题 目 学生成绩管理系统 成员姓名 姚东盼 学号班级:机械1309成员姓名 吴子珍 学号班级:机械1309成员姓名 李文林 学号班级:机械1309指导教师 杨放琼 学 院 机 电 工 程 学 院 日 期 2014 年 7 月 2 日 目录:第一章 设计任务及任务分配1. 课题及功能组成12. 小组成员及任务分配13. 进度安排14. 小组成员设计内容简介1第二章 需求分析1. 程序设计要求22. 程序实现形式23. 程序函数原型24. 程序流程图

2、2第三章 程序设计1. 概要设计42. 具体程序设计43. 调试及错误分析22第四章 程序使用说明及运行实例1. 程序演示232. 注意事项26第五章 课程设计心得1.程序设计过程272.心得体会27(附录)源代码(全)28第一章 设计任务及任务分配1. 课题及功能组成我们选择的是学生成绩管理系统,面向的是老师统计学生的成绩。根据设计任务要求,我们主要划分了6个主要的功能函数:查找信息函数、修改信息函数、插入或新建文件函数、删除信息函数、实现统计功能的函数、查看信息函数。为了方便对多个成绩单文件进行操作,我们还额外加了一个可以选择文件的功能。2. 小组成员及任务分配组长:姚东盼 总体设计。设计

3、流程、模块函数原型接口设计,模块组装调试以及查看(载入)函数,删除和统计函数的编写,撰写报告。组员:李文林 吴子珍 负责模块程序设计,并独立调试自己的程序。其中吴子珍负责查找函数,插入函数的编写;李文林负责修改信息函数以及开始函数的编写。3.进度安排第一周:查找资料,了解要实现的功能,完成分工,学习补充文件操作的知识,以及链表的知识。第二周:认真完成各自的任务,组建调试,纠错分析,撰写实践报告。4.小组成员设计内容简介姚东盼:1 建立学生链表的数据结构2 设计总体流程及具体实现方法3 void zairu()函数,此函数将文件信息提取到内存,以链表的形式存储。4 void tongji( )函

4、数,此函数实现统计功能:排序、计算及格率、平均分。5 void shanchu()函数,此函数通过将文件信息调入内存,然后删除文件内容,找到要删除的记录,除要删除的记录以外都重新写入文件。从而实现删除功能。 吴子珍1 void chazhao()函数,此函数通过比较要查找的数据成员与内存中链表的是否相似选择输出。2 void charu()函数,此函数实现添加记录和新建文件的功能。3 void chose()函数,选择功能函数。李文林 void start()函数,开始菜单函数。void xiugai()函数,此函数通过将文件信息调入内存,然后将文件内容删除,将内存中链表的内容修改后,进行二次

5、重写。第二章 需求分析1. 程序设计要求基本要求:(1)所有记录保存在一个数据文件中;(2)具备记录添加功能;(3)具备记录删除功能;(4)具备记录修改功能;(5)具备记录查询功能;(6)计算统计功能;(7)良好操作界面菜单。2. 实现形式分析课设要求,其中要求记录保存在一个数据文件中,因此程序设计必须包括文件的输入输出。另外要求具备记录添加功能,由于不确定要添加的内容多少以及文件内容的多少,根据链表可以接尾添加数据的特性可得出这里选择链表作为学生成员的数据结构更合适一些。由于面向对象部分我们还没有深入学习而且此处用之前c语言面向对象过程的内容完全可以胜任,故选择面向过程的方法。3. 程序函数

6、原型所有函数成员:void main();/主函数void start();/开场界面void zairu();/载入文件到内存链表以及输出信息void chose();/选择功能函数的函数void chazhao();/查找函数void xiugai();/修改函数void charu();/插入函数void shanchu();/删除函数void tongji();/统计函数void jige();/统计函数子函数 计算及格率void paixu();/统计函数子函数 进行成绩排序void pingjun();/统计函数子函数 计算平均分4.程序框图第三章 程序设计1.概要设计本课程设计假

7、设面向的使用对象是老师,用于老师录入,修改,查看学生成绩。程序主要录入学生的信息内容包括:学号、姓名、性别、数学成绩、英语成绩、vc成绩(其他成绩如果添加的话完全和上面三门相同)。为了便于对多个成绩文件的管理,本程序还特意添加了选择文件的功能。整体设计尽可能的考虑了不同的意外情况和应用需求,并给予了解决方案。2.具体程序设计、首先是主函数。为了使程序结构尽可能的清晰,主函数尽量的进行了简洁化处理。void main() cout * 欢迎使用学生信息管理系统 *endl; coutendl;loop1: cout请输入目标文件名fname; zairu();loop: start();/开场

8、chose();/选择功能 fanhui();/返回函数 if(flag2)flag2=0;goto loop1;/flag2是判断是否重新选择文件的标志位 if(!flag2&m!=8)goto loop;/m=8是重新返回主菜单操作界面开始start()函数void start()/打印初始界面函数coutendl;coutendl; cout * 请选择要进行的操作 *endl; cout * * * * * * * * * * * * * * * *endl; cout * 1.查找信息 2.修改信息 *endl; cout * 3.插入信息 4.删除信息 *endl; cout *

9、5.统计功能 6.选择文件 *endl; cout * 7.查看信息 8.退出系统 *endl; cout * * * * * * * * * * * * * * * * endl; coutendl; cout请选择*m; switch(m) case 1: chazhao();break; case 2: xiugai();break; case 3: charu();break; case 4: shanchu();break; case 5: tongji();break; case 6: flag2=1;break; case 7: zairu();break; case 8: co

10、ut谢谢使用!endl;break; default: cout请输入正确数字(1-8)endl; 载入函数(显示信息函数)载入函数,就是将文件里的信息提取到内存链表中。其中两点注意部分。其一是,要将文件中头部的汉字提取过滤掉(因为这不是学生的数据信息)。具体实施方法就是提取到一个字符串变量中,然后丢掉。其二,关于用eof()函数对文件是否读取结束的判断。由于,eof()函数并不是读完最后一个数据返回false值,而是读完最后一个数据再往下读不到的时候才返回false值,即提取完最后一个字符eof()函数还为true。解决办法:设置一个数据缓冲位。void zairu() /载入函数,将文件内

11、容提取到内存 ifstream infile; infile.open(fname,ios:in); /读入文件 if(!infile)cout文件读取失败endl; /判断文件是否读取成功 else cout检索所有数据endl; coutsetw(10)学号setw(8)姓名setw(8)性别setw(8)数学setw(8)英语setw(8)VCstname1stname1stname1stname1stname1stname1; /把数据中的汉字部分提取后丢掉 head=last=NULL; /先置为空指针 p=new student; /开辟新的单元用于存放从文件中提取的信息 infi

12、lep-idp-namep-sexp-mathp-Englishp-vc; /读取链表的头 coutsetw(10)idsetw(8)namesetw(8)sexsetw(8)mathsetw(8)Englishsetw(8)vcnext=p; infilestname1; /作为缓冲,读完这个数据可以看出数据是否读完 if(!infile.eof() /二次判断 strcpy(p-id,stname1); infilep-namep-sexp-mathp-Englishp-vc; last=p; coutsetw(10)idsetw(8)namesetw(8)sexsetw(8)math;c

13、outsetw(8)Englishsetw(8)vcendl; cout*endl; coutnext=NULL; infile.close(); /切断内存与文件的联系 查找函数查找函数提供了两种查找方式,按学号查找和按姓名查找。两种操作完全类似。具体实施办法是:获取要查找的学号或者姓名信息,然后读取已载入内存中的链表学号或者姓名信息,用字符串比较函数比较两者是否相同,相同则输出,不相同则不输出。void chazhao() /查找函数loop: cout请选择查找方式endl; cout 1.按学号查找 2.按姓名查找n; if(n=1)cout请输入学号endl; else if(n=2

14、)cout请输入名字endl; else cout请输入正确的数字1-2stname; p=head; while(p) /读取链表数据,写入文件 if(n=1)strcpy(stname1,p-id); if(n=2)strcpy(stname1,p-name); if(strcmp(stname,stname1); /字符串比较函数,判断是否是查找的数据 else flag=1; /标志位重置 cout下面是搜索到的记录endl; coutsetw(10)idsetw(8)namesetw(8)sexsetw(8)mathcoutsetw(8)Englishsetw(8)vcnext; i

15、f(flag=0)cout没有要查找的数据endl; 6 修改函数xiugai()修改函数借用了查找函数,提供了两种查找对象的方式。修改内容利用了switch语句,通过字符串复制函数实施姓名、学号、性别的修改。具体实施办法是,将文件中的内容提取到内存中,然后第二次以写入的方式打开,清除文件内容,将要修改的内容在内存里修改之后重新写入文件。void xiugai() /修改函数 cout请选择查找对象方式endl; cout 1.按学号查找对象 2.按名字查找对象 n; if(n=1)cout请输入学号endl; else if(n=2)cout请输入名字endl; else cout请输入正确

16、的数字1-2stname; p=head;loop: ofstream outfile(fname,ios:out); /文件输出流对象 outfilesetw(10)学号setw(8)姓名setw(8)性别setw(8)数学setw(8)英语setw(8)VCsetw(8)id); if(n=2)strcpy(stname1,p-name); if(strcmp(stname,stname1) /字符串比较函数,判断是否是查找的数据 outfilesetw(10)idsetw(8)namesetw(8)sexsetw(8)mathsetw(8)Englishsetw(8)vcendl; el

17、se flag=1; cout下面是搜索到的记录endl; coutsetw(10)idsetw(8)namesetw(8)sexsetw(8)math;coutsetw(8)Englishsetw(8)vcendl; cout请选择要修改的内容endl; /选择修改的内容cout * endl;cout * (1)学号 (2)姓名 * endl;cout * (3)性别 (4)数学 * endl;cout * (5)English (6)VC * endl;cout * q; switch(q) /修改 case 1:cout请输入 :将原学号id修改为stname;strcpy(p-id,

18、stname);break; case 2:cout请输入 :将原姓名name修改为stname;strcpy(p-name,stname);break; case 3:cout请输入 :将原性别sex修改为sex1;strcpy(p-sex,sex1);break; case 4:cout请输入 :将原数学成绩math修改为score;p-math=score;break; case 5:cout请输入 :将原英语成绩English修改为score;p-English=score;break; case 6:cout请输入 :将原VC成绩vc修改为score;p-vc=score;break

19、; default:cout请输入正确的数字(1-6)endl;flag1=1; outfilesetw(10)idsetw(8)namesetw(8)sexsetw(8)math;outfilesetw(8)Englishsetw(8)vcnext; if(flag1=1) goto loop; /没找到要修改的数据,重新返回 outfile.close(); if(flag=0)cout没有要查找的数据endl; else cout修改成功!endl;7 插入函数插入函数提供了两种功能,一是在文件末尾添加数据,另外就是新建一个文件加入数据(如果原有文件存在默认清除数据再新建)。实施方法:在

20、末尾添加数据,写入方式为IOS:app;新建写入方式是IOS:out;void charu() ifstream infile; ofstream outfile; cout插入(1) 新建(2)m; if(m=1) /在已有的文件末尾添加记录 infile.open(fname,ios:in); outfile.open(fname,ios:app); else if(m=2) /新建文件,并添加记录 outfile.open(fname,ios:out); infile.open(fname,ios:in); outfilesetw(10)学号setw(8)姓名setw(8)性别setw(

21、8)数学setw(8)英语setw(8)VCendl; else cout请输入正确的数字(1-2)endl; if(!infile)cout文件读取失败endl; if(!outfile)cout文件写入失败endl; if(!infile|!outfile) cout操作失败endl; else /插入记录 cout请输入要插入的数据个数n; cout请输入数据endl; coutsetw(10)学号 姓名 性别 数学 英语 VC p-id; cinp-namep-sex; cinp-mathp-Englishp-vc; head=last=p; for(i=1;inext=p; cinp

22、-id; cinp-namep-sex ; cinp-mathp-Englishp-vc; last=p; last-next=NULL; p=head; cout已录入的数据为endlendl; coutsetw(10)学号setw(8)姓名setw(8)性别setw(8)数学setw(8)英语setw(8)VCendl; while(p) outfilesetw(10)idsetw(8)namesetw(8)sexsetw(8)mathsetw(8)Englishsetw(8)vcendl; coutsetw(10)idsetw(8)namesetw(8)sexsetw(8)mathsetw(8)Englishsetw(8)vcnext; infile.close(); outfile.close(); 8 删除函数删除函数和修改函数思路基本完全一致。先读入到内存,然后清空文件,用字符串比较函数找到要删除的数据

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

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