C课程设计-学生成绩管理.doc_第1页
C课程设计-学生成绩管理.doc_第2页
C课程设计-学生成绩管理.doc_第3页
C课程设计-学生成绩管理.doc_第4页
C课程设计-学生成绩管理.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

湖南人文科技学院计算机系 课程设计说明书 课 程 名 称: C+程序设计 课 程 代 码: 428009 题 目: 统计学生成绩 年级/专业/班: 2009级工程二班 学 生 姓 名: 魏齐、刘鑫 、杨颖 、欧阳健 学 号:09436225 09436226 09436227 09436228指 导 教 师: 袁 辉 勇 开 题 时 间: 2010 年 9 月 16 日完 成 时 间: 2010 年 9 月 26 日目 录摘 要- 1 -一、引 言- 2 -二、设计目的与任务- 2 -三、设计方案- 2 -1、总体设计- 2 -2、详细设计- 2 -3、程序清单- 2 -4、程序调试与体会- 2 -5、运行结果- 2 -四、结 论- 2 -五、致 谢- 2 -六、参考文献- 3 -摘 要本课程设计的目的是设计一个统计学生成绩的程序,用来实现对学生成绩的统计管理,其中包括学生成绩的存档、删除、查询以及排序等问题。根据面向对象编程的思想,设计了一个学生类来封装学生的学号、成绩等相关信息以及获取学生相关信息的方法等,然后通过链表来实现学生成绩的插入、删除和查询等相关操作从而达到统计学生成绩的。关键词:类;C+;链表;对象AbstractThis course is planed to design a statistical procedure for student achievements, which is used to manage stutent achievements, including on file 、deletion 、demand 、sequencing and so on . In the course design, based on our object-oriented programming ideas,we design a student category that packages numbers of students, marks and so on and from which we can accesse to student information , and then realize insertion, deletion, and query of student achivement and other related operations by the chains to manage the statistical achievements of the students . According to this opinion, we can successfully use C + + language to achieve a statistical procedure for student achievements.But it is hard to avoid defects in the proedure .I hope the teacher to give guidance. Keywords: Class;C+,chain;ObjectC+程序设计课程设计-学生成绩管理一、引 言本课程设计要实现的是一个统计学生成绩的程序,为学校的统计工作设计了一个方便的解决方案。学生成绩的统计、排名是学校的一项重要工作,依据学生的成绩的统计排名以采取相对措施。所以,统计工作对于学校至关重要。然而一般的大学校而言,由于人数太多,利用人工的方法来统计学生成绩显示对于一般学校来说过于繁琐,并且任务繁重,也不便于老师或学生查看,本课程设计正是基于这一问题而提出的,我们通过所学的相关知识来设计一个统计学生成绩的程序,实现学生信息的插入、删除、查询以及相应的文件操作。其中学生信息可以用C+中的类进行封装,然后把各个对象插入到链表中来实现学生信息的保存以便以后的查询、删除等操作。2、 设计目的与任务1、通过课程设计更进一步理解C+的基础知识和面向对象的思想;2、培养用系统的观点和软件开发一般规范认识软件开发,为以后的软件开发奠定基础。并在此过程中培养严谨的科学态度和良好的工作作风。初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3、熟练掌握C+中类及类所具备的功能在程序中的应用,并熟练了解类中函数的调用。三、设计方案1、总体设计我们设计一个程序对学生物理、数学、英语、语言成绩进行统计,对学生的成绩进行可执行操作,如添加、删除、查询等等。该程序包括以下功能模块: 1) 学生信息添加模块:能够输入学生基本信息并保存到链表中。2) 查询所有学生成绩模块:直接显示全部学生物理、数学、英语、语言、电路分析成绩以及总分。3) 查询模块:能够查询学生的成绩等相关信息,它包括按学生学号查询和按学生姓名查询两个子模块。4) 帮助及退出模块:能够显示程序的帮助信息并能有效的退出程序。2、详细设计1) 执行操作,如添加、删我们设计一个程序对学生C语言、数学、英语、体育、分析成绩进行统计,对学生的成绩进行可除、查询等等。2) 实现菜单实现选择、输入学生信息并保存到文件中、计算每个学生的总分与平均分并排序、根据学号修改学生信息、根据学号删除学生信息、根据学号查询学生信息、够根据姓名、班级查询学生信息和按照班级和科目计算平均分。3、程序清单#include #include #inc#include lude /用getch();using namespace std;/Student类class Studentpublic: char name20; char Class20; char Id20; int Cnum; /C课程得分 int Mnum; /数学课程得分 int Enum; /英语课程得分 int Gnum; /体育 int sum; /总分 int ave; /平均分 Student * Next; void Input() coutname; coutClass; coutId; coutCnum; coutMnum; coutEnum; coutGnum; sum=Cnum+Mnum+Enum+Gnum; ave=(Cnum+Mnum+Enum+Gnum)/4; void ReadFile(istream & in) innameClassIdCnumMnumEnumGnumavesum; void Show() cout姓名:nameendl班级:Classendl学号:IdendlC+:Cnumendl 数学:Mnumendl外语:Enumendl体育:Gnumendl平均成绩:aveendl总成绩:sumendlendlNext;p!=End;p=p-Next) p-Show(); coutInput(); End-Next=new Student; End=End-Next; cout添加成功!endl; coutNext!=End;p=p-Next) if(!strcmp(p-Next-name,name)return p; return NULL; Student *FindID(char * Id) for(Student * p=Head;p-Next!=End;p=p-Next) if(!strcmp(p-Next-Id,Id)return p; return NULL; Student *FindCLASS(char * Class) for(Student * p=Head;p-Next!=End;p=p-Next) if(!strcmp(p-Next-Class,Class)return p; return NULL; ;/构造函数Studentmassage:Studentmassage() Head=new Student; Head-Next=new Student; End=Head-Next; in.open(sort.txt); if(!in) cout这是一个新系统,无学生信息。请先输入。ReadFile(in); if(End-name0=0)break; End-Next=new Student; End=End-Next; in.close(); couttt读取学生信息成功!Next!=End;) temp=Head-Next; Head-Next=Head-Next-Next; delete temp; delete Head,End;/菜单void Studentmassage:ShowMenu() cout 学 生 成 绩 管 理 系 统 endl; cout endl; cout 1.增加学生成绩 endl; cout 2.显示学生成绩 endl; cout 3.排序统计成绩 endl; cout 4.查找学生成绩 endl; cout 5.删除学生成绩 endl; cout 6.修改学生信息 endl; cout 0.安全退出系统 endl; coutnttntt请选择:;/查找函数void Studentmassage:Find() char name20 ,Id10,Class20; int x; Student * p=NULL; coutntt*n; couttt 1.按学生的姓名查找ntt 2.按学生学号查找ntt 3.按学生班级查找; coutx; switch(x) case 1:coutname; if(p=FindItem(name) p-Next-Show(); cout输入任意字符!继续; getch(); else couttt没有找到该姓名的学生!nendl; cout输入任意字符!继续; getch(); break; case 2: coutId; if(p=FindID(Id) p-Next-Show(); cout输入任意字符!继续; getch(); else couttt没有找到该学号的学生!nendl; cout输入任意字符!继续; getch(); break; case 3:coutClass; if(p=FindCLASS(Class) p-Next-Show(); cout输入任意字符!继续; getch(); else couttt没有找到该班级的学生!nendl; cout输入任意字符!继续; getch(); break; /修改信息void Studentmassage:ModifyItem() /修改信息 char ID20; Student * p=NULL; coutID; if(p=FindID(ID) couttt已找到学生的信息,请输入新的信息!Next-Input(); cout修改成功!endl; cout输入任意字符!继续; getch(); else couttt没有找到!endl; cout输入任意字符!继续; getch(); /删除信息void Studentmassage:RemoveItem() / 删除信息 char ID20; Student * p=NULL,*temp=NULL; coutID; if(p=FindID(ID) temp=p-Next; p-Next=p-Next-Next; delete temp; couttt删除成功!endl; cout输入任意字符!继续; getch(); else couttt没有找到!endl; coutname,p1-name); strcpy(temp-Id,p1-Id); temp-Cnum=p1-Cnum; temp-Mnum=p1-Mnum; temp-Enum=p1-Enum; temp-sum=p1-sum; strcpy(p1-name,p2-name); strcpy(p1-Id,p2-Id); p1-Cnum=p2-Cnum; p1-Mnum=p2-Mnum; p1-Enum=p2-Enum; p1-sum=p2-sum; strcpy(p2-name,temp-name); strcpy(p2-Id,temp-Id); p2-Cnum=temp-Cnum; p2-Mnum=temp-Mnum; p2-Enum=temp-Enum; p2-sum=temp-sum;/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()/对当前学生进行排序 cout Sorting.endl; Student *p=NULL,*p1=NULL,*k=NULL; int n=Studentmassage:ListCount(); if(nNext;p!=End;p=p-Next) for(k=p-Next;k!=End;k=k-Next) if(p-sumk-sum) Studentmassage:Swap(p,k); cout 排序完成!Next;p!=End;p=p-Next) outnametClasstIdt CnumtMnumtEnumtGnumtavetsumn; out.close();/主函数int main() int x,i=0; bool quit=false; coutttendl; for(i=0;i3;i+) couttttttttt endl; couttt【 欢迎进入学生成绩管理系统 】endl; for(i=0;i3;i+) couttttttttt endl; coutttnendl; Studentmassage Grade; coutx; switch(x) case 0:cout感谢您的使用endl;quit=true;break; case 1:Grade.AddItem();break; case 2:Grade.Display();break; case 3:Grade.Sort();break; case 4:Grade.Find();break; case 5:Grade.RemoveItem();break; case 6:Grade.ModifyItem();break; return 0;4、程序调试与体会此程序设计完成了成绩统计系统的主要功能,实现了添加、显示、删除记录、查询记录、自动保存等功能,程序的人性化设计较多,如自动保存,自动导入功能简化了操作过程,程序还人性化得增加了帮助这个选项,这对于程序的使用者来说是一个不小的帮助,本设计基本按要求完成了课程设计的任务。 但是在程序中还存在一些不足,需要改进。如:程序的编写不够简洁,在实际操作中,添加学生信息不够方便。只实现了部分的操作可能。比如输入错误的信息的程序提示。5、运行结果1)首先出现程序初始界面如图1 图12)进入功能界面,实现功能1, 如图2 图23)实现功能显示学生信息,如图 3 图34)实现功能查找 如图 4 图45)实现删除功能 如图5 图56)实现修改功能如图6 图6最后选择0安全退出程序四、结 论本课程设计中,我们成功地实现了一个统计学生成绩的程序,达到了预期的目的。在课程设计之前对C+程序的认识仅停留在看的阶段,而对编程实现的认识很模糊,只知道大概的意思,在课程设计期间才知道离独立编程还有很远的距离。在课程设计中我们遇到了很多问题,在解决问题的过程中,我们都学到了很多,而这些都是在课堂和书本上学不到的。通过此次课程设计,我们对面向对象编程、类、链表等一系列概念有了更进一步的认识,也熟悉了所学知识在实际应用中的作用。同时,在课程设计过程中,有的问题是自己解决不了的,通过同学们和老师的帮助我们才成功地及时完成了课程设计,对此我们表示感谢,同时我们也在这个过程中意识到了团队合作的重要性。总之,这次课程设计给了我很大的帮助。五、参考文献1刘振安编著.C+程序设计教程.北京:清华大学出版社,20052刘先省 visual C程序设计.四川:机械出版社,1994.3刘秉章主编.C+程序设计语言.北京:北京理工大出版社,20104 揣锦华等编.C+程序设计语言.西安: 西安电子科技大学出版社,2003

温馨提示

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

评论

0/150

提交评论