C++课程设计报告 学籍管理系统.docx
- 文档编号:5573543
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:42
- 大小:339.96KB
C++课程设计报告 学籍管理系统.docx
《C++课程设计报告 学籍管理系统.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告 学籍管理系统.docx(42页珍藏版)》请在冰点文库上搜索。
C++课程设计报告学籍管理系统
南京航空航天大学
《面向对象程序设计语言》课程设计报告
学籍管理系统
学号:
姓名:
日期:
十二、数据测试7
一、需求分析
Ø学籍管理现状
1、目前国内大中专院校众多,在校的学生人数占据了社会人口很大一部分,是社会群体中的新生力量;
2、对学生学籍的管理是各大院校日常管理中不可忽视的一个重要环节;
3、随着计算机等高新科技的发展,对学籍的管理早已不能仅仅满足于纸质文件。
因此,开发出一套计算机学生学籍管理系统显得很有必要。
Ø本系统存在的价值
1、满足了各大院校对学籍管理的强烈要求;
2、力图用最少的代码完成最多的功能,代码简洁没有冗余;
3、系统操作简便明了,根据提示即可进行简便常用的日常学籍管理;
4、占用资源少、需求大、简便易操作,多彩的可视化界面。
综合以上众多优势,证明了本系统存在的价值。
Ø选择C++的理由
C++为了解决程序设计的复杂性,美国贝尔实验室于1980年开始研制一种“带类”的C,到1983年才正式命名为C++。
C++语言吸收了C和Simula67的精髓,具有C无可比拟的优越性。
C++结构清晰、易于维护、已于拓展,同时又不失效率。
(节选自《C++简明教程》(皮德常),电子工业出版社)
综合以上优点,我们选定C++为本次系统的程序设计语言
二、程序的主要功能
1、添加功能:
添加学生的基本信息,包括姓名,学号,性别,年龄,身份证号码,籍贯,班级,学分,绩点
2、删除功能:
按学号对学生的信息进行删除
3、显示功能:
显示所有学生的详细信息
4、查找功能:
选择按照姓名或学号查找学生并显示其详细信息
三、程序运行平台
VS2012
四、系统总框架图
***************************学籍管理系统包含两个子系统*****************
五、程序类的说明
(1).ClassInfo//学生信息Info类的声明
{
public:
Info();//构造函数
Info(Info&obj);//拷贝构造函数
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&ToT);//重载输入文件流操作符
};
(2).ClassStu//stu类的声明
{
public:
Stu();//构造函数
voidadd();//添加记录的函数
voiddel();//删除记录的函数
voidsearch();//查找记录的函数
voidshow();//显示记录的函数
};
(3).ClassCla//班级管理子系统类的声明
{
public:
voidshowCla();//显示全部班级的函数
voidshowStu();//显示某班学生的函数
voidshowStuInfo();//显示某班学生的详细信息的函数
voidshowGra();//显示某班成绩的函数
voidshowSort();//显示某班成绩排序的函数
};
(4).ClassGra//成绩管理子系统类的声明
{
public:
voidGhigh();//查询学分高于某值的学生的函数
voidGlow();//查询学分低于某值的学生的函数
voidPhigh();//查询绩点高于某值的学生的函数
voidPlow();//查询绩点低于某值的学生的函数
voidsort();
};
(5).ClassMenu//主菜单类的声明
{
public:
voidmainmenu();//学籍管理系统主菜单函数
voidexitmenu();//退出学籍管理系统的函数
voidclassmenu();//班级管理子系统菜单函数
voidgrademenu();//成绩管理子系统菜单函数
};
**************************共五个类************************
六、模块分析
1.添加模块
系统将提示用户输入新添加的学生的信息,储存在文件中
2.查找模块
首先由用户输入要查找的学生姓名或学号,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的学生资料。
3.显示模块
显示模块将输出所有学生的详细信息。
4.删除模块
根据用户输入的学号删除相应学生信息。
5.班级管理子系统
1.显示全部班级
2.查询某班学生
3.查询某班学生详细信息
4.查询某班成绩信息
5.查询某班成绩排序
6.退出子系统
6.成绩管理子系统
1.查询学分高于某值的学生
2.查询学分低于某值的学生
3.查询绩点高于某值的学生
4.查询绩点低于某值的学生
5.所有学生成绩排序
6.退出子系统
七、比较有特色的函数
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() 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 if(j>l)qsort(b,l,j); } 2.按照姓名or学号查找的函数 voidStu: : search() { strings;/*记录输入的姓名*/ inti,num;/*记录输入的学号*/ ifstreamin("code.dat"); cout<<"\t\t\t记录查询可以按照以下两种方式进行\n\n"< cout<<"\t\t\t按照姓名查询请按1,按照学号查询请按2: "< cin>>i; if(i==1) { cout<<"\t\t\t请输入学生姓名: "< cin>>s; 处理姓名--学号两种方式 } if(i==2) { cout<<"\t\t\t请输入学生学号: "< cin>>num; } while(! in.eof()) { in>>one; if(i==1) { if(one.getName()==s) 按照姓名查找并输出 { cout<<"\t学号: "< "< "< <<"\t年龄: "< "< "< <<"\t班级: "< "< "< cout<<"\t-------------------------------------------------------------------------"< } continue; } if(i==2) { if(one.getNumber()==num) { cout<<"\t学号: "< "< "< <<"\t年龄: "< "< "< <<"\t班级: "< "< "< cout<<"\t---------------------------------------------------------------------------"< }/*按照学号查找并输出*/ continue; } } in.close(); cout<<"\t\t\t按任意键继续......"< cin.ignore(); getchar(); } 八、存在的不足与对策 欠缺对输入异常的处理,当所输入数据不符合要求时系统出现错误。 运行程序时严格按照提示输入信息。 九、程序源代码 #include"Stu.h" #include"Menu.h" #include"Cla.h" #include"Gra.h" #include usingnamespacestd; intmain() { Menua; Stub; Claz; Grazz; intx,y; charc; ofstreamout("code.dat"); out.close(); while (1) { a.mainmenu(); cin>>x; switch(x) { case1: b.add(); while (1) { cout<<"是否继续添加记录(y/n)? "; cin>>c; if(c=='y')b.add(); elsebreak; }//添加记录 break; case2: b.search();break;//查找记录 case3: b.del();break;//删除记录 case4: b.show();break;//显示记录 case5: { while (1) { a.classmenu(); cin>>y; switch(y) { case1: z.showCla();break; case2: z.showStu();break; case3: z.showStuInfo();break; case4: z.showGra();break; case5: z.showSort();break; case6: break; } if(y==6)break; } break; }//进入班级管理子系统 case6: { while (1) { a.grademenu(); cin>>y; switch(y) { case1: zz.Ghigh();break; case2: zz.Glow();break; case3: zz.Phigh();break; case4: zz.Plow();break; case5: zz.sort();break; case6: break; } if(y==6)break; } break; }//进入成绩管理子系统 case7: a.exitmenu();break;//退出主程序 } } }***************************以上为主程序************************** *****************************以下为界面的实现程序************************ voidMenu: : mainmenu() { cout<<"\n\n\n\t\t\t★★★★★学籍管理系统★★★★★\n\n\n"; cout<<"\t\t※※※※※※※※※※※※※※※※※※※※※※※\n"; cout<<"\t\t※1.添加记录※\n"; cout<<"\t\t※2.查询记录※\n"; cout<<"\t\t※3.删除记录※\n"; cout<<"\t\t※4.显示记录※\n"; cout<<"\t\t※5.☆班级管理※\n"; cout<<"\t\t※6.☆成绩管理※\n"; cout<<"\t\t※7.退出系统※\n"; cout<<"\t\t※※\n"; cout<<"\t\t※※※※※※※※※※※※※※※※※※※※※※※\n"; cout<<"\t\t\t请选择(1,2,3,4,5,6,7);";//主界面 } voidMenu: : classmenu() { cout<<"\n\n\n\t\t\t★★★★★班级管理子系统★★★★★\n\n\n"; cout<<"\t\t※※※※※※※※※※※※※※※※※※※※※※※\n"; cout<<"\t\t※1.显示全部班级※\n"; cout<<"\t\t※2.查询某班学生※\n"; cout<<"\t\t※3.查询某班学生详细信息※\n"; cout<<"\t\t※4.查询某班成绩信息※\n"; cout<<"\t\t※5.查询某班成绩排序※\n"; cout<<"\t\t※6.退出子系统※\n"; cout<<"\t\t※※\n"; cout<<"\t\t※※※※※※※※※※※※※※※※※※※※※※※\n"; cout<<"\t\t\t请选择(1,2,3,4,5,6);";//子系统界面 } voidMenu: : grademenu() { cout<<"\n\n\n\t\t\t★★★★★成绩管理子系统★★★★★\n\n\n"; cout<<"\t\t※※※※※※※※※※※※※※※※※※※※※※※\n"; cout<<"\t\t※1.查询学分高于某值的学生※\n"; cout<<"\t\t※2.查询学分低于某值的学生※\n"; cout<<"\t\t※3.查询绩点高于某值的学生※\n"; cout<<"\t\t※4.查询绩点低于某值的学生※\n"; cout<<"\t\t※5.所有学生成绩排序※\n"; cout<<"\t\t※6.退出子系统※\n"; cout<<"\t\t※※\n"; cout<<"\t\t※※※※※※※※※※※※※※※※※※※※※※※\n"; cout<<"\t\t\t请选择(1,2,3,4,5,6);";//子系统界面 } *******************以下为对数据添加、查询、删除、显示的实现程序****************** Case1(添加记录),Case2(查询记录),Cas3(删除记录),Case4(显示记录) #include"Info.h" Info: : Info()//构造函数 Info: : Info(Info&obj)//拷贝构造函数 voidInfo: : setP1(doublea) voidInfo: : setP2(doublea) voidInfo: : setCla(inta) voidInfo: : setNumber(inta) 设置数据 voidInfo: : setName(stringa) voidInfo: : setAge(inta) voidInfo: : setSex(stringa) voidInfo: : setPlace(stringa) voidInfo: : setId(stringa) intInfo: : getNumber() intInfo: : getAge() stringInfo: : getName() 获取数据 stringInfo: : getSex() stringInfo: : getId() intInfo: : getCla() doubleInfo: : getP1() doubleInfo: : getP2() stringInfo: : getPlace()ofstream&operator<<(ofstream&output,Info&ToT) { output< < < <<"\n"< returnoutput; }//重载<<操作符 ifstream&operator>>(ifstream&input,Info&ToT) { 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("code.dat"); while(! input.eof()) { flag=0; input>>a; if(input.fail())break; for(i=1;i<=f[0];i++) if(f[i]==a.getCla()) { flag=1; break; } if(! flag) { f[0]++; f[f[0]]=a.getCla(); } } input.close(); cout< cout<<"所录入的班级共: "< cout< for(i=1;i<=f[0];i++) cout< cout< cout<<"按任意键继续......"< cin.ignore(); getchar(); ***************************以上为显示班级的程序*************************** voidCla: : showStu() { inti,num,all=0;; ifstreaminput("code.dat"); cout<<"--------------------------------------------------------------"< cout< cout<<"请输入您想查询的班级号: "< cin>>num; cout< cout< cout<<"该班级所包含的学生有: "< cout< cout< while(! input.eof()) { input>>a; if(a.getCla()==num) { all++; cout<<"学号: "< "< } } input.close(); cout< cout< cout<<"该班级共有学生数为: "< cout< cout< cout<<"--------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+课程设计报告 学籍管理系统 C+ 课程设计 报告 学籍 管理 系统