C设计的高校人员信息管理系统课程设计报告.doc_第1页
C设计的高校人员信息管理系统课程设计报告.doc_第2页
C设计的高校人员信息管理系统课程设计报告.doc_第3页
C设计的高校人员信息管理系统课程设计报告.doc_第4页
C设计的高校人员信息管理系统课程设计报告.doc_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

C+设计的高校人员信息管理系统课程设计报告第一章 绪论11 课程设计的目的 课程设计是课程教学必不可缺的一个重要环节,可加深学生对该课程所学内容的进一步的了解与巩固,是将计算机课程与实际问题相连接的关键步骤。此次程序设计综合运用所学知识解决实际问题,将课堂的书本知识有效的在程序中体现出来,让学生更理解了C+功能之强大,进一步让学生对面向对象的方法以及C+的编程思想有了较好了解和认识。12 课程设计的背景和意义121 课程设计的背景本次课程设计,主要研究类的继承、抽象类、多态、虚基类以及对文件进行各项操作(如添加、修改、删除、查询、显示等)。通过这次课程设计掌握面向对象的程序设计思路,着重掌握在C+中对文件进行查找、删除、修改等操作。1. 理论研究基础(1)C+面向对象程序设计中类与对象的使用(2)类的封装性和继承性。(3)C+ I/O流库的处理,二进制文件的创建与保存。2. 技术层面的支持(1)定义基类与派生类,将数据成员与成员函数封装在类中。(2)定义指向对象的指针,设计删除、查询、更改的算法。(3)C+异常处理的功能与输入输出流。122 课程设计的意义(1)通过课程设计的综合训练,培养了学生分析解决实际问题和编程等实际动手能力。帮助了同学系统的掌握C+课程的主要内容。(2)通过详细的实例分析,循环渐进的描述,启发学生顺利的完成设计。课程设计将设计要求、需求分析、算法设计、编程和实例测试运行分开,为学生创造分析问题、独立思考的条件。(3)通过编写一个较长的程序,实现了对人员信息的管理,激发了学生学习编程的兴趣。13 课程设计环境在Microsoft Visual C+ 6.0开发平台上编写程序源代码,修改,增加功能,通过编译、连接,直到完全无误,最终执行程序,反复输入新的数据进行验证并进一步完善。第二章 需求分析21 问题描述对于高等学校来说,学生信息的管理至关重要,其中成绩信息管理尤为突出。面对庞大的信息量,需要通过专门的管理系统来系统化、规范化以及高效地实现成绩信息管理。22 功能要求1、基本功能(1)添加信息主要完成学生成绩信息的添加,包括学号、姓名、班级、三门课程成绩(英语、数学以及程序设计)。当添加了重复的学号时,则提示数据添加重复并取消添加;当成绩信息已满时,则提示不能再添加新的数据。(2)删除信息 主要完成学生成绩信息的删除。如果当前系统中信息为空,则提示“学生信息为空!”,并返回操作;否则,输入要删除的学生的学号,根据学号删除该学生的信息,如果该学号不在系统中,则提示“该学生不存在”。(3)查询信息 可按照学号、姓名、班级以及课程四种方式来查询学生成绩信息。查询时,首先选择要查询的类别,然后输入要查询的信息,若找到记录,则输出该信息;若不存在该记录,则提示“该信息不存在!”。(4)显示成绩 输出当前系统中所有学生成绩信息,每条记录占据一行,按列对齐。(5)成绩统计按照课程统计出各科成绩的平均分,以及“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例。(6)成绩存盘将当前程序中的学生成绩信息存入文件中。(7)读出成绩 从文件中将学成成绩信息读入程序。2、扩展功能(1)提供成绩信息的修改。(2)可按学生的总成绩进行排序。(3)使用二进制文件存储学生成绩信息。(4)根据实际需求,自行添加其他功能。23 问题的解决方案经分析,问题的解决按下述方法步骤进行:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试; (8)完成系统总结报告第三章 系统设计31 数据设计311 类设计人员有共同的信息编号number、姓名neme、班级class、英语成绩、高数成绩、程序设计成绩,所以设计一个基类student,其中包括以上信息。 312 函数设计Diaoyong()将领导信息从student.dat读取到read中,void Student:input()输入学生成绩,void Student:output()输出学生成绩void printstar( int n)输入星号,void menu()主菜单,void menu_sort()排序菜单,void menu_sta()统计菜单。void sort_poj()按单科成绩排序菜单,void average()平均分统计菜单,void sort(int N)冒泡法按单科成绩高低排序,void rate(int z)单科及格率,32 结构设计321 系统流程图学生类输入函数(成员函数)输出函数(成员函数)普通函数void sort(int N)排序void menu_sta()统计void sort_poj()按单科成绩排序void average()平均分统计void ave(int x)单科平均分统计void search_num(int numb)按学号查询void rate(int z)单科及格率void diaoyong()调用文件322 界面设计登入高校学生管理系统界面如图3-2所示图3-2界面菜单设计第四章 系统实现41 类实现Student类class Studentpublic:void input();用于输入数据void output();输出数据int num;学号char name20姓名20个宽度;long int clas;班级int score4;用于存储学生三科成绩机总成绩;42 函数实现 以下对程序中所涉及的函数进行说明。下面两个位成员函数,功能分别为输入学生成绩和输出学生成绩。void Student:input()/输入学生成绩amount+;coutnumnameclas;输入姓名 学号 班级for(int i=0,total=0;iscorei;total+=scorei;score3=total;计算个人总成绩void Student:output()/输出学生成绩coutsetw(9)numsetw(10)namesetw(10)clas;for(int i=0;i3;i+)用循环结构输出三科成绩coutsetw(10)scorei;coutendl; 此函数用来输出星号,星号只是起到装饰执行界面的作用。void printstar( int n)/输入星号for(int i=1;i=n;i+)循环方式输出星号,星号个数可以自己决定cout005 ;输出各级菜单,体现程序友好性,方便用户操作。void menu()/主菜单cout ;printstar(40);coutendl;couttttt1.输入endl;couttttt2.打印endl;couttttt3.排序endl;couttttt4.查询endl;couttttt5.统计endl;couttttt6.添加endl;couttttt7.删除endl;couttttt8.退出endl;cout ;printstar(40);coutendl;void menu_sort()/排序菜单cout ;printstar(40);coutendl;couttttt(1).按单科成绩endl;couttttt(2),按总分endl;couttttt(3).返回主菜单endl;couttttt(4).退出endl;cout ;printstar(40);coutendl;void menu_sta()/统计菜单cout ;printstar(40);coutendl;couttttt(1).平均分endl;couttttt(2).个人总分endl;couttttt(3).单科及格率endl;couttttt(4).返回主菜单endl;couttttt(5).退出endl;cout ;printstar(40);coutendl;void sort_poj()/按单科成绩排序菜单cout ;printstar(40);coutendl;couttttt.英语endl;couttttt.高数endl;couttttt.程序设计endl;couttttt.返回主菜单endl;couttttt.返回上一级endl;couttttt.退出endl;cout ;printstar(40);coutendl;cout请输入你的选择:;void average()/平均分统计菜单cout ;printstar(40);coutendl;couttttt.科目平均分endl;couttttt.个人平均分endl;couttttt.返回主菜单endl;couttttt.返回上一级endl;couttttt.退出endl;cout ;printstar(40);coutendl;cout请输入你的选择:;此函数在成绩排序中起到至关重要的作用。void sort(int N)/冒泡法按单科成绩高低排序Student p;diaoyong();首先打开文件调用数据进行排序for(int i=1;iM;i+)for(int j=0;jstuj.scoreN)p=stuj;stuj=stuj+1;stuj+1=p;cout成绩排序如下:endl;cout*endl;coutsetw(10)名次setw(10)学号setw(10)姓名setw(10)班级setw(10)成绩endl;for(i=0;iM;i+)coutsetw(10)i+1setw(10)stui.numsetw(10)setw(10)stui.classetw(10)stui.scoreNendl;cout*endl;求出平均分并输出。void ave(int x)/单科平均分统计diaoyong();float y=0;for(int i=0;iM;i+)y+=stui.scorex;coutsetw(10)y/M;查询中的一种。void search_num(int numb)/按学号查询diaoyong();cout*endl;for(int k=0;kM;k+)循环方式查找学号相匹配的学生if(numb=stuk.num)coutsetw(10)学号setw(10)姓名setw(10)班级setw(10)英语setw(10)高数setw(12)程序设计endl;stuk.Student:output();break;if(k=M)coutt没有你要查找的成绩!endl;cout*endl;统计中的一项内容。void rate(int z)/单科及格率diaoyong();int n=0;for(int k=0;k=60)n+; 出现几个的成绩后,n自增coutsetw(10)(n*1.0)/M)*100%;/以百分数形式输出向显示器输出存盘的学生信息void diaoyong()/调用数据 向显示器输出相关数据ifstream infile(stu.dat,ios:binary);if(!infile)cerropen error!endl;abort();for(int k=0;kM;k+)infile.read(char*)&stuk,sizeof(stuk);infile.close();43 主函数实现以下为主函数体,具体的功能已在注释中给出。int main()/主函数/主菜单的接口/在主函数中,为了实现程序与菜单的链接,最终采用switch选择语句aaa: menu(); coutchoose; switch(choose) /输入学生成绩的接口 case 1: coutM; couta; cout请输入M个学生的信息:endl;/数据存盘 coutsetw(6)学号setw(6)姓名setw(8)班级setw(6)英语setw(6)高数setw(10)程序设计endl; for(int k=0;kM;k+)循环方式输入M个学生的信息 stuk.Student:input(); ofstream outfile(stu.dat,ios:binary);将输入的信息存盘 if(!outfile) cerropen error!endl; abort(); for(k=0;kM;k+) outfile.write(char*)&stuk,sizeof(stuk); outfile.close(); /提示用户在输入结束后能继续做什么 couttt(1).返回主菜单tt(2).退出endl; /小菜单的接口 int t; coutt; couta; switch(t) case 1: couta;/返回主菜单 goto aaa; case 2: couta; break;/退出 /打印学生成绩的接口 /打印,即向显示器输入数据 case 2: couta; cout学生的信息如下:endl; cout*endl; diaoyong(); coutsetw(10)学号setw(10)姓名setw(10)班级setw(10)英语setw(10)高数setw(12)程序设计endl; for(int i=0;iamount;i+) stui.Student:output();循环调用output函数 cout*endl; couttt(1).返回主菜单tt(2).退出endl; /小菜单的接口 coutt; couta; switch(t) case 1:couta;/返回主菜单 goto aaa; case 2:couta;/退出 break; break; /排序接口 case 3: couta;bbb: menu_sort(); coutchoose3; switch(choose3) case 1:/按单科成绩排序 coutchoose31; switch(choose31) case 1:/按英语成绩排序 couta; sort(0); couttt(1).返回主菜单tt(2).返回上一级couttt(3).退出endl; coutt; couta; switch(t) case 1:couta; goto aaa; case 2:couta; goto fff; case 3: couta; break; break; case 2:/按高数成绩排序 couta; sort(1); couttt(1).返回主菜单tt(2).返回上一级couttt(3).退出endl; coutt; couta; switch(t) case 1:couta; goto aaa; case 2:couta; goto fff; case 3: couta; break; break; case 3:/按程序设计成绩排序 couta; sort(2); couttt(1).返回主菜单tt(2).返回上一级couttt(3).退出endl; coutt; couta; switch(t) case 1:couta; goto aaa; case 2:couta; goto fff; case 3: couta; break; break; case 4:/返回主菜单 couta; goto aaa; break; case 5:/返回上一级 couta; goto bbb; break; case 6:/退出 couta; break; break; case 2:/按总分排序 couta; sort(3); couttt(1).返回主菜单tt(2).返回上一级couttt(3).退出endl; coutt; couta; switch(t) case 1: couta; goto aaa; case 2: couta; goto fff; case 3: couta; break; break; /查询接口 case 4:couta;coutnumber;couta;search_num(number);couttt(1).返回主菜单tt(2).退出endl;coutt;couta;switch(t)case 1:/返回主菜单couta;goto aaa;case 2:/退出couta;break;break; /统计 case 5:couta;ddd:menu_sta();coutchoose5;switch(choose5)case 1:/平均分统计coutchoose51;switch(choose51)case 1:/科目平均分couta;cout*endl;coutsetw(10)科目setw(10)英语setw(10)高数setw(12)程序设计endl;coutsetw(10)平均分;ave(0);/英语平均分ave(1);/高数平均分ave(2);/程序设计平均分coutendl;cout*endl;couttt(1).返回主菜单tt(2).退出endl;coutt;couta;switch(t)case 1:/返回主菜单couta;goto aaa;case 2:/继续统计couta;goto eee;case 3:/退出couta;break;break;case 2:/个人平均分couta;diaoyong();cout*endl;coutsetw(10)学号setw(10)姓名班级setw(10)平均分endl;for(int i=0;iM;i+)coutsetw(10)stui.numsetw(10)setw(10)stui.classetw(10)stui.score5/5endl;cout*endl;couttt(1).返回主菜单tt(2).返回上一级tt(3).退出endl;coutt;couta;switch(t)case 1:/返回主菜单couta;goto aaa;case 2:/继续查询平均分couta;goto eee;case 3:/退出couta;break;case 3:/返回主菜单couta;goto aaa;case 4:/返回上一级couta;goto ddd;case 5:/退出couta;break;break;case 2:/总分统计couta;diaoyong();cout*endl;coutsetw(10)学号setw(10)姓名setw(10)班级setw(10)总分endl;for(int i=0;iM;i+)coutsetw(10)stui.numsetw(10)setw(10)stui.score5endl;cout*endl;couttt(1).返回主菜单tt(2).返回上一级tt(3).退出endl;coutt;couta;switch(t)case 1:/返回主菜单couta;goto aaa;case 2:/返回上一级couta;goto ddd;case 3:/退出couta;break;break;case 3:/及格率统计couta;cout*endl;coutsetw(10)科目setw(10)英语setw(10)高数setw(12)程序设计endl;coutsetw(10)及格率;rate(0);/英语及格率rate(1);/高数及格率rate(2);/程序设计及格率coutendl;cout*endl;couttt(1).返回主菜单tt(2).退出endl;coutt;couta;switch(t)case 1:/返回主菜单couta;goto aaa;case 2:/返回上一级couta;goto ddd;case 3:/退出couta;break;break;case 4:/返回主菜单couta;goto aaa;case 5:/退出couta;break;break; /添加信息接口 case 6: couta; int n; cout请输入额外输入的学生数目:n; amount+=n; ofstream outputfile(stu.dat,ios:app|ios:binary); if(! outputfile) cerropen error!endl; abort();/退出程序 for(int j=M;j(M+n);j+) stuj.Student:input(); outputfile.write(char * ) & stuj,sizeof(stuj); outputfile.close(); couttt(1).返回主菜单tt(2).退出endl;coutt;couta;switch(t)case 1:/返回主菜单couta;goto aaa;case 2:/退出couta;break; /删除信息接口 case 7: if(amount=0) cout学生信息

温馨提示

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

评论

0/150

提交评论