📄 stuman.cpp
字号:
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#include<iomanip.h>
//#include<conio.h>
#include"text1.h"
department allDepartment[]={{1,"计算机工程系","计算机科学与技术",194,4,3},
{2,"交通工程系","运输管理",198,4,2},
{3,"机械工程系","机电一体化",199,4,2},
{4,"经济管理系","工商管理",198,4,2},
{5,"经济管理系","外贸英语",197,6,2},
{6,"生化系","生物工程",199,4,2}};
student allStudent[]={{10031301,"黎明",246,1,'f',4,3,2},
{10031302,"未来",253,1,'m',6,4,0},
{10031303,"海洋",223,2,'m',4,3,0},
{10031304,"宇宙",243,2,'m',4,3,0},
{10031305,"长城",241,1,'f',4,3,0},
{10031306,"长江",190,5,'f',0,3,0},
{10031307,"黄河",200,6,'m',4,0,0},
{10031308,"珠珠",200,3,'m',4,3,0},
{10031309,"太平",190,4,'f',6,3,0},
{10031310,"黑暗",190,3,'f',0,0,0}};
encourage_punish EncouragePunish[]={
{10031301,{{1,"2001年获一等奖学金"},{1,"2002年获二等奖学金"},{1,"2003年获一等奖学金"}},3},
{10031302,{{1,"2001年获三等奖学金"},{0,"2002年获记过处分一次"},{0,"2004年获留校察看处分一次"}},3},
{10031303,{{1,"2001年获二等奖学金"},{1,"2002年获三等奖学金"},{1,"2003年获一等奖学金"}},3},
{10031304,{{1,"2001年获一等奖学金、三好学生"},{1,"2002年获一等奖学金、优干"},{1,"2003获特等奖学金、三好学生"},{1,"2004年获一等奖学金"}},4},
{10031305,{{1,"2001年获三等奖学金"},{0,"2001记过处分一次"},{1,"2002年获三等奖学金"}},3}};
int searchStudent(student [],int,int,student&);
int searchDepartment(department [],int,int,department&);
int searchEncourage_punish(encourage_punish [],int,int,encourage_punish&);
char *finddep(int );
bool graduation(department,student,char *explanation[],int&);
bool degree(department,student,char *explanation[],int&);
void print(student);
void print(department);
void main()
{
int n1,n2,n3;
n1=sizeof(allDepartment)/sizeof(department);
n2=sizeof(allStudent)/sizeof(student);
n3=sizeof(EncouragePunish)/sizeof(encourage_punish);
cout<<"\n\n\t\t欢迎使用淮阴工学院学生学籍管理专家系统\n\n\n\n";
do
{
cout<<"\t要求系统解答的问题:\n";
cout<<"\t\t1————能否毕业问题?\n";
cout<<"\t\t2————能否获得学位问题?\n";
cout<<"\t\t3————奖惩问题?\n";
cout<<"\t\t.........\n";
cout<<"\t\t0————退出系统\n";
cout<<"\t请输入您的选择:";
int select,num;
cin>>select;
if(select==0)
break;
if(select>3)
{cout<<"\t输入错误,请重新输入:";cin>>select;}
cout<<"\t请输入您的学号:";
cin>>num;
student stu;
department dep;
encourage_punish currentEncouragePunish;
if(!searchStudent(allStudent,n2,num,stu))//查询学生信息
{
cout<<"无此学号的学生!\n请重新选择\n\n\n";
continue;
}
print(stu);
if(!searchDepartment(allDepartment,n1,stu.departmentID,dep))//查询系部信息
{
cout<<"本校无此系!\n请重新选择\n";
continue;
}
print(dep);
int numEncourage_punish;
numEncourage_punish=searchEncourage_punish(EncouragePunish,n3,num,currentEncouragePunish);
//int
char *explanation[20] ;
int k;
switch(select)
{
case 1:
bool cangraduation;
if(cangraduation=graduation(dep,stu,explanation,k))
cout<<"你已获得毕业资格!\n";
else
{
cout<<"对不起,你暂时还未获得毕业资格!\n因为";
for(int i=0;i<k;i++)
cout<<explanation[i]<<endl;
cout<<endl;
}
break;
case 2:
bool getdegree;
if(getdegree=degree(dep,stu,explanation,k))
cout<<"你已符合获得学位的条件!\n";
else
{
cout<<"对不起,你暂时还不符合获得学位的条件!\n因为";
for(int i=0;i<k;i++)
cout<<explanation[i]<<endl;
cout<<endl;
}
break;
case 3:
if(numEncourage_punish==0)
cout<<"该学生无奖惩记录!\n";
else
{
int k=1;
cout<<"该学生奖励记录为:\n";
for(int i=0;i<currentEncouragePunish.num;i++)
if(currentEncouragePunish.instance[i].type==1)
cout<<'\t'<<k++<<'.'<<currentEncouragePunish.instance[i].content<<endl;
if(k<=1)
cout<<"\t无奖励记录!\n";
k=1;
cout<<"该学生处罚记录为:\n";
for( i=0;i<currentEncouragePunish.num;i++)
if(currentEncouragePunish.instance[i].type==0)
cout<<'\t'<<k++<<'.'<<currentEncouragePunish.instance[i].content<<endl;
if(k<=1)
cout<<"\t无处罚记录!\n";
}
break;
}
char Continue;
cout<<"是否继续(y/n):";
cin>>Continue;
if(Continue=='n'||Continue=='N')
break;
cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
//clrscr();
}while(1);
cout<<"谢谢您的使用,再见!\n";
}
int searchStudent(student allStudent[],int n,int stu_id,student& stu)
{ //在学生库s中查找学号为stu_id的学生放入stu中,并返回1,否则返回0
for(int i=0;i<n;i++)
if(allStudent[i].number==stu_id) //学号匹配
{
stu=allStudent[i];
return 1;
}
return 0;
}
int searchDepartment(department allDepartment[],int n,int id,department &dep)
{ //在系部信息库allDepartment中查找id的系部信息放入dep中,并返回1,否则返回0
for(int i=0;i<n;i++)
if(allDepartment[i].departmentID==id)
{
dep=allDepartment[i];
return 1;
}
return 0;
}
int searchEncourage_punish(encourage_punish EncouragePunish[],int n,int num,encourage_punish ¤tEncouragePunish)
{ //在奖惩信息库EncouragePunish中查找学号为num的学生信息放入currentEncouragePunish中,并返回1,否则返回0
for(int i=0;i<n;i++)
if(EncouragePunish[i].number==num)
{
currentEncouragePunish=EncouragePunish[i];
return 1;
}
return 0;
}
bool graduation(department dep,student stu,char *explanation[],int&k)
{ //对学生能否毕业的推理机
k=0;
bool cangraduation=true;
if(stu.totalScores>=dep.totalScores)
{
explanation[k]=new char[14];
strcpy(explanation[k],"1.学分已修满");
k++;
}
else
{
explanation[k]=new char[14];
strcpy(explanation[k],"1.学分未修满");
k++;
cangraduation=false;
}
return cangraduation;
}
bool degree(department dep,student stu,char *explanation[],int&k)
{
bool canObtainDegree=true;
char temp[20];
canObtainDegree=graduation(dep,stu,explanation,k);
//cout<<"k="<<k;
if(stu.gradeOfEnglish>=dep.gradeOfEnglish)//英语等级的匹配
{
explanation[k]=new char[30];
strcpy(explanation[k],strcat(itoa(k+1,temp,10),".英语等级已达到要求"));
k++;
}
else
{
explanation[k]=new char[30];
strcpy(explanation[k],strcat(itoa(k+1,temp,10),".英语等级未达到要求"));
k++;
canObtainDegree=false;
}
if(stu.gradeOfComputer>=dep.gradeOfComputer)//计算机等级的匹配
{
explanation[k]=new char[30];
strcpy(explanation[k],strcat(itoa(k+1,temp,10),".计算机等级已达到要求"));
k++;
}
else
{
explanation[k]=new char[30];
strcpy(explanation[k],strcat(itoa(k+1,temp,10),".计算机等级未达到要求"));
k++;
canObtainDegree=false;
}
return canObtainDegree;
}
void print(student stu)
{
cout<<"学生信息:\n";
cout<<setw(8)<<"学号"<<setw(7)<<"姓名"<<setw(7)<<"总学分"<<setw(15)<<"所在系"
<<setw(5)<<"性别"<<setw(9)<<"英语等级"<<setw(11)<<"计算机等级"<<endl;
cout<<setw(8)<<stu.number<<setw(7)<<stu.name<<setw(7)<<stu.totalScores
<<setw(15)<<finddep(stu.departmentID)
<<setw(5)<<stu.sex<<setw(9)<<stu.gradeOfEnglish<<setw(11)<<stu.gradeOfComputer<<endl;
cout<<endl;
}
void print(department dep)
{
cout<<"学生所在系信息:\n";
cout<<setw(9)<<"部门编号"<<setw(15)<<"部门名称"<<setw(20)<<"专业名称"<<setw(11)<<"要求总学分"
<<setw(9)<<"英语等级"<<setw(11)<<"计算机等级"<<endl;
cout<<setw(9)<<dep.departmentID<<setw(15)<<dep.name<<setw(20)<<dep.subjectName<<setw(11)<<dep.totalScores
<<setw(9)<<dep.gradeOfEnglish<<setw(9)<<dep.gradeOfComputer<<endl;
cout<<endl;
}
char *finddep(int departmentID)
{
for(int i=0;;i++)
if(allDepartment[i].departmentID==departmentID)
return allDepartment[i].name;
return "";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -