学生成绩管理系统课程设计文档(C++)_第1页
学生成绩管理系统课程设计文档(C++)_第2页
学生成绩管理系统课程设计文档(C++)_第3页
学生成绩管理系统课程设计文档(C++)_第4页
学生成绩管理系统课程设计文档(C++)_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计设计题目学生管理系统课程设计学生姓名翟胜雨学 号 20111951专业班级 自动化 111指导教师谭琦 董学平2013 年 9 月 一. 设计任务a。学校的学生成绩信息管理是学校管理中的一项重要任务,以往的手工操作已经不能适应现在办公的需要。为了摆脱繁琐的劳动,提高工作效率,利用计算机进行信息处理成为必然.开发功能完善及安全可靠的管理系统可以大大提高学校资源的利用率,及时,准确地获取需要的信息,充分发挥人员的工作潜力.因此,不难想象,正是咨询业的迅速发展使得人们从过去的手工劳动中得以解脱。同时,编写一套完善的学生成绩管理系统的任务就显得尤为重要。b。设计四个类;学生类(描述学生基本信息

2、);学生管理类(对学生信息进行管理);学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入; c。能完成对学生成绩的录入,修改,能统计学生的成绩;求学生的总分及平均分;并能根据学生的平均或总成绩进行排序,能按学号或姓名查询学生成绩,能删除改学生成绩;能输出学生的成绩单。d.应用程序的文本界面设计美观、清洁,有简要的应用程序开发文档.二. 具体设计1.需求分析:a.能对学生各科成绩进行录入:。b.能显示学生输入的成绩c.能对学生的成绩进行增加。d.能对学生的成绩进行删除.e。能对学生的成绩进行修改。f。能对学生的成绩按学号,姓名,进行查询。g。能输出学生的所有数据。h。能进行成绩统

3、计i.能进行平均分查询排名。2.系统性能要求:a。系统安全、可靠;b。功能齐全;c.操作方便、界面友好;d易于维护和扩充。3。系统的功能分析:资料维护:系统维护包括对学生信息的录入操作及数据表中的信息进行浏览。系统功能:可以对数据表中的信息进行浏览.系统查询:可以对学生的信息进行查询.4。系统功能模块学生成绩查询系统有:成绩录入、显示、增加、删除、修改,数据查询,排序显示、输出构成。5.模块框架图主 函 数Student 类Studentmassage类显示信息添加信息查找信息修改信息删除信息退出系统三、程序功能的分析1.Student类的声明class Student public: cha

4、r name20; char Id20; int Cnum; /C+课程得分 int Mnum; /数学课程得分 int Enum; /英语课程得分 float aver; /平均分 Student * Next; void Input() cout<”tt请输入学生的姓名:”; cin>name; cout<”tt请输入学生的学号:" cin>Id; cout"tt请输入C+课程的成绩:”; cin>Cnum; cout”tt请输入数学的成绩:"; cinMnum; cout"tt请输入英语的成绩:”; cinEnum;

5、aver=(Cnum+Mnum+Enum)/3。0; void ReadFile(istream in) in>nameId>Cnum>Mnum>Enumaver; void Show() cout<"姓名:”name"学号:"<Id<"C+:”<<Cnum ”数学:"Mnum<"英语:”Enum<<”平均成绩:"<<aver<endl; ; 2。Studentmassage类的声明class Studentmassage public

6、: Studentmassage(); Studentmassage(); void ShowMenu(); void Find(); void Save(); void ModifyItem(); void RemoveItem(); void Swap(Student ,Student ); void Sort(); /void Unpass(); int ListCount(); /void Average(); void Display() for(Student p=Head>Next;p!=End;p=p-Next) p>Show(); cout<"输入

7、任意字符!继续”; getch(); void AddItem() EndInput(); EndNext=new Student; End=End->Next; cout”添加成功!"<endl; cout<”输入任意字符!继续”; getch(); private: Student Head, End; ifstream in; ofstream out; Student FindItem(char name) for(Student p=Head;p-Next!=End;p=pNext)/匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p-&g

8、t;Nextname,name)return p; return NULL; Student FindID(char * Id) for(Student p=Head;p>Next!=End;p=p-Next)/匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p>NextId,Id)return p; return NULL; ; 3。数据记录的添加 void Input() cout<”tt请输入学生的姓名:"; cin>name; cout”tt请输入学生的学号:”; cin>Id; cout”tt请输入C+课程的成绩:";

9、 cin>Cnum; cout<”tt请输入数学的成绩:”; cin>Mnum; cout"tt请输入英语的成绩:"; cinEnum; aver=(Cnum+Mnum+Enum)/3.0; void ReadFile(istream in) in>name>Id>Cnum>Mnum>Enum>aver; 4。数据记录的显示void Show() cout"姓名:”name”学号:"<<Id”C+:”Cnum ”数学:”<Mnum”英语:”<Enum”平均成绩:"&l

10、t;averendl; ; 5数据记录的删除void Studentmassage:RemoveItem() / 删除信息 char name20; Student p=NULL,temp=NULL; cout<<”请输入要删除的学生的姓名:”endl;cinname; if(p=FindItem(name) temp=p->Next; pNext=pNextNext; delete temp; cout<”删除成功!”endl; cout”输入任意字符!继续" getch(); else cout<”没有找到!"<endl; cout&

11、lt;"输入任意字符!继续" getch(); 6.数据记录的查找void Studentmassage:Find() char name20 ,Id10; int x; Student p=NULL; cout” 1.按学生的姓名查找ntt 2。按学生学号查找”; cin>x; switch(x) case 1:cout”请输入要查找的学生的姓名:";cinname; if(p=FindItem(name)) p-NextShow(); cout”输入任意字符!继续”; getch(); else cout”没有找到该姓名的学生!"<nen

12、dl; cout"输入任意字符!继续"; getch(); break; case 2: cout”请输入要查找的学生的学号:”;cin>>Id; if(p=FindID(Id) pNextShow(); cout<"输入任意字符!继续”; getch(); else cout"没有找到该学好的学生!"<n'endl; cout<”输入任意字符!继续"; getch(); break; 7。数据记录的排序void Studentmassage:Swap(Student p1, Student *p

13、2)/交换两个combox变量的数据域 Student temp=new Student; strcpy(tempname,p1-name); strcpy(temp->Id,p1Id); tempCnum=p1-Cnum; tempMnum=p1Mnum; tempEnum=p1Enum; tempaver=p1-aver; strcpy(p1-name,p2name); strcpy(p1>Id,p2Id); p1>Cnum=p2Cnum; p1-Mnum=p2Mnum; p1->Enum=p2Enum; p1-aver=p2aver; strcpy(p2name,

14、temp>name); strcpy(p2-Id,temp>Id); p2>Cnum=temp->Cnum; p2->Mnum=temp>Mnum; p2-Enum=tempEnum; p2-aver=tempaver; / int Studentmassage:ListCount()/统计当前链表的记录总数,返回一个整数 if(! Head) return 0; int n=0; for(Student * p=Head>Next;p!=End;p=p-Next) n+; return n; / void Studentmassage::Sort()

15、/对当前链表进行排序 cout "Sorting.。"endl; Student *p=NULL,p1=NULL,*k=NULL; int n=Studentmassage:ListCount(); if(n<2) return; for(p=Head-Next;p!=End;p=p->Next) for(k=pNext;k!=End;k=kNext) if(p->averk>aver) Studentmassage::Swap(p,k); cout "排序完成!"<endl; getch(); return; 8。数据记录

16、的保存void Studentmassage:Save() out.open("sort。txt”); for(Student p=HeadNext;p!=End;p=p->Next) out<<p-name”t”pId”t”<p>Cnum”t” pMnum"t"<<pEnum"t"<p-aver<n; out。close(); 三。 调试及测试调试过程中遇到的主要问题是如何解决的;对设计和编码的回顾讨论和分析;程序运行的时空效率分析;测试数据集;运行实例;改进设想;经验和体会等。因为是第一

17、次做课程设计,没有经验,同时对操作系统不太了解,在调试及测试的过程中遇到了很多问题,如在编辑的时候总是出现错误,不管自己怎么操作总是消除不了。最后在教老师及同学帮助下解决了这一难题,它是因为自己操作步骤出现了错误.同样,在最后运行的时候输入应当是数字,但,当你输入其他符号时,系统会出现紊乱,这时只有退出程序系统,重新进入时才能进行正常操作。对于这一问题,我绞尽脑汁,翻阅的很多资料,同时,我也参考了其他同学所做的,在我不懈的努力下最总解决了这一问题。虽然最总结果运行正确,但,该系统还存在很多漏洞与不足,要在以后的日子里改进系统使系统更优化.可能大家在做这一课程设计的时候都会遇到一些问题,首先,我

18、们不应该退缩,不应该被难题所吓到,应该勇往直前,敢于面对.其实,生活就是这样,有困难,又难过,同时又有喜悦,又欢乐,这样生活才是美满的,才是幸福的。说远了,以上是我个人对这次面向课程设计的一点心得.要说经验呢,就是,多看,多练,多问,多想.多看就是多看关于课程设计这一方面的资料,多练就是多用系统在平时多加练习,多问就是自己在不懂的时候就向同学、老师请教,多想就是当自己遇到难题的时候要想一下该怎么做。好了,以上就是我的经验,其实真正的经验实在你自己的学习中,自己的操作中所获得的,这才是最宝贵的。 使用说明进出菜单栏后,选着选项,选1时直接输入学生信息,结束时按Enter;在菜单栏中,对输入的信息

19、显示时,选着2,结束时按Enter;在菜单栏中,对输入信息进行排序时,选着3,结束时按Enter;在菜单栏中,对输入信息进行查找时,选着4,按Enter,选1,按姓名查找,选2,按学号进行查找,结束时按Enter;在菜单栏中,删除信息时,选着5,结束时按Enter;在菜单栏中,对该输入信息时,选着6,结束时按Enter;在菜单栏中,退出系统时,选着7,结束时按Enter;5 运行实例:请输入任意开始 请选着:1 /进行输入 请输入学生的姓名:zhaowei 请输入学生的学号:20111901 请输入学生c+的成绩:90 请输入学生数学成绩:90 请输入学生的英语成绩:90 添加成功,请输入任意

20、字符继续 请选着:1 /进行输入 请输入学生的姓名:fudongcheng 请输入学生的学号:20111902 请输入学生c+的成绩:91 请输入学生数学成绩:91 请输入学生的英语成绩:91 添加成功,请输入任意字符继续 请选着:1 /进行输入 请输入学生的姓名:yaoyongjian 请输入学生的学号:20111903 请输入学生c+的成绩:92 请输入学生数学成绩:92 请输入学生的英语成绩:92 添加成功,请输入任意字符继续 选2/显示学生成绩学生的姓名:zhaowei学生的学号:20111901学生c+的成绩:90学生数学成绩:90 学生的英语成绩:90 学生的姓名:fudongch

21、eng学生的学号:20111902学生c+的成绩:91学生数学成绩:91学生的英语成绩:91 学生的姓名:yaoyongjian学生的学号:20111903 学生c+的成绩:92 学生数学成绩:92 学生的英语成绩:92 选3/进行排序 再选2显示 选4/进行查找 1按学时能够姓名查找 2按学生学号进行查找 如输入1, 请输入要查找学生的姓名:zhaowei学生的姓名:zhaowei学生的学号:20111901学生c+的成绩:90学生数学成绩:90 学生的英语成绩:90 选5/进行删除功能 请输入要删除学生的姓名:zhaowei 选6/进行修改功能请输入要修改的学生姓名:fudongcheng

22、请输入要修改学生的学号:20111904请输入要修改学生的c+成绩:99请输入要修改学生的数学成绩:99请输入要修改学生的英语成绩:99修改成功,请输入任意字符6 设计小结本系统是以Visual C+6。0为开发工具编的程序。本系统实现了对学生成绩等信息的显示,添加,查找,修改和删除的功能.第一周结束的时候,我感觉自己收获挺大的,从一开始的迷茫,不知道从何下手到把程序中的几个模块编写出来,心里挺开心的.但是,到了第二周,我由不得不再次陷入困境.在整个程序的编写过程中.最难的就是修改和删除这两个模块,这也是我们第二周要解决的重点问题.开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助

23、和提示下,我编完了修改程序,但编译时老出错,修改后的内容将文本内的信息全部覆盖了.困难之时,在老师的帮助之下,完成了修改和删除.这样的话,整个程序基本上全部完成了,就剩下完善工作了。我们组写了两个程序,最后,两个程序相互组合,互补,最后大功告成。虽然设计时完成了,但是我觉得其中还是由一些不足之处:1. 警告句。程序中缺少一些警告句,例如:“是否真的删除(y/n)?”.2。 重名的情况。由于考虑的不周全,没有设计遇到重名的情况该怎么处理。3. 选择单一。本系统设计的程序中,设计的删除模块只是把学生的信息进行全部删除,并没有删除个别信息的选择。整个程序完成了,还有很多不完善的地方,希望自己以后办事

24、的时候要认真,仔细,考虑周全。短短的四周课程设计结束了,但是这段时间里,我又学到了更多C +的知识,如:类,文件流等,我认识到要想学好计算机就要重视实践操作,不仅仅是学习C+语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。同时,我也发现我的好多不足之处,我也被提醒以后办事的时候要认真,仔细,考虑周全。此次c+课程设计,在指导教师的精心教导下,我们学会了如何用C+编写一个简单的应用程序.首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试.程序实现上,设计了简单的查询界面,将各个功

25、能集中出来按照程序编写原则,便于查询。根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。附录:源程序 include iostream include fstream include string。h> include conio。h/用getch(); using namespace std; /Student类 class St

26、udent public: char name20; char Id20; int Cnum; /C+课程得分 int Mnum; /数学课程得分 int Enum; /英语课程得分 float aver; /平均分 Student * Next; void Input() cout”tt请输入学生的姓名:”; cinname; cout<”tt请输入学生的学号:”; cin>Id; cout<”tt请输入C+课程的成绩:”; cin>Cnum; cout<"tt请输入数学的成绩:" cinMnum; cout<"tt请输入英语

27、的成绩:”; cin>Enum; aver=(Cnum+Mnum+Enum)/3。0; void ReadFile(istream in) in>nameId>CnumMnum>>Enumaver; void Show() cout<"姓名:”<name<"学号:"<Id”C+:"Cnum <”数学:"Mnum”英语:”Enum<”平均成绩:”aver<endl; ; /Studentmassage类 class Studentmassage public: Student

28、massage(); Studentmassage(); void ShowMenu(); void Find(); void Save(); void ModifyItem(); void RemoveItem(); void Swap(Student ,Student ); void Sort(); /void Unpass(); int ListCount(); /void Average(); void Display() for(Student p=Head-Next;p!=End;p=p->Next) pShow(); cout”输入任意字符!继续”; getch(); vo

29、id AddItem() End-Input(); End>Next=new Student; End=EndNext; cout"添加成功!”endl; cout"输入任意字符!继续"; getch(); private: Student Head,* End; ifstream in; ofstream out; Student *FindItem(char * name) for(Student * p=Head;pNext!=End;p=pNext)/匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(pNextname,name)ret

30、urn p; return NULL; Student FindID(char Id) for(Student p=Head;p-Next!=End;p=pNext)/匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p>Next-Id,Id))return p; return NULL; ; /构造函数 Studentmassage::Studentmassage() Head=new Student; HeadNext=new Student; End=Head>Next; in.open("sort。txt”); if(!in) cout”这是一个新系

31、统,无学生信息.请先输入。”endl; else while(!in.eof() End>ReadFile(in); if(Endname0=0)break; EndNext=new Student; End=EndNext; in。close(); cout"读取学生信息成功!”endl; /析构函数 Studentmassage:Studentmassage() Save(); for(Student temp;HeadNext!=End;) temp=HeadNext; Head>Next=HeadNext->Next; delete temp; delete

32、 Head,End; /菜单 void Studentmassage:ShowMenu() cout<” 学 生 成 绩 管 理 系 统 "<endl; cout<<” 1。增加学生成绩 ”<endl; cout<” 2.显示学生成绩 "endl; cout” 3.排序统计成绩 ”<endl; cout” 4。查找学生成绩 ”<<endl; cout<" 5.删除学生成绩 "<endl; cout<" 6。修改学生信息 ”endl; cout” 0.安全退出系统 ”endl

33、; cout<”请选择:”; /查找函数 void Studentmassage:Find() char name20 ,Id10; int x; Student * p=NULL; cout<” 1。按学生的姓名查找ntt 2。按学生学号查找”; cinx; switch(x) case 1:cout”请输入要查找的学生的姓名:”;cin>>name; if(p=FindItem(name) pNext-Show(); cout"输入任意字符!继续”; getch(); else cout”没有找到该姓名的学生!"<n'endl; c

34、out”输入任意字符!继续”; getch(); break; case 2: cout"请输入要查找的学生的学号:"cinId; if(p=FindID(Id) p>NextShow(); cout<”输入任意字符!继续”; getch(); else cout<”没有找到该学好的学生!”<n'endl; cout<”输入任意字符!继续"; getch(); break; /修改信息 void Studentmassage::ModifyItem() /修改信息 char name20; Student p=NULL; co

35、ut”tt请输入要修改的人的姓名:”;cin>name; if(p=FindItem(name)) cout”tt已找到学生的信息,请输入新的信息!"endl; pNextInput(); cout<<"修改成功!"endl; cout<”输入任意字符!继续" getch(); else cout"tt没有找到!"<endl; cout<”输入任意字符!继续”; getch(); /删除信息 void Studentmassage:RemoveItem() / 删除信息 char name20; S

36、tudent p=NULL,temp=NULL; cout<”请输入要删除的学生的姓名:"endl;cin>name; if(p=FindItem(name) temp=p>Next; p->Next=p>Next>Next; delete temp; cout<<”删除成功!”endl; cout”输入任意字符!继续"; getch(); else cout"没有找到!”<endl; cout<<”输入任意字符!继续"; getch(); / void Studentmassage:Sw

37、ap(Student p1, Student p2)/交换两个combox变量的数据域 Student *temp=new Student; strcpy(temp->name,p1name); strcpy(tempId,p1Id); temp-Cnum=p1>Cnum; tempMnum=p1Mnum; temp-Enum=p1-Enum; tempaver=p1->aver; strcpy(p1>name,p2-name); strcpy(p1-Id,p2Id); p1Cnum=p2->Cnum; p1-Mnum=p2->Mnum; p1Enum=p2>Enum;

温馨提示

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

最新文档

评论

0/150

提交评论