C++课程设计报告 学籍管理系统Word文档下载推荐.docx
《C++课程设计报告 学籍管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告 学籍管理系统Word文档下载推荐.docx(42页珍藏版)》请在冰点文库上搜索。
voidsetP1(double);
voidsetP2(double);
voidsetCla(int);
voidsetNumber(int);
voidsetAge(int);
voidsetName(string);
voidsetSex(string);
voidsetId(string);
voidsetPlace(string);
//类中各数据的设置函数
doublegetP1();
//获取学分
doublegetP2();
//获取绩点
intgetCla();
//获取班级
intgetNumber();
//获取学号
intgetAge();
//获取年龄
stringgetName();
//获取姓名
stringgetSex();
//获取性别
stringgetId();
//获取身份证号码
stringgetPlace();
//获取籍贯
friendofstream&
operator<
<
(ofstream&
output,Info&
ToT);
//重载输出文件流操作符
friendifstream&
operator>
>
(ifstream&
input,Info&
//重载输入文件流操作符
};
(2).ClassStu//stu类的声明
{
Stu();
//构造函数
voidadd();
//添加记录的函数
voiddel();
//删除记录的函数
voidsearch();
//查找记录的函数
voidshow();
//显示记录的函数
(3).ClassCla//班级管理子系统类的声明
voidshowCla();
//显示全部班级的函数
voidshowStu();
//显示某班学生的函数
voidshowStuInfo();
//显示某班学生的详细信息的函数
voidshowGra();
//显示某班成绩的函数
voidshowSort();
//显示某班成绩排序的函数
(4).ClassGra//成绩管理子系统类的声明
voidGhigh();
//查询学分高于某值的学生的函数
voidGlow();
//查询学分低于某值的学生的函数
voidPhigh();
//查询绩点高于某值的学生的函数
voidPlow();
//查询绩点低于某值的学生的函数
voidsort();
(5).ClassMenu//主菜单类的声明
voidmainmenu();
//学籍管理系统主菜单函数
voidexitmenu();
//退出学籍管理系统的函数
voidclassmenu();
//班级管理子系统菜单函数
voidgrademenu();
//成绩管理子系统菜单函数
**************************共五个类************************
六、模块分析
1.添加模块
系统将提示用户输入新添加的学生的信息,储存在文件中
2.查找模块
首先由用户输入要查找的学生姓名或学号,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的学生资料。
3.显示模块
显示模块将输出所有学生的详细信息。
4.删除模块
根据用户输入的学号删除相应学生信息。
5.班级管理子系统
1.显示全部班级
2.查询某班学生
3.查询某班学生详细信息
4.查询某班成绩信息
5.查询某班成绩排序
6.退出子系统
6.成绩管理子系统
1.查询学分高于某值的学生
2.查询学分低于某值的学生
3.查询绩点高于某值的学生
4.查询绩点低于某值的学生
5.所有学生成绩排序
七、比较有特色的函数
1.排序
voidqsort(Infob[],intl,intr)
inti,j;
doublemid1,mid2;
Infox;
i=l;
j=r;
mid1=(b[(l+r)>
1].getP1());
mid2=(b[(l+r)>
1].getP2());
do{
while(b[i].getP1()<
mid1||b[i].getP1()==mid1&
&
b[i].getP2()<
mid2)i++;
while(b[j].getP1()>
mid1||b[j].getP2()==mid2&
b[j].getP2()>
mid2)j--;
if(i<
=j)
{
x=b[i];
b[i]=b[j];
b[j]=x;
i++;
j--;
}
}while(i<
=j);
if(i<
r)qsort(b,i,r);
if(j>
l)qsort(b,l,j);
}
2.按照姓名or学号查找的函数
voidStu:
:
search()
strings;
/*记录输入的姓名*/
inti,num;
/*记录输入的学号*/
ifstreamin("
code.dat"
);
cout<
"
\t\t\t记录查询可以按照以下两种方式进行\n\n"
endl;
\t\t\t按照姓名查询请按1,按照学号查询请按2:
"
cin>
i;
if(i==1)
cout<
\t\t\t请输入学生姓名:
cin>
s;
处理姓名--学号两种方式
}
if(i==2)
\t\t\t请输入学生学号:
num;
while(!
in.eof())
in>
one;
if(i==1)
if(one.getName()==s)
按照姓名查找并输出
{
\t学号:
one.getNumber()<
\t姓名:
one.getName()<
\t性别:
one.getSex()<
endl
<
\t年龄:
one.getAge()<
\t身份证号:
one.getId()<
\t籍贯:
one.getPlace()<
\t班级:
one.getCla()<
\t学分:
one.getP1()<
\t绩点:
one.getP2()<
cout<
\t-------------------------------------------------------------------------"
}
continue;
if(i==2)
if(one.getNumber()==num)
\t---------------------------------------------------------------------------"
}/*按照学号查找并输出*/
in.close();
\t\t\t按任意键继续......"
cin.ignore();
getchar();
八、存在的不足与对策
欠缺对输入异常的处理,当所输入数据不符合要求时系统出现错误。
运行程序时严格按照提示输入信息。
九、程序源代码
#include"
Stu.h"
Menu.h"
Cla.h"
Gra.h"
#include<
iostream>
usingnamespacestd;
intmain()
Menua;
Stub;
Claz;
Grazz;
intx,y;
charc;
ofstreamout("
out.close();
while
(1)
a.mainmenu();
x;
switch(x)
case1:
b.add();
while
(1)
是否继续添加记录(y/n)?
;
cin>
c;
if(c=='
y'
)b.add();
elsebreak;
}//添加记录
break;
case2:
b.search();
break;
//查找记录
case3:
b.del();
//删除记录
case4:
b.show();
//显示记录
case5:
while
(1)
{
a.classmenu();
cin>
y;
switch(y)
{
case1:
z.showCla();
case2:
z.showStu();
case3:
z.showStuInfo();
case4:
z.showGra();
case5:
z.showSort();
case6:
}
if(y==6)break;
}
break;
}//进入班级管理子系统
case6:
a.grademenu();
zz.Ghigh();
zz.Glow();
zz.Phigh();
break;
zz.Plow();
zz.sort();
}//进入成绩管理子系统
case7:
a.exitmenu();
//退出主程序
}***************************以上为主程序**************************
*****************************以下为界面的实现程序************************
voidMenu:
mainmenu()
\n\n\n\t\t\t★★★★★学籍管理系统★★★★★\n\n\n"
\t\t※※※※※※※※※※※※※※※※※※※※※※※\n"
\t\t※1.添加记录※\n"
\t\t※2.查询记录※\n"
\t\t※3.删除记录※\n"
\t\t※4.显示记录※\n"
\t\t※5.☆班级管理※\n"
\t\t※6.☆成绩管理※\n"
\t\t※7.退出系统※\n"
\t\t※※\n"
\t\t\t请选择(1,2,3,4,5,6,7);
//主界面
classmenu()
\n\n\n\t\t\t★★★★★班级管理子系统★★★★★\n\n\n"
\t\t※1.显示全部班级※\n"
\t\t※2.查询某班学生※\n"
\t\t※3.查询某班学生详细信息※\n"
\t\t※4.查询某班成绩信息※\n"
\t\t※5.查询某班成绩排序※\n"
\t\t※6.退出子系统※\n"
\t\t\t请选择(1,2,3,4,5,6);
//子系统界面
grademenu()
\n\n\n\t\t\t★★★★★成绩管理子系统★★★★★\n\n\n"
\t\t※1.查询学分高于某值的学生※\n"
\t\t※2.查询学分低于某值的学生※\n"
\t\t※3.查询绩点高于某值的学生※\n"
\t\t※4.查询绩点低于某值的学生※\n"
\t\t※5.所有学生成绩排序※\n"
//子系统界面
*******************以下为对数据添加、查询、删除、显示的实现程序******************
Case1(添加记录),Case2(查询记录),Cas3(删除记录),Case4(显示记录)
Info.h"
Info:
Info()//构造函数
Info(Info&
obj)//拷贝构造函数
voidInfo:
setP1(doublea)
setP2(doublea)
setCla(inta)
setNumber(inta)
设置数据
setName(stringa)
setAge(inta)
setSex(stringa)
setPlace(stringa)
setId(stringa)
intInfo:
getNumber()
getAge()
stringInfo:
getName()
获取数据
getSex()
getId()
getCla()
doubleInfo:
getP1()
getP2()
getPlace()ofstream&
operator<
output,Info&
ToT)
output<
ToT.getNumber()<
\n"
ToT.getName()<
<
ToT.getSex()<
ToT.getAge()<
ToT.getId()<
ToT.getPlace()<
ToT.getP1()
ToT.getP2()<
ToT.getCla()<
endl<
returnoutput;
}//重载<
操作符
ifstream&
operator>
input,Info&
intnumber;
intage;
doublepoint1;
doublepoint2;
intcla;
stringname;
stringsex;
stringid;
stringplace;
input>
number>
name>
sex>
age>
id>
place>
point1>
point2>
cla;
ToT.setNumber(number);
ToT.setName(name);
ToT.setSex(sex);
ToT.setAge(age);
ToT.setId(id);
ToT.setPlace(place);
ToT.setCla(cla);
ToT.setP1(point1);
ToT.setP2(point2);
returninput;
}//重载>
***************以下为班级管理子系统的实现程序***********
voidCla:
showCla()
intf[1000];
inti,flag;
f[0]=0;
ifstreaminput("
input.eof())
flag=0;
input>
a;
if(input.fail())break;
for(i=1;
i<
=f[0];
i++)
if(f[i]==a.getCla())
flag=1;
if(!
flag)
f[0]++;
f[f[0]]=a.getCla();
input.close();
所录入的班级共:
f[0]<
for(i=1;
f[i]<
按任意键继续......"
***************************以上为显示班级的程序***************************
showStu()
inti,num,all=0;
--------------------------------------------------------------"
请输入您想查询的班级号:
该班级所包含的学生有:
if(a.getCla()==num)
all++;
cout<
学号:
a.getNumber()<
\t"
姓名:
a.getName()<
该班级共有学生数为:
all<
--------------------------