版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告(说明书) 课程: 面向对象语言与 C+程序设计题目: 大学师生管理系统 班 级: 学 号: 学生姓名: 日 期: 1课程设计目的与要求1.1目的(1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题.1.2 基本要求(1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法; (4)在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现
2、系统功能. 1.3 创新要求在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能及设计出比较友好的界面等. 2 设计题目(问题)描述和要求2.1 问题描述 设计一个处理集合的类,用来处理整型数,要求具有如下功能.要求: 用c+设计一个大学教师和学生管理程序: A) 教师包括:编号(a),姓名(c),职称(d)和教研室数据(b); B) 大学生包括:编号(m),姓名(s),性别(t),班号(n),英语(e),高等数学(f)和数据结构(g); C) 研究生包括编号,姓名,性别,班号,指导教师和研究方法; D) 博士后既是教师也是研究生. 2.2完成功能 1) 教师与学生、研究生、博士后的
3、基本信息的输入输出功能.2) 教师与学生、研究生、博士后的信息删除、查询功能 3) 学生三门课程成绩输入输出和计算机平均分(ave)功能. 4) 学生三门课程成绩的单科排序与总分排名输出. 2.3设计说明用派生,继承的方法做.3问题的解决方案及设计思路根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; (2)分析系统中的各个实体及它们之间的关系包括属性和行为; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述(包括属性和方法); (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试;
4、 (8)完成系统总结报告以及系统使用说明书. 4 系统分析与设计4.1 系统功能模块大学师生管理程序成绩排序求平均分英 语高等数学数据结构总 分信息修改教 师研究生大学生博士后信息录入教 师研究生大学生博士后教师信息删除通过编 号研究生博士后大学生教师信息查询通过编 号研究生博士后大学生英 语高等数学数据结构图4-1 系统功能模块图1) 信息录入功能模块:信息录入模块是简单成绩管理系统首先要执行的一个基本模块.该模块的功能即教师、大学生、研究生、博士后的各项数据的输入,只有当数据存入才能进行其他的功能.教师包括:编号,姓名,职称和教研室数据,大学生包括:编号,姓名,性别,班号,英语,高等数学和
5、数据结构, 研究生包括:编号,姓名,性别,班号,指导教师和研究方法, 博士后包括:编号,姓名,性别,班号,指导教师,研究方法,职称和教研室数据.2) 信息修改功能模块:实现已录入信息的修改,用新输入的信息覆盖原来的信息.3) 信息删除功能模块:通过编号删除已录入的成员信息.4) 信息查询功能模块:通过编号查找已录入的成员信息.5) 求平均分功能模块:该功能求出大学生英语、高等数学、数据结构三门的平均分.6) 成绩排序功能模块:该功能实现大学生英语、高等数学、数据结构和总分的排序,此处用冒泡排序法实现.4.2 系统流程4.2.1 主函数流程图开始密码是否正确?输入密码出现欢迎界面N NYY显示菜
6、单用户输入根据输入执行相应的操作退出?结束画面结 束 图4-2 主函数流程图4.2.2 资料修改函数流程图开始主菜单修改菜单输入“3”输入选择51234教师大学生研究生输入编号选择要修改的项目输入修改内容是否继续修改YN博士后结 束图4-3 资料修改函数流程图4.3 类的层次teachera,c,d,b,input1(),input2(),output1(),output2(),change(),delete(),search();undergraduatem,s,t,n,e,f,g,z,input3(),input4(),output3(),output4(),change(),delete
7、(),search(),getnum();postdoctoralgraduate_studentdirector,method,input5(),output5();图4-4 类的层次图其中:(1) teacher类的a-编号,c-姓名,d-职称,b-教研室数据,input1()为输入编号和姓名的成员函数,input2()为输入职称和教研室数据的成员函数,output1()为输出编号和姓名的成员函数,output2()为输出职称和教研室数据的成员函数,change()为修改教师资料数据的成员函数,delete()为删除教师资料数据的成员函数,search()为查找教师资料数据的成员函数.(2
8、) undergraduate类的m-编号,s-姓名,t-性别,n-班号,e-英语成绩,f-高等数学成绩,g-数据结构成绩,z-总分,input3()为输入编号、姓名性别和班号的成员函数,input4()为输入英语、高等数学和数据结构成绩的成员函数,output3()为输出编号、姓名性别和班号的成员函数,output4()为输出英语、高等数学和数据结构成绩的成员函数,change()为修改大学生资料数据的成员函数,delete()为删除大学生资料数据的成员函数,search()为查找大学生资料数据的成员函数,getnum()为求得录入大学生人数个数的成员函数.(3) graduate_stud
9、ent类的director-指导教师,method-研究方法,input5()为输入指导教师和研究方法的成员函数,output5()为输出指导教师和研究方法的成员函数. graduate_student类是undergraduate类的继承,继承了其m-编号,s-姓名,t-性别,n-班号.(4) postdoctoral类继承了teacher类和graduate_student类.5 系统调试出现的问题5.1资料录入问题 问题:录入师生资料超过一次时,在主菜单中选择“5. 显示师生资料”后,显示资料中前一次的师生资料将被后一次的所覆盖,即不能执行资料增加功能.代码及修改:void main()
10、. int ch,a,i1,i2,i3,i4,j; / 改为:int ch,a,i1=0,i2=0,i3=0,i4=0,j; int *d1=&i1,*d2=&i2,*d3=&i3,*d4=&i4; char choice; do system("cls"); menu1(); switch(ch) case 1: do system("cls"); menu2(); if(a=1) i1=0; / 删除该语句; do i1+; while(choice='Y'); if(a=2) i2=0; / 删除该语
11、句; do i2+; while(choice='Y'); if(a=3) i3=0; / 删除该语句; do i3+; while(choice='Y'); if(a=4) i4=0; / 删除该语句; do i4+; while(choice='Y'); while(a!=5);break; while(ch!=8); 5.2资料删除问题 问题:删除某一人员资料时,在主菜单中选择“5. 显示师生资料”后,显示资料中该已被删除的人员资料仅仅是被同一类的下一个人员的资料所覆盖,即出现了两个相同的人员资料,总人员数目并未减少.代码及修改:void
12、Delete(teacher t,int i1) / 改为:void Delete(teacher t,int *d1)system("cls");teacher tt; / 增加:int r=*d1;char number20;cout<<"请输入要删除的教师的编号:"cin>>number;cout<<endl;for(int i=0;i<i1;i+) / 改为:for(int i=0;i<r;i+)if(strcmp(ti.a,number)=0)for(int j=i;j<i1;j+) / 改
13、为:for(int j=i;j<r;j+)tt=tj; tj=tj+1; / 增加:(*d1) -; cout<<"编号"<<number<<"的教师的资料已删除!"<<endl; break;if(i=i1) / 改为:if(i=r)cout<<" 无此教师的资料!"<<endl;6 关键程序代码6.1资料修改函数代码(教师)void Change(teacher t,int i1)system("cls");int choice;ch
14、ar number20,name20,duty20,date20,c;cout<<"请输入要修改的教师的编号:"cin>>number;for(int i=0;i<i1;i+)if(strcmp(ti.a,number)=0) cout<<" 1. 编号 2. 姓名"<<endl;cout<<" 3. 职称 4. 教研室数据"<<endl;docout<<"请选择要修改的项目:" cin>>choice; whil
15、e(!(choice>=1&&choice<=4) cout<<"输入错误,请重新输入:" cin>>choice; if(choice=1) cout<<"请输入修改后的编号:" cin>>number; strcpy(ti.a,number); if(choice=2) . if(choice=3) . if(choice=4) . cout<<endl;cout<<"资料修改成功!是否继续修改?(Y/N):"cin>>
16、c;while(c!='Y'&&c!='N')cout<<"输入错误,请重新输入:"cin>>c;while(c='Y');break;if(i=i1)cout<<" 无此教师的资料!"<<endl;cout<<"按任意键返回." getch();6.2资料删除函数代码(教师)void Delete(teacher t,int *d1)system("cls");teacher tt;int
17、r=*d1;char number20;cout<<"请输入要删除的教师的编号:"cin>>number;cout<<endl;for(int i=0;i<r;i+)if(strcmp(ti.a,number)=0)for(int j=i;j<r;j+)tt=tj; tj=tj+1;(*d1)-; cout<<"编号"<<number<<"的教师的资料已删除!"<<endl; break;if(i=r)cout<<"
18、无此教师的资料!"<<endl;6.3 学生成绩排名函数代码void sort(undergraduate u,int *d2) int a; do system("cls"); cout<<"- 1. 英 语成绩排名 -"<<endl; cout<<"- 2. 高等数学成绩排名 -"<<endl; cout<<"- 3. 数据结构成绩排名 -"<<endl; cout<<"- 4. 总 分成绩排名
19、-"<<endl; cout<<"- 5. 返 回 主 菜 单 -"<<endl; cout<<"请输入您的选择(15):" cin>>a; if(a<1|a>5)cout<<"输入错误,请重新输入!"if(a=1) undergraduate s; for(int i=0;i<*d2;i+)for(int j=0;j<*d2-i;j+) if(uj.e<uj+1.e)s=uj; uj=uj+1; uj+1=s;for(i=
20、0;i<*d2;i+)cout<<"编号:"<<setw(3)<<ui.m<<" 姓名:"<<setw(4)<<ui.s<<" 班号:"<<ui.n<<endl; cout<<endl;cout<<"按任意键返回." getch();if(a=2) . if(a=3) . if(a=4) . while(a!=5);7 总结和体会这次的课程设计,从最先的选题,到策划、分工、再到系
21、统代码的合并、修改,最后调试并一步步完善,看似简单的命题,但在编辑时稍有不慎就会错误、漏洞.通过这次锻炼,我了解了很多,学习了很多,也得到了很多.1、以彼之长,补己之短,在作业中学习并帮助伙伴,我深深体会到合作的重要性.2、程序越复杂,越容易出现错误,一处改动,相应的多处就得一并修改,因此编辑时须一直保持警惕,这次编程提高了我的耐性和谨慎性.3、程序调试成功后,还可使代码简化、美化界面或增加提示语句.在调试中我学会了一种精益求精的态度. 4、完成课程设计,我体会到了成功的喜悦.参考书目1 郑莉、董渊、张瑞丰编著.C+语言程序设计(第三版)M.清华大学出版社,2004.12 戴锋编著.Visua
22、l C+程序设计基础M.清华大学出版社,2001.43 Stanley B.Lippman编著.C+ Primer中文版(第3版)M.中国电力出版社,1989年4 谭浩强编著.C程序设计(第三版)M.清华大学出版社,2005.7附录1:源程序清单#include <iostream>#include <iomanip>#include <cstring>#include <conio.h>using namespace std;class teacherpublic:char a20;char c20;char d20;char b20;publ
23、ic:void input1();void input2();void output1();void output2();friend void Change(teacher t,int i1);friend void Delete(teacher t,int *d1);friend void Search(teacher t,int i1);class undergraduate public:char m20;char s20; char t;char n20;float e,f,g,z;public:void input3();void input4();void output3();v
24、oid output4(); friend void Change(undergraduate u,int i2);friend void Delete(undergraduate u,int *d2);friend void Search(undergraduate u,int i2);class graduate_student:public undergraduatepublic:char director20;char method20;public:void input5();void output5();class postdoctoral:public teacher,publi
25、c graduate_student;void teacher:input1()cout<<" 编号:"cin>>a ; cout<<" 姓名:"cin>>c ;void teacher:input2()cout<<" 职称:"cin>>d ;cout<<" 教研室数据:"cin>>b ;void undergraduate:input3()cout<<" 编号:"cin>>m
26、 ;cout<<" 姓名:"cin>>s ;cout<<" 性别:" cin>>t;cout<<" 班号:"cin>>n ;void undergraduate:input4() cout<<" 英语成绩:"cin>>e ;cout<<" 高等数学成绩:"cin>>f ; cout<<" 数据结构成绩:"cin>>g ; z=e+f+
27、g;cout<<endl;void graduate_student:input5() cout<<" 指导教师:" cin>>director; cout<<" 研究方法:" cin>>method; cout<<endl;void teacher:output1()cout<<" 编号:"<<a<<endl;cout<<" 姓名:"<<c<<endl;void teac
28、her:output2()cout<<" 职称:"<<d<<endl;cout<<" 教研室数据:"<<b<<endl;void undergraduate:output3()cout<<" 编号:"<<m<<endl;cout<<" 姓名:"<<s<<endl;cout<<" 性别:"<<t<<endl;cout&l
29、t;<" 班号:"<<n<<endl;void undergraduate:output4()cout<<" 英语:"<<e<<endl;cout<<" 高等数学:"<<f<<endl;cout<<" 数据结构:"<<g<<endl;void graduate_student:output5()cout<<" 指导教师:"<<direc
30、tor<<endl;cout<<" 教学方法:"<<method<<endl;void Change(teacher t,int i1)system("cls");int choice;char number20,name20,duty20,date20,c;cout<<"请输入要修改的教师的编号:"cin>>number;for(int i=0;i<i1;i+)if(strcmp(ti.a,number)=0) cout<<" 1.
31、编号 2. 姓名"<<endl;cout<<" 3. 职称 4. 教研室数据"<<endl;docout<<"请选择要修改的项目:" cin>>choice; while(!(choice>=1&&choice<=4) cout<<"输入错误,请重新输入:" cin>>choice; if(choice=1) cout<<"请输入修改后的编号:" cin>>number;
32、 strcpy(ti.a,number); if(choice=2)cout<<"请输入修改后的姓名:" cin>>name; strcpy(ti.c,name); if(choice=3) cout<<"请输入修改后的职称:" cin>>duty; strcpy(ti.d,duty); if(choice=4) cout<<"请输入修改后的教研室数据:" cin>>date; strcpy(ti.b,date); cout<<endl;cout<
33、;<"资料修改成功!是否继续修改?(Y/N):"cin>>c;while(c!='Y'&&c!='N')cout<<"输入错误,请重新输入:"cin>>c;while(c='Y');break;if(i=i1)cout<<" 无此教师的资料!"<<endl;cout<<"按任意键返回." getch();void Change(undergraduate u,int i2)s
34、ystem("cls");int choice;char number20,name20,sex,clas20,c;float English,math,date;cout<<"请输入要修改的大学生的编号:"cin>>number;for(int i=0;i<i2;i+)if(strcmp(ui.m,number)=0) cout<<" 1. 编号 2. 姓名"<<endl;cout<<" 3. 性别 4. 班号"<<endl;cout&
35、lt;<" 5. 英语成绩 6. 高等数学成绩"<<endl; cout<<" 7. 数据结构成绩"<<endl;do cout<<"请选择要修改的项目:" cin>>choice; while(!(choice>=1&&choice<=7) cout<<"输入错误,请重新输入:" cin>>choice; if(choice=1) cout<<"请输入修改后的编号:"
36、; cin>>number; strcpy(ui.m,number); if(choice=2)cout<<"请输入修改后的姓名:" cin>>name; strcpy(ui.s,name); if(choice=3) cout<<"请输入修改后的性别:" cin>>sex; ui.t=sex; if(choice=4) cout<<"请输入修改后的班号:" cin>>clas; strcpy(ui.n,clas);if(choice=5) cout&
37、lt;<"请输入修改后的英语成绩:" cin>>English; ui.e=English;if(choice=6) cout<<"请输入修改后的高等数学成绩:" cin>>math; ui.f=math;if(choice=7) cout<<"请输入修改后的数据结构成绩:" cin>>date; ui.g=date; cout<<endl;cout<<"资料修改成功!是否继续修改?(Y/N):"cin>>c;wh
38、ile(c!='Y'&&c!='N')cout<<"输入错误,请重新输入:"cin>>c;while(c='Y');break;if(i=i2)cout<<" 无此大学生的资料!"<<endl;cout<<"按任意键返回." getch();void Change(graduate_student g,int i3)system("cls");int choice;char number20,
39、name20,sex,clas20,direct20,meth20,c;cout<<"请输入要修改的研究生的编号:"cin>>number;for(int i=0;i<i3;i+)if(strcmp(gi.m,number)=0) cout<<" 1. 编号 2. 姓名"<<endl;cout<<" 3. 性别 4. 班号"<<endl;cout<<" 5. 指导教师 6. 研究方法"<<endl;do cout&
40、lt;<"请选择要修改的项目:" cin>>choice; while(!(choice>=1&&choice<=6) cout<<"输入错误,请重新输入:" cin>>choice; if(choice=1) cout<<"请输入修改后的编号:" cin>>number; strcpy(gi.m,number); if(choice=2) cout<<"请输入修改后的姓名:" cin>>name;
41、 strcpy(gi.s,name); if(choice=3) cout<<"请输入修改后的性别:" cin>>sex; gi.t=sex; if(choice=4) cout<<"请输入修改后的班号:" cin>>clas; strcpy(gi.n,clas);if(choice=5) cout<<"请输入修改后的指导教师:" cin>>direct; strcpy(gi.director,direct);if(choice=6) cout<<&q
42、uot;请输入修改后的研究方法:" cin>>meth; strcpy(gi.method,meth); cout<<endl;cout<<"资料修改成功!是否继续修改?(Y/N):"cin>>c;while(c!='Y'&&c!='N')cout<<"输入错误,请重新输入:"cin>>c;while(c='Y');break;if(i=i3)cout<<" 无此研究生的资料!"
43、<<endl;cout<<"按任意键返回." getch();void Change(postdoctoral p,int i4)system("cls");int choice;char number20,name20,sex,clas20,duty20,date20,direct20,meth20,c;cout<<"请输入要修改的博士后的编号:"cin>>number;for(int i=0;i<i4;i+)if(strcmp(pi.m,number)=0) cout<&
44、lt;" 1. 编号 2. 姓名"<<endl;cout<<" 3. 性别 4. 班号"<<endl; cout<<" 5. 职称 6. 教研室数据"<<endl;cout<<" 7. 指导教师 8. 研究方法"<<endl;docout<<endl;cout<<"请选择要修改的项目:" cin>>choice; while(!(choice>=1&&ch
45、oice<=8) cout<<"输入错误,请重新输入:" cin>>choice; if(choice=1) cout<<"请输入修改后的编号:" cin>>number; strcpy(pi.m,number); if(choice=2) cout<<"请输入修改后的姓名:" cin>>name; strcpy(pi.s,name); if(choice=3) cout<<"请输入修改后的性别:" cin>>se
46、x; pi.t=sex; if(choice=4) cout<<"请输入修改后的班号:" cin>>clas; strcpy(pi.n,clas); if(choice=5) cout<<"请输入修改后的职称:" cin>>duty; strcpy(pi.d,duty); if(choice=6) cout<<"请输入修改后的教研室数据:" cin>>date; strcpy(pi.b,date);if(choice=7) cout<<"请输
47、入修改后的指导教师:" cin>>direct; strcpy(pi.director,direct);if(choice=8) cout<<"请输入修改后的研究方法:" cin>>meth; strcpy(pi.method,meth); cout<<endl;cout<<"资料修改成功!是否继续修改?(Y/N):"cin>>c;while(c!='Y'&&c!='N')cout<<"输入错误,请重新输
48、入:"cin>>c;while(c='Y');break;if(i=i4)cout<<" 无此博士后的资料!"<<endl;cout<<"按任意键返回." getch();void Delete(teacher t,int *d1)system("cls");teacher tt;int r=*d1;char number20;cout<<"请输入要删除的教师的编号:"cin>>number;cout<<e
49、ndl;for(int i=0;i<r;i+)if(strcmp(ti.a,number)=0)for(int j=i;j<r;j+)tt=tj; tj=tj+1;(*d1)-; cout<<"编号"<<number<<"的教师的资料已删除!"<<endl; break;if(i=r)cout<<" 无此教师的资料!"<<endl;void Delete(undergraduate u,int *d2)system("cls");undergraduate uu;int r=*d2;char number20;cout<<"请输入要删除的大学生的编号:"cin>>number;cout<<endl;for(int i=0;i<r;i+)if(strcmp(ui.m,number)=0)for(int j=i;j<r;j+)uu=uj; uj=uj+1;(*d2)-;cout<<"编号"&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 列车消防安全课件
- 专硕学硕就业选择指南
- 乘务专业职业发展路径
- 胃肠减压的护理经验分享
- 华润燃气2026届校园招聘“菁英计划·管培生”备考题库及答案详解(新)
- 色彩肌肤护理与美丽秘诀
- 胎儿电子监护的社会影响
- 中国邮政储蓄银行博士后科研工作站2026年招聘备考题库及参考答案详解1套
- 数据存储运维安全守秘承诺函范文9篇
- 夏夜星空下的约定美好的夜晚写景作文(14篇)
- 初中语文新课程标准与解读课件
- 无人机装调检修工培训计划及大纲
- 中建通风与空调施工方案
- 高考语言运用题型之长短句变换 学案(含答案)
- 春よ、来い(春天来了)高木绫子演奏长笛曲谱钢琴伴奏
- ARJ21机型理论知识考试题库(汇总版)
- 2023年娄底市建设系统事业单位招聘考试笔试模拟试题及答案解析
- GB/T 4623-2014环形混凝土电杆
- GB/T 32065.4-2015海洋仪器环境试验方法第4部分:高温试验
- GB/T 16823.3-2010紧固件扭矩-夹紧力试验
- 中介服务费承诺书
评论
0/150
提交评论