1. 背景描述
学校招生办在录取当年新生时为新生建立了一个新生基础信息类StudentBase, 其中包含每位新生的基本资料:学号(long mNum)、姓名(char mName[20])、性别(int mSex: 其中0表示男,1表示女)、年龄(int mAge)、住址(char mAddr [30])。 新生主修专业所在系(设每个系只有一个主修专业)又在学生基础资料的基础上为该系的每位新生建立一个主修类First (即学生信息管理系统2中的Major类),其中除了包含原来新生基本资料外,还设有新生主修系名(char mMajorDepName[30])和主修成绩表(设为int mFirstScore[N])(N是大于0的整数)(学生信息管理系统2中的mMajorDepName和mMajorScore); 为了促进复合型人才培养,学生在二年级可修读第二专业(第二学位)课程。第二学位接收系又为每位修读本系第二学位同学建立一个类Second,其中除了学生基本资料外,还设有第二专业名称(char mSecondDepName[30])和攻读第二专业成绩表(设为int Fscore[M])(M是大于零的整数)。 学校学位办为了掌握每位学生的学位发放情况,又为学生建立了一个管理类StudentMIS。它应该包含学生所有资料。当学生主修专业课程全部及格,则可给他颁发主修专业学位;当学生获得主修专业学位,并攻读第二专业学位课程全部及格,则可办法第二专业学位。若主修专业学位拿不到,则不授予第二专业学位。
按照管理规定:
1) 所有课程都采用百分制,整数计分,60分及以上为及格;
2) 每学期每位学生主修专业课程不超过6门,第二学位课程不超过5门。
2. 实验内容
请开发一个学生信息管理系统,管理学校学生。要求编写一个程序模拟学校招生办工作人员、主修系教务员、第二学位所在系教务员和学位办工作人员的操作,以实现下列要求:
1) 首先由招生办人员录入学生基本信息:从文件BaseFile.dat中读入每个学生的基本信息,建立学生信息库;
2) 学期结束时,各系教务员录入本系学生以及外来系修读第二学位学生的成绩:从文件xxMajor.dat和xxMinor.dat(其中xx指系编号,如果A、B)中分别读入学生的主修学生、第二学位学生的各门课成绩;
3) 各系教务员还要统计出本系学生在考试中有3门或以上成绩在85分或以上、其余课程成绩不低于70分的同学,显示其相关资料并将结果输出到文件xxGood.dat中(其中xx
指系编号);
4) 各系教务员还要统计出本系主修学生及外来系修读第二学位学生中需要参加补考的同学名单及相关课程信息,将结果分别输出到文件xxMajorFail.dat和xxMinorFail.dat中(其中xx指系编号);
5) 学习期满后,学位办工作人员统计出获得主修专业学位的学生名单及相关信息、获得第二学位的学生名单及相关信息以及不能获得主修专业学位的同学名单及相关资料。统计结果输出到Degree.dat中。
学校招生办在录取当年新生时为新生建立了一个新生基础信息类StudentBase, 其中包含每位新生的基本资料:学号(long mNum)、姓名(char mName[20])、性别(int mSex: 其中0表示男,1表示女)、年龄(int mAge)、住址(char mAddr [30])。 新生主修专业所在系(设每个系只有一个主修专业)又在学生基础资料的基础上为该系的每位新生建立一个主修类First (即学生信息管理系统2中的Major类),其中除了包含原来新生基本资料外,还设有新生主修系名(char mMajorDepName[30])和主修成绩表(设为int mFirstScore[N])(N是大于0的整数)(学生信息管理系统2中的mMajorDepName和mMajorScore); 为了促进复合型人才培养,学生在二年级可修读第二专业(第二学位)课程。第二学位接收系又为每位修读本系第二学位同学建立一个类Second,其中除了学生基本资料外,还设有第二专业名称(char mSecondDepName[30])和攻读第二专业成绩表(设为int Fscore[M])(M是大于零的整数)。 学校学位办为了掌握每位学生的学位发放情况,又为学生建立了一个管理类StudentMIS。它应该包含学生所有资料。当学生主修专业课程全部及格,则可给他颁发主修专业学位;当学生获得主修专业学位,并攻读第二专业学位课程全部及格,则可办法第二专业学位。若主修专业学位拿不到,则不授予第二专业学位。
按照管理规定:
1) 所有课程都采用百分制,整数计分,60分及以上为及格;
2) 每学期每位学生主修专业课程不超过6门,第二学位课程不超过5门。
2. 实验内容
请开发一个学生信息管理系统,管理学校学生。要求编写一个程序模拟学校招生办工作人员、主修系教务员、第二学位所在系教务员和学位办工作人员的操作,以实现下列要求:
1) 首先由招生办人员录入学生基本信息:从文件BaseFile.dat中读入每个学生的基本信息,建立学生信息库;
2) 学期结束时,各系教务员录入本系学生以及外来系修读第二学位学生的成绩:从文件xxMajor.dat和xxMinor.dat(其中xx指系编号,如果A、B)中分别读入学生的主修学生、第二学位学生的各门课成绩;
3) 各系教务员还要统计出本系学生在考试中有3门或以上成绩在85分或以上、其余课程成绩不低于70分的同学,显示其相关资料并将结果输出到文件xxGood.dat中(其中xx
指系编号);
4) 各系教务员还要统计出本系主修学生及外来系修读第二学位学生中需要参加补考的同学名单及相关课程信息,将结果分别输出到文件xxMajorFail.dat和xxMinorFail.dat中(其中xx指系编号);
5) 学习期满后,学位办工作人员统计出获得主修专业学位的学生名单及相关信息、获得第二学位的学生名单及相关信息以及不能获得主修专业学位的同学名单及相关资料。统计结果输出到Degree.dat中。
代码过多,就不贴了,和具体题目打包在这里:
http://download.csdn.net/detail/jcjc918/5759803
还是贴个主函数(studentMain)吧:
#include <iostream>
#include <iomanip>
#include "Student.h"
#include <string>
#include <cstring>
using namespace std;
#include<algorithm>
int main()
{
StudentMIS sysu;
StudentBase *pStudentBase = &sysu;
FirstA *pFirstA = &sysu;
FirstB *pFirstB = &sysu;
FirstC *pFirstC = &sysu;
StudentMIS *pStudentMIS = &sysu;
cout<<endl<<setw(20)<<" "<<left<<setw(30)<<"欢迎进入学生信息管理系统!"<<endl<<endl;
cout<<endl<<endl<<setw(18)<<" "<<left<<setw(20)<<"1.用户选择"<<setw(30)<<"2.退出系统"<<endl;
cout<<endl<<setw(25)<<" "<<"请选择:";
string init;
while(cin>>init)
{
//输入异常处理
if(init != "1" && init != "2")
{
system ("cls");
cout<<endl<<endl<<setw(18)<<" "<<left<<setw(20)<<"1.用户选择"<<setw(30)<<"2.退出系统"<<endl;
cout<<endl<<setw(20)<<" "<<"输入错误啦!重新选择吧:";
continue;
}
if(init == "2") break;
system ("cls");
cout<<endl<<endl<<setw(22)<<" "<<left<<setw(30)<<"用户登录账号选择中..."<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.招生办工作人员"<<"2.系教务员"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.学位办工作人员"<<"4.返回上一层"<<endl;
cout<<endl<<setw(20)<<" "<<"请选择登录账号:";
string user;
while(cin>>user)
{
//输入异常处理
if(user != "1" && user != "2" && user != "3" && user != "4")
{
system ("cls");
cout<<endl<<endl<<setw(22)<<" "<<left<<setw(30)<<"用户登录账号选择中..."<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.招生办工作人员"<<"2.系教务员"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.学位办工作人员"<<"4.返回上一层"<<endl;
cout<<endl<<setw(20)<<" "<<"输入错误啦!重新选择吧:";
continue;
}
if(user == "1")
{
system ("cls");
cout<<endl<<endl<<setw(25)<<" "<<left<<setw(30)<<"1.建立学生信息管理系统"<<endl;
cout<<endl<<setw(25)<<" "<<left<<setw(30)<<"2.修改学生资料"<<endl;
cout<<endl<<setw(25)<<" "<<left<<setw(30)<<"3.返回上一层"<<endl;
cout<<endl<<setw(25)<<" "<<"请选择:";
string choice;
while(cin>>choice)
{
//输入异常处理
if(choice != "1" && choice != "2" && choice != "3")
{
system ("cls");
cout<<endl<<endl<<setw(25)<<" "<<left<<setw(30)<<"1.建立学生信息管理系统"<<endl;
cout<<endl<<setw(25)<<" "<<left<<setw(30)<<"2.修改学生资料"<<endl;
cout<<endl<<setw(25)<<" "<<left<<setw(30)<<"3.返回上一层"<<endl;
cout<<endl<<setw(25)<<" "<<"输入错误啦!重新选择吧:";
continue;
}
if(choice == "1")
{
pStudentBase->bulidBaseData();
}
else if(choice == "2")
{
pStudentBase->modifyData();
}
else break;
system ("cls");
cout<<endl<<endl<<setw(25)<<" "<<left<<setw(30)<<"1.建立学生信息管理系统"<<endl;
cout<<endl<<setw(25)<<" "<<left<<setw(30)<<"2.修改学生资料"<<endl;
cout<<endl<<setw(25)<<" "<<left<<setw(30)<<"3.返回上一层"<<endl;
cout<<endl<<setw(25)<<" "<<"请再次选择:";
}
}
else if(user == "2")
{
system ("cls");
cout<<endl<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.A系教务员"<<"2.B系教务员"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.C系教务员"<<"4.返回上一层"<<endl;
cout<<endl<<setw(25)<<" "<<"请选择:";
string major;
while(cin>>major)
{
//输入异常处理
if(major != "1" && major != "2" && major != "3" && major != "4")
{
system ("cls");
cout<<endl<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.A系教务员"<<"2.B系教务员"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.C系教务员"<<"4.返回上一层"<<endl;
cout<<endl<<setw(20)<<" "<<"输入错误啦!重新选择吧:";
continue;
}
if(major == "1")
{
system ("cls");
cout<<endl<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.录入主修学生成绩"<<"2.录入辅修学生成绩"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.统计优秀学生"<<"4.统计主修补考学生"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"5.统计辅修补考学生"<<"6.返回上一层"<<endl;
cout<<endl<<setw(25)<<" "<<"请选择:";
while(cin>>major)
{
if(major!="1"&&major!="2"&&major!="3"&&major!="4"&&major!="5"&&major!="6")
{
system ("cls");
cout<<endl<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.录入主修学生成绩"<<"2.录入辅修学生成绩"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.统计优秀学生"<<"4.统计主修补考学生"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"5.统计辅修补考学生"<<"6.返回上一层"<<endl;
cout<<endl<<setw(20)<<" "<<"输入错误啦!重新选择吧:";
continue;
}
if(major == "1")
{
pFirstA->inputA_MajorScore();
}
else if(major == "2") pFirstA->inputA_SecondScore();
else if(major == "3") pFirstA->outputA_Good();
else if(major == "4") pFirstA->outputA_MajorFail();
else if(major == "5") pFirstA->outputA_SecondFail();
else break;
system ("cls");
cout<<endl<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.录入主修学生成绩"<<"2.录入辅修学生成绩"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.统计优秀学生"<<"4.统计主修补考学生"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"5.统计辅修补考学生"<<"6.返回上一层"<<endl;
cout<<endl<<setw(25)<<" "<<"请继续选择:";
}
}
else if(major == "2")
{
system ("cls");
cout<<endl<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.录入主修学生成绩"<<"2.录入辅修学生成绩"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.统计优秀学生"<<"4.统计主修补考学生"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"5.统计辅修补考学生"<<"6.返回上一层"<<endl;
cout<<endl<<setw(25)<<" "<<"请选择:";
while(cin>>major)
{
//输入异常处理
if(major!="1"&&major!="2"&&major!="3"&&major!="4"&&major!="5"&&major!="6")
{
system ("cls");
cout<<endl<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.录入主修学生成绩"<<"2.录入辅修学生成绩"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.统计优秀学生"<<"4.统计主修补考学生"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"5.统计辅修补考学生"<<"6.返回上一层"<<endl;
cout<<endl<<setw(20)<<" "<<"输入错误啦!重新选择吧:";
continue;
}
if(major == "1")
{
pFirstB->inputB_MajorScore();
}
else if(major == "2") pFirstB->inputB_SecondScore();
else if(major == "3") pFirstB->outputB_Good();
else if(major == "4") pFirstB->outputB_MajorFail();
else if(major == "5") pFirstB->outputB_SecondFail();
else break;
system ("cls");
cout<<endl<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.录入主修学生成绩"<<"2.录入辅修学生成绩"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.统计优秀学生"<<"4.统计主修补考学生"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"5.统计辅修补考学生"<<"6.返回上一层"<<endl;
cout<<endl<<setw(25)<<" "<<"请继续选择:";
}
}
else if(major == "3")
{
system ("cls");
cout<<endl<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.录入主修学生成绩"<<"2.录入辅修学生成绩"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.统计优秀学生"<<"4.统计主修补考学生"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"5.统计辅修补考学生"<<"6.返回上一层"<<endl;
cout<<endl<<setw(25)<<" "<<"请选择:";
while(cin>>major)
{
//输入异常处理
if(major!="1"&&major!="2"&&major!="3"&&major!="4"&&major!="5"&&major!="6")
{
system ("cls");
cout<<endl<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.录入主修学生成绩"<<"2.录入辅修学生成绩"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.统计优秀学生"<<"4.统计主修补考学生"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"5.统计辅修补考学生"<<"6.返回上一层"<<endl;
cout<<endl<<setw(20)<<" "<<"输入错误啦!重新选择吧:";
continue;
}
if(major == "1") pFirstC->inputC_MajorScore();
else if(major == "2") pFirstC->inputC_SecondScore();
else if(major == "3") pFirstC->outputC_Good();
else if(major == "4") pFirstC->outputC_MajorFail();
else if(major == "5") pFirstC->outputC_SecondFail();
else break;
system ("cls");
cout<<endl<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.录入主修学生成绩"<<"2.录入辅修学生成绩"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.统计优秀学生"<<"4.统计主修补考学生"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"5.统计辅修补考学生"<<"6.返回上一层"<<endl;
cout<<endl<<setw(25)<<" "<<"请继续选择:";
}
}
else break;
system ("cls");
cout<<endl<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.A系教务员"<<"2.B系教务员"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.C系教务员"<<"4.返回上一层"<<endl;
cout<<endl<<setw(25)<<" "<<"请继续选择:";
}
}
else if(user == "3")
{
system ("cls");
cout<<endl<<endl<<setw(12)<<" "<<left<<setw(30)<<"1.设置主修学位需修课程数"<<"2.设置辅修学位需修课程数"<<endl;
cout<<endl<<setw(12)<<" "<<left<<setw(30)<<"3.统计相关学位信息"<<"4.返回上一层"<<endl;
cout<<endl<<setw(25)<<" "<<"请选择:";
string choice;
while(cin>>choice)
{
//输入异常处理
if(choice != "1" && choice != "2" && choice != "3" && choice != "4")
{
system ("cls");
cout<<endl<<endl<<setw(12)<<" "<<left<<setw(30)<<"1.设置主修学位需修课程数"<<"2.设置辅修学位需修课程数"<<endl;
cout<<endl<<setw(12)<<" "<<left<<setw(30)<<"3.统计相关学位信息"<<"4.返回上一层"<<endl;
cout<<endl<<setw(20)<<" "<<"输入错误啦!重新选择吧:";
continue;
}
if(choice == "1") pStudentMIS->degreeStanderOfFirst();
else if(choice == "2") pStudentMIS->degreeStanderOfSecond();
else if(choice == "3") pStudentMIS->degree();
else break;
system ("cls");
cout<<endl<<endl<<setw(12)<<" "<<left<<setw(30)<<"1.设置主修学位需修课程数"<<"2.设置辅修学位需修课程数"<<endl;
cout<<endl<<setw(12)<<" "<<left<<setw(30)<<"3.统计相关学位信息"<<"4.返回上一层"<<endl;
cout<<endl<<setw(25)<<" "<<"请继续选择:";
}
}
else break;
system ("cls");
cout<<endl<<endl<<setw(22)<<" "<<left<<setw(30)<<"用户登录账号选择中..."<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"1.招生办工作人员"<<"2.系教务员"<<endl;
cout<<endl<<setw(15)<<" "<<left<<setw(25)<<"3.学位办工作人员"<<"4.返回上一层"<<endl;
cout<<endl<<setw(20)<<" "<<"请继续选择:";
}
system ("cls");
cout<<endl<<endl<<setw(18)<<" "<<left<<setw(20)<<"1.用户选择"<<setw(30)<<"2.退出系统"<<endl;
cout<<endl<<setw(25)<<" "<<"请继续选择:";
}
return 0;
}