C++课程设计学校人员信息管理系统报告.docx
《C++课程设计学校人员信息管理系统报告.docx》由会员分享,可在线阅读,更多相关《C++课程设计学校人员信息管理系统报告.docx(27页珍藏版)》请在冰点文库上搜索。
C++课程设计学校人员信息管理系统报告
C++课程设计报告
课程设计题目:
学校人员信息管理系统
第一部分
1.目的及要求
目的:
要求学生达到熟练掌握C++语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,并且能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题.
要求:
利用面向对象的方法以及C++的编程思想来完成系统的设计;要求在设计的过程中,建立清晰的类层次;在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能.
2.设计题目描述
用c++设计一个大学教师和学生管理程序,教师包括编号(a),姓名(c),职称(d)和教研室数据(b)的数据输入输出;大学生包括编号(m),姓名(s),性别(t),班号(n),英语(e),高等数学(f)和数据结构(g)三门课程成绩输入输出和计算机平均分(ave);研究生包括编号,姓名,性别,班号,指导教师和研究方法数据输入输出;博士后数据的输入输出;博士后既是教师也是研究生.(用派生,继承的方法可以做)
3.解决方案及设计思路
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系包括属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
4.系统分析与设计
(1)系统功能模块图:
图4-1系统功能模块图
1)信息录入功能模块:
信息录入模块是简单成绩管理系统首先要执行的一个基本模块.该模块的功能即教师、大学生、研究生、博士后的各项数据的输入,只有当数据存入才能进行其他的功能.
教师包括:
编号,姓名,职称和教研室数据,
大学生包括:
编号,姓名,性别,班号,英语,高等数学和数据结构,
研究生包括:
编号,姓名,性别,班号,指导教师和研究方法,
博士后包括:
编号,姓名,性别,班号,指导教师,研究方法,职称和教研室数据.
2)信息修改功能模块:
实现已录入信息的修改,用新输入的信息覆盖原来的信息.
3)信息删除功能模块:
通过编号删除已录入的成员信息.
4)信息查询功能模块:
通过编号查找已录入的成员信息.
5)求平均分功能模块:
该功能求出大学生英语、高等数学、数据结构三门的平均分.
6)成绩排序功能模块:
该功能实现大学生英语、高等数学、数据结构和总分的排序,此处用冒泡排序法实现.
(2)系统主函数流程图:
图4-2主函数流程图
(3)类的层次
图4-3类的层次图
其中:
1)teacher类的a-编号,c-姓名,d-职称,b-教研室数据,input1()为输入编号和姓名的成员函数,input2()为输入职称和教研室数据的成员函数,output1()为输出编号和姓名的成员函数,output2()为输出职称和教研室数据的成员函数,change()为修改教师资料数据的成员函数,delete()为删除教师资料数据的成员函数,search()为查找教师资料数据的成员函数.
2)undergraduate类的m-编号,s-姓名,t-性别,n-班号,e-英语成绩,f-高等数学成绩,g-数据结构成绩,z-总分,input3()为输入编号、姓名性别和班号的成员函数,input4()为输入英语、高等数学和数据结构成绩的成员函数,output3()为输出编号、姓名性别和班号的成员函数,output4()为输出英语、高等数学和数据结构成绩的成员函数,change()为修改大学生资料数据的成员函数,delete()为删除大学生资料数据的成员函数,search()为查找大学生资料数据的成员函数,getnum()为求得录入大学生人数个数的成员函数.
3)graduate_student类的director-指导教师,method-研究方法,input5()为输入指导教师和研究方法的成员函数,output5()为输出指导教师和研究方法的成员函数.graduate_student类是undergraduate类的继承,继承了其m-编号,s-姓名,t-性别,n-班号.
4)postdoctoral类继承了teacher类和graduate_student类.
第二部分
1.调试过程
2.部分关键代码
大学生资料修改的函数代码
voidChange(undergraduateu[],inti2)
{
system("cls");
intchoice;
charnumber[20],name[20],sex,clas[20],c;
floatEnglish,math,date;
cout<<"请输入要修改的大学生的编号:
";
cin>>number;
for(inti=0;i{if(strcmp(u[i].m,number)==0)
{
cout<<"1.编号2.姓名"<cout<<"3.性别4.班号"<cout<<"5.英语成绩6.高等数学成绩"<cout<<"7.数据结构成绩"<do
{
cout<<"请选择要修改的项目:
";
cin>>choice;
while(!
(choice>=1&&choice<=7))
{
cout<<"输入错误,请重新输入:
";
cin>>choice;
}
if(choice==1)
{
cout<<"请输入修改后的编号:
";
cin>>number;
strcpy(u[i].m,number);
}
if(choice==2)
{
cout<<"请输入修改后的姓名:
";
cin>>name;
strcpy(u[i].s,name);
}
if(choice==3)
{
cout<<"请输入修改后的性别:
";
cin>>sex;
u[i].t=sex;
}
if(choice==4)
{
cout<<"请输入修改后的班号:
";
cin>>clas;
strcpy(u[i].n,clas);
}
if(choice==5)
{
cout<<"请输入修改后的英语成绩:
";
cin>>English;
u[i].e=English;
}
if(choice==6)
{
cout<<"请输入修改后的高等数学成绩:
";
cin>>math;
u[i].f=math;
}
if(choice==7)
{
cout<<"请输入修改后的数据结构成绩:
";
cin>>date;
u[i].g=date;
}
cout<cout<<"资料修改成功!
是否继续修改?
(Y/N):
";
cin>>c;
while(c!
='Y'&&c!
='N')
{
cout<<"输入错误,请重新输入:
";
cin>>c;
}
}while(c=='Y');
break;
}
}
if(i==i2)
{
cout<<"无此大学生的资料!
"<cout<<"按任意键返回...";
getch();
}
}
教师资料删除的函数代码
voidDelete(teachert[],int*d1)
{
system("cls");
teachertt;
intr=*d1;
charnumber[20];
cout<<"请输入要删除的教师的编号:
";
cin>>number;
cout<for(inti=0;i{
if(strcmp(t[i].a,number)==0)
{
for(intj=i;j{
tt=t[j];
t[j]=t[j+1];
}
(*d1)--;
cout<<"编号"<"<break;
}
}
if(i==r)
{
cout<<"无此教师的资料!
"<}
}
学生成绩排名代码
voidsort(undergraduateu[],int*d2)
{
inta;
do
{
system("cls");
cout<<"---------1.英语成绩排名---------"<cout<<"---------2.高等数学成绩排名---------"<cout<<"---------3.数据结构成绩排名---------"<cout<<"---------4.总分成绩排名---------"<cout<<"---------5.返回主菜单---------"<cout<<"请输入您的选择(1~5):
";
cin>>a;
if(a<1||a>5)
cout<<"输入错误,请重新输入!
";
if(a==1)
{
undergraduates;
for(inti=0;i<*d2;i++)
{
for(intj=0;j<*d2-i;j++)
if(u[j].e
{
s=u[j];
u[j]=u[j+1];
u[j+1]=s;
}
}
for(i=0;i<*d2;i++)
{
cout<<"编号:
"<"
<"<
cout<}
cout<<"按任意键返回...";
getch();
}
if(a==2)
{......}
if(a==3)
{......}
if(a==4)
{......}
}while(a!
=5);
}
主函数
voidmain()
{
charc;
inti,m=0;
charb[7];
charpass[7]="111111";
cout<<"欢迎您使用学校人员信息管理系统"<cout<<"管理人:
赖玉蕾"<cout<<"***********************************************************************"<cout<<"请输入6位密码登录:
";
do
{
for(i=0;i<6;i++)
{
c=getch();
b[i]=c;
cout<<"*";
}
getch();
b[6]='\0';
if(strcmp(pass,b)!
=0)
{
m++;
cout<"<}
else
{
cout<-----------------"<getch();
break;
}
}while(m<3);
if(m>=3)
{
system("cls");
cout<cout<<"\t\t\t连续三次输入错误,强制退出程序!
"<exit(0);
}
teachert[20];
undergraduateu[20];
graduate_studentg[20];
postdoctoralp[20];
intch,a,i1=0,i2=0,i3=0,i4=0,j;
int*d1=&i1,*d2=&i2,*d3=&i3,*d4=&i4;
charchoice;
do
{
system("cls");
menu1();
cout<<"请输入您的选择(1~8):
";
cin>>ch;
while(!
(ch>=1&&ch<=8))
{
cout<<"输入错误,请重新输入:
";
cin>>ch;
}
switch(ch)
{
case1:
do
{
system("cls");
menu2();
cout<<"请输入您的选择(1~5):
";
cin>>a;
while(!
(a>=1&&a<=5))
{
cout<<"输入错误,请重新输入:
";
cin>>a;
}
if(a==1)
{
do
{
system("cls");
cout<<"请输入教师信息:
"<t[i1].input1();
t[i1].input2();
cout<cout<<"是否继续录入?
(Y/N):
";
cin>>choice;
while(choice!
='Y'&&choice!
='N')
{
cout<<"输入错误,请重新输入:
";
cin>>choice;
}
i1++;
}while(choice=='Y');
}
if(a==2)
{
do
{
system("cls");
cout<<"请输入大学生信息:
"<u[i2].input3();
u[i2].input4();
cout<cout<<"是否继续录入?
(Y/N):
";
cin>>choice;
while(choice!
='Y'&&choice!
='N')
{
cout<<"输入错误,请重新输入:
";
cin>>choice;
}
i2++;
}while(choice=='Y');
}
if(a==3)
{
do
{
system("cls");
cout<<"请输入研究生信息:
"<g[i3].input3();
g[i3].input5();
cout<cout<<"是否继续录入?
(Y/N):
";
cin>>choice;
while(choice!
='Y'&&choice!
='N')
{
cout<<"输入错误,请重新输入:
";
cin>>choice;
}
i3++;
}while(choice=='Y');
}
if(a==4)
{
do
{
system("cls");
cout<<"请输入博士后信息:
"<p[i4].input3();
p[i4].input2();
p[i4].input5();
cout<cout<<"是否继续录入?
(Y/N):
";
cin>>choice;
while(choice!
='Y'&&choice!
='N')
{
cout<<"输入错误,请重新输入:
";
cin>>choice;
}
i4++;
}while(choice=='Y');
}
}while(a!
=5);
break;
case2:
do
{
system("cls");
cout<<"资料修改..."<cout<menu2();
cout<<"请输入您的选择(1~5):
";
cin>>a;
while(!
(a>=1&&a<=5))
{
cout<<"输入错误,请重新输入:
";
cin>>a;
}
if(a==1)Change(t,i1);
if(a==2)Change(u,i2);
if(a==3)Change(g,i3);
if(a==4)Change(p,i4);
}while(a!
=5);
break;
case3:
do
{
system("cls");
cout<<"资料删除..."<cout<menu2();
cout<<"请输入您的选择(1~5):
";
cin>>a;
while(!
(a>=1&&a<=5))
{
cout<<"输入错误,请重新输入:
";
cin>>a;
}
if(a==1)Delete(t,d1);
if(a==2)Delete(u,d2);
if(a==3)Delete(g,d3);
if(a==4)Delete(p,d4);
if(!
(a==5))
{
cout<<"按任意键返回...";
getch();
}
}while(a!
=5);
break;
case4:
do
{
system("cls");
cout<<"资料查询..."<cout<menu2();
cout<<"请输入您的选择(1~5):
";
cin>>a;
while(!
(a>=1&&a<=5))
{
cout<<"输入错误,请重新输入:
";
cin>>a;
}
if(a==1)Search(t,i1);
if(a==2)Search(u,i2);
if(a==3)Search(g,i3);
if(a==4)Search(p,i4);
if(!
(a==5))
{
cout<<"按任意键返回...";
getch();
}
}while(a!
=5);
break;
case5:
system("cls");
cout<<"教师信息:
"<if(*d1==0)
cout<<"暂无!
"<for(j=0;j<*d1;j++)
{
t[j].output1();
t[j].output2();
cout<}
cout<cout<<"大学生信息:
"<if(*d2==0)
cout<<"暂无!
"<for(j=0;j<*d2;j++)
{
u[j].output3();
u[j].output4();
cout<}
cout<cout<<"研究生信息:
"<if(*d3==0)
cout<<"暂无!
"<for(j=0;j<*d3;j++)
{
g[j].output3();
g[j].output5();
cout<}
cout<cout<<"博士后信息:
"<if(*d4==0)
cout<<"暂无!
"<for(j=0;j<*d4;j++)
{
p[j].output3();
p[j].output2();
p[j].output5();
cout<}
cout<cout<<"按任意键返回主菜单...";
getch();
break;
case6:
ave(u,d2);break;
case7:
sort(u,d2);break;
case8:
system("cls");
cout<cout<<"---------------------感谢您的使用-------------------------"<cout<exit(0);
default:
cout<<"输入错误,请重新选择!
"<}
}while(ch!
=8);
}
第三部分
1.总结:
通过本次课程设计,使我对C++有了更进一步的认识和掌握。
这让我对编程过程有了一个比较清晰的认识,拿到一个题目或一个项目,首先要对其进行深入的了解和分析,可通过查阅资料的方式完成这一步,其次,需要对这个系统设计一个整体的轮廓,再对其整体进行分解,分解成多个小部分,然后对各个小部分的功能的实现编写代码,编写完成之后把各个部分重新梳理合并起来,再一步步地进行功能的完善,最后就完成了该系统的编写和设计。
由于基础不是很好,在编写过程中困难重重,不过通过查阅资料以及在同学和老师的帮助下,多次修改和调试,最终还是顺利地完成了本次课程设计。
这让我学到了很多课堂上学不到的知识,这也是一种宝贵的经验。
编程需要的是细心和耐心,也需要一种精益求精的态度,这使得我锻炼了一番。
同时也发现了自