📄 学生选课系统.cpp
字号:
{
ifstream fin(fp);
if (!fin)
{
cout<<"文件不能打开"<<endl;
}
fin.get();
while (!fin.eof())
{
fin>>m_ctno>>m_ctname>>m_ctxi>>m_ctsex>>m_ctzhicheng;
count++;
}
fin.close();
}
//*********************************************************************
void CTeacher::Queryf(char *fp)
{
ifstream fin(fp);
char tno[20];
strcpy(tno,Settno());
if (!fin)
{
fin.close();
fin.clear();
}
fin.get();
while (!fin.eof())
{
fin>>m_ctno>>m_ctname>>m_ctxi>>m_ctsex>>m_ctzhicheng;
if (strcmp(m_ctno,tno)==0)
{
cout<<"教师号重复,请重新输入!";
Queryf("teacher.txt");
}
}
fin.close();
}
//*********************************************************************
void CTeacher::show3(char *fp)
{
ifstream fin(fp);
if (!fin)
{
cout<<"您还没有任何添加学生"<<endl;
return;
}
fin.get();
while (!fin.eof())
{
fin>>m_ctno>>m_ctname>>m_ctxi>>m_ctsex>>m_ctzhicheng;
Output();
}
fin.close();
}
//*********************************************************************
CTeacher::~CTeacher(){}
/*********************************************************************
* 这个类问题很多啊! *
*********************************************************************/
class CSubject
{
public:
CSubject(){};
char *Getsno(void) // 反正是每个带”*“的返回值都有问题,不过没解决好像还没出什么错。
{
return stu.m_csno;
}
char *Getcno(void)
{
return course.m_ccno;
}
char *Setsno();
char *Setcno();
void Readf(char *fp);
void Writef(char *fp);
char *Queryf(char *fp);
void xuanke(char *fp); //就是这个函数出了很多问题,调试了好久,
//我还没加上课时间,地点的冲突。还有有没教师上课等。
void Output();
void Output1();
void Input();
void show4(char *fp);
void show5(char *fp);
int static count;
~CSubject();
protected:
int m_imaxcourse,m_ifactcourse;
CStudent stu;
CCourse course;
CTeacher teacher;
};
//*********************************************************************
int CSubject::count=0;
//*********************************************************************
char* CSubject::Setsno()
{
char sno[20];
cout<<"请输入学号:";
cin>>sno;
strcpy(stu.m_csno,sno);
return stu.m_csno;
}
//*********************************************************************
char* CSubject::Setcno()
{
char cno[20];
cout<<"请输入课程号:";
cin>>cno;
strcpy(course.m_ccno,cno);
return course.m_ccno;
}
//*********************************************************************
void CSubject::Output()
{
cout<<"学号 :"<<setw(20)<<stu.m_csno<<endl;
cout<<"课程号:"<<setw(20)<<course.m_ccno<<endl;
cout<<"课程名:"<<setw(20)<<course.m_ccname<<endl;
cout<<"上课地点:"<<setw(20)<<course.m_caddress<<endl;
cout<<"课程性质:"<<setw(20)<<course.m_cxingzhi<<endl;//
cout<<"上课时间:"<<setw(20)<<course.m_ctime<<endl;
cout<<"学分:"<<setw(20)<<course.m_fxuefen<<endl;//
cout<<"课程课时:"<<setw(20)<<course.m_ikeshi<<endl;
}
//*********************************************************************
void CSubject::Output1()
{
cout<<"课程号:"<<setw(20)<<course.m_ccno<<endl;
}
//*********************************************************************
void CSubject::Writef(char *fp)
{
ofstream fout(fp,ios::app);
if (!fout)
{
cout<<"文件不能打开"<<endl;
}
else
{
fout<<endl;
fout<<stu.m_csno<<setw(20)<<course.m_ccno<<setw(20)<<course.m_ccname
<<setw(20)<<course.m_caddress<<setw(20)<<course.m_cxingzhi
<<setw(20)<<course.m_ctime<<setw(20)<<course.m_fxuefen<<setw(20)<<course.m_ikeshi;
}
fout.close();
}
//*********************************************************************
void CSubject::Readf(char *fp)
{
ifstream fin(fp);
if (!fin)
{
cout<<"文件不能打开"<<endl;
}
fin.get();
while (!fin.eof())
{
fin>>stu.m_csno>>course.m_ccno>>course.m_ccname>>course.m_caddress
>>course.m_cxingzhi>>course.m_ctime>>course.m_fxuefen>>course.m_ikeshi;
count++;
}
fin.close();
}
//*********************************************************************
char* CSubject::Queryf(char *fp)
{
ifstream fin(fp);
char sno[20];
int flag=0;
strcpy(sno,Setsno());
if (!fin)
{
cout<<"\n\n\n\t\t对不起,暂时还没有学生!"<<endl;
cout<<"\t\t请你先到管理员处注册。请按任意键继续.."<<endl;
getch();
handle_Memu1();
}
fin.get();
while (!fin.eof())
{
fin>>stu.m_csno>>stu.m_csname>>stu.m_csex>>stu.m_cbanji>>stu.m_czhuanye
>>stu.m_imaxcourse>>stu.m_ifactcourse;
if (strcmp(sno,stu.m_csno)==0)
{
flag=1;
return stu.m_csno;
break;
}
}
if(!flag)
{
cout<<"\n\n\n\t\t对不起,暂时没有这个学生!"<<endl;
cout<<"\t\t请你先到管理员处注册。请按任意键继续.."<<endl;
getch();
handle_Memu1();
}
fin.close();
return NULL;
}
//*********************************************************************
void CSubject::show4(char *fp)
{
ifstream fin(fp);
if (!fin)
{
cout<<"你还没有任何选课记录"<<endl;
return;
}
fin.get();
while (!fin.eof())
{
fin>>stu.m_csno>>course.m_ccno>>course.m_ccname>>course.m_caddress
>>course.m_cxingzhi>>course.m_ctime>>course.m_fxuefen>>course.m_ikeshi;
Output();
}
fin.close();
}
//*******************************************************************
void CSubject::show5(char *fp)
{
ifstream fin(fp);
char sno[20];
strcpy(sno,Setsno());
if (!fin)
{
cout<<"你还没有任何课程记录"<<endl;
cout<<"请你先到管理员处添加课程"<<endl;
cout<<"按任意键继续。";
getch();
handle_Memu1();
}
fin.get();
while (!fin.eof())
{
fin>>stu.m_csno>>course.m_ccno>>course.m_ccname>>course.m_caddress
>>course.m_cxingzhi>>course.m_ctime>>course.m_fxuefen>>course.m_ikeshi;
if(strcmp(stu.m_csno,sno)==0)
Output();
}
fin.close();
}
//********************************************************************
void CSubject::xuanke(char *fp) //就是这个函数出了很多问题,调试了好久,
//我还没加上课时间,地点的冲突。还有有没教师上课等。
{
char N[20],zhuanye[20],cno[20];
int i=0,j=0;
strcpy(N,Queryf("student.txt"));
ifstream fin(fp);
fin.open("subject.txt");
if(!fin)
{
fin.clear();
}
else
{
while (!fin.eof())
{
fin>>stu.m_csno>>course.m_ccno>>course.m_ccname>>course.m_caddress
>>course.m_cxingzhi>>course.m_ctime>>course.m_fxuefen>>course.m_ikeshi;
if(strcmp(N,stu.m_csno)==0)
i++;
}
if(i>=5)
{
cout<<"你已经选了5门课程,不能再选!";
cout<<"\t\t请按任意键继续!";
getch();
return;
}
}
fin.close();
fin.open("student.txt");
if (!fin)
{
fin.clear();
cerr<<"\n\n\n\n\t\t还没有学生1"<<endl;
cout<<"\t\t请到管理员处添加学生!"<<endl;
cout<<"\t\t请按任意键继续!";
getch();
system("cls");
handle_Memu1();
}
fin.get();
while (!fin.eof())
{
fin>>stu.m_csno>>stu.m_csname>>stu.m_csex>>stu.m_cbanji>>stu.m_czhuanye
>>stu.m_imaxcourse>>stu.m_ifactcourse;
if (strcmp(N,stu.m_csno)==0)
strcpy(zhuanye,stu.m_czhuanye);
}
cout<<"所有课程如下:"<<endl;
cout<<"公共课:";
fin.close();
fin.open("course.txt");
if (!fin)
{
fin.clear();
cerr<<"\n\n\n\n\t\t还没有任何课程"<<endl;
cout<<"\t\t请到管理员处添加课程!"<<endl;
cout<<"\t\t请按任意键继续!";
getch();
system("cls");
handle_Memu1();
}
fin.get();
while (!fin.eof())
{
fin>>course.m_ccno>>course.m_ccname>>course.m_cxingzhi>>course.m_ikeshi
>>course.m_caddress>>course.m_ctime>>course.m_fxuefen
>>course.m_imaxcourse>>course.m_ifactcourse;
if (strcmp(zhuanye,course.m_cxingzhi)!=0)
cout<<" 课程号: "<<course.m_ccno<<" "
<<"课程名: "<<course.m_ccname<<endl;
}
cout<<"专业课:";
fin.close();
fin.open("course.txt");
if (!fin)
{
fin.clear();
}
while (!fin.eof())
{
fin>>course.m_ccno>>course.m_ccname>>course.m_cxingzhi>>course.m_ikeshi
>>course.m_caddress>>course.m_ctime>>course.m_fxuefen
>>course.m_imaxcourse>>course.m_ifactcourse;
if (strcmp(zhuanye,course.m_cxingzhi)==0)
cout<<"课程号: "<<course.m_ccno<<" "
<<"课程名: "<<course.m_ccname<<endl;
}
cout<<"\n\t 输入你所要选的课程 : ";
strcpy(cno,Setcno());
fin.close();
fin.open("course.txt");
if(!fin)
fin.clear();
while (!fin.eof())
{
fin>>course.m_ccno>>course.m_ccname>>course.m_cxingzhi>>course.m_ikeshi>>
course.m_caddress>>course.m_ctime>>course.m_fxuefen>>
course.m_imaxcourse>>course.m_ifactcourse;
if (strcmp(cno,course.m_ccno)!=0)
{
cout<<"没有此课程!请重新输入:";
strcpy(cno,Setcno());
}
}
fin.close();
fin.open("subject.txt");
if(!fin)
{
fin.clear();
}
else
{
while (!fin.eof())
{
fin>>stu.m_csno>>course.m_ccno>>course.m_ccname>>course.m_caddress
>>course.m_cxingzhi>>course.m_ctime>>course.m_fxuefen>>course.m_ikeshi;
if(strcmp(N,stu.m_csno)==0)
j++;
}
if(j>=5)
{
cout<<"你已经选了5门课程,不能再选!";
cout<<"按任意键继续。";
getch();
return;
}
}
fin.close();
fin.open("subject.txt");
if (!fin)
{
fin.clear();
Output();
Writef("subject.txt");
cout<<"\n\n\t\t选课成功!按任意键继续"<<endl;
getch();
return;
}
fin.get();
int count=0;
while (!fin.eof())
{
fin>>stu.m_csno>>course.m_ccno>>course.m_ccname>>course.m_caddress
>>course.m_cxingzhi>>course.m_ctime>>course.m_fxuefen>>course.m_ikeshi;
if (strcmp(cno,course.m_ccno)==0 && strcmp(N,stu.m_csno)==0)
{
cout<<"你已经选过该课程!";
cout<<"按任意键继续。";
getch();
return;
}
else
if(strcmp(N,stu.m_csno)==0)
count++;
if(count>=5)
{
cout<<"选课人数已满!";
cout<<"按任意键继续。";
getch();
return;
}
}
fin.close();
Output();
Writef("subject.txt");
cout<<"\n\n\t\t选课成功!按任意键继续"<<endl;
getch();
return;
}
//*******************************************************************
CSubject::~CSubject(){}
/*********************************************************************
* *
*********************************************************************/
class CLand
{
public:
CLand(){};
char *Setsno();
char *Setscode();
char *Settno();
char *Settcode();
char *Setadmin();
char *Setadmincode();
void modifiy(char *fp);//密码修改存在问题,主要是我”modifiy“函数流入文件的内容没控制好。
void modifiy1(char *fp); //同理;
void modifiy2(char *fp);//同理;
void Readf(char *fp);
void Writef1(char *fp);
void Readf1(char *fp);
void Writef(char *fp); //感觉代码重复多余,又不知道改怎么控制返回值。
void Readf2(char *fp);
void Writef2(char *fp);
char *Queryf(char *fp);
char *Queryf1(char *fp);
char *Queryf2(char *fp);
private:
char m_cscode[20],m_ctcode[20],m_cacode[20],m_cadmin[20],m_cadmincode[20];
CStudent stu;
CTeacher teacher;
};
//*********************************************************************
char* CLand::Setsno()
{
char sno[20];
cout<<"\n\n\n\n\t\t\t请输入你的用户名按回车键确认:";
cin>>sno;
strcpy(stu.m_csno,sno);
return sno;
}
//*********************************************************************
char* CLand::Setscode()
{
char scode[20],f;
int _f=0;
while(1)
{
f=getch();
if(f==13)
break;
if(f==8)
{
putchar(8);
putchar(0);
putchar(8);
_f--;
}
else
{
scode[_f++]=f;
cout<<"*";
}
}
scode[_f]='\0';
strcpy(m_cscode,scode);
return scode;
}
//*********************************************************************
char* CLand::Setadmin()
{
char admin[20];
cout<<"\n\n\n\n\t\t\t请输入您的用户名按回车键确认:";
cin>>admin;
strcpy(m_cadmin,admin);
return admin;
}
//*********************************************************************
char* CLand::Setadmincode()
{
char admincode[20],f;
int _f=0;
while(1)
{
f=getch();
if(f==13)
break;
if(f==8)
{
putchar(8);
putchar(0);
putchar(8);
_f--;
}
else
{
admincode[_f++]=f;
cout<<"*";
}
}
admincode[_f]='\0';
strcpy(m_cadmincode,admincode);
return admincode;
}
//*********************************************************************
char* CLand::Settno()
{
char tno[20];
cout<<"\n\n\n\n\n\t\t\t请输入您的用户名按回车键确认:";
cin>>tno;
strcpy(teacher.m_ctno,tno);
return tno;
}
//*********************************************************************
char* CLand::Settcode()
{
char tcode[20],f;
int _f=0;
while(1)
{
f=getch();
if(f==13)
break;
if(f==8)
{
putchar(8);
putchar(0);
putchar(8);
_f--;
}
else
{
tcode[_f++]=f;
cout<<"*";
}
}
tcode[_f]='\0';
strcpy(m_ctcode,tcode);
return tcode;
}
//*********************************************************************
void CLand::Writef(char *fp)
{
ofstream fout(fp,ios::app);
if (!fout)
{
cout<<"文件不能打开"<<endl;
}
else
{
fout<<endl;
fout<<stu.m_csno<<setw(20)<<m_cscode;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -