📄 学生选课系统.cpp
字号:
#include<iostream>
#include<string>
#include<iomanip>
#include<fstream>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include <ctype.h>
void handle_Memu1();
void handle_Memu3(char *sno);
void handle_Memu4();
void handle_Memu5();
int shuzi();
int number=0,count=0,i=0,count1=0,count2=0,h=0,count3=0;
using namespace std;
/*********************************************************************
* *
*********************************************************************/
class CSubject; //选课类;
class CLand; //登陆类;
class CStudent //学生类;
{
public:
CStudent()
{
m_imaxcourse=5;
m_ifactcourse=0;
}
friend class CSubject;
friend class CLand;
char* Getsno()
{
return m_csno;
}
void Setsno(char *sno);
int Setmaxcourse();
int Setfactcourse();
void Readf(char *fp);
void Writef(char *fp);
char *Queryf(char *fp,char *sno);
void Readf1(char *fp);
void Writef1(char *fp,CStudent stu[],int count);
int Queryf1(char *sno,int *p);
void Output();
void Input();
void addstudent();
void show(char *fp);
char * delstudent(char *sno,int *p);
~CStudent();
protected:
int m_imaxcourse,m_ifactcourse;
char m_csname[20],m_csno[20],m_csex,m_cbanji[20],m_czhuanye[20];
};
//*********************************************************************
CStudent stu[60];
//*********************************************************************
int CStudent::Setmaxcourse()
{
int maxcourse;
cout<<"请输入学生最多可选课程:";
maxcourse=shuzi();
m_imaxcourse=maxcourse;
return m_imaxcourse;
}
//*********************************************************************
int CStudent::Setfactcourse()
{
return m_ifactcourse++;
}
//*********************************************************************
void CStudent::Setsno(char *sno)
{
strcpy(m_csno,sno);
}
//*********************************************************************
void CStudent::Input()
{
cout<<"请输入你的姓名:";
cin>>m_csname;
cout<<"请输入你的性别:(a=男,b=女)";
cin>>m_csex;
while(m_csex!='a'&&m_csex!='b')
{
cout<<"你的输入有误,请重新输入:";
cin>>m_csex;
}
cout<<"请输入你的班级:";
cin>>m_cbanji;
cout<<"请输入你的专业:";
cin>>m_czhuanye;
}
//*********************************************************************
void CStudent::Output()
{
cout<<"学号:"<<setw(20)<<m_csno<<endl;
cout<<"姓名:"<<setw(20)<<m_csname<<endl;
cout<<"性别:"<<setw(20);
switch(m_csex)
{
case'a':
cout<<"男"<<endl;
break;
case'b':
cout<<"女"<<endl;
break;
default:
cout<<"输入有误"<<endl;
}
cout<<"班级:"<<setw(20)<<m_cbanji<<endl;
cout<<"专业:"<<setw(20)<<m_czhuanye<<endl;
}
//*********************************************************************
void CStudent::Writef(char *fp)
{
ofstream fout(fp,ios::app);
if (!fout)
{
cout<<"文件不能打开"<<endl;
exit(0);
}
else
{
fout<<endl;
fout<<m_csno<<setw(20)<<m_csname<<setw(20)<<m_csex
<<setw(20)<<m_cbanji<<setw(20)<<m_czhuanye<<setw(20)
<<m_imaxcourse<<setw(20)<<m_ifactcourse;
}
fout.close();
}
//*********************************************************************
void CStudent::Readf(char *fp)
{
ifstream fin(fp);
if (!fin)
{
cout<<"文件不能打开"<<endl;
exit(0);
}
fin.get();
while (!fin.eof())
{
fin>>m_csno>>m_csname>>m_csex>>m_cbanji>>m_czhuanye
>>m_imaxcourse>>m_ifactcourse;
}
fin.close();
}
//*********************************************************************
char* CStudent::Queryf(char *fp,char *sno)
{
ifstream fin(fp);
if (!fin)
{
fin.close();
fin.clear();
}
fin.get();
while (!fin.eof())
{
fin>>m_csno>>m_csname>>m_csex>>m_cbanji>>m_czhuanye
>>m_imaxcourse>>m_ifactcourse;
if (strcmp(m_csno,sno)==0)
{
cout<<"此学生已存在!请按任意键继续!"<<endl;
Output();
getch();
handle_Memu5();
break;
}
}
return sno;
fin.close();
}
//*********************************************************************
void CStudent::addstudent()
{
char flag='Y';
char sno[20];
CStudent stu;
while(toupper(flag)=='Y')
{
cout<<"请输入你的学号:";
cin>>sno;
stu.Setsno(stu.Queryf("student.txt",sno));
stu.Input();
stu.Writef("student.txt");
stu.Output();
cout<<"添加成功!";
cout<<"是否继续输入:Y(是)/其它(否)";
cin>>flag;
if(toupper(flag)!='Y')
break;
}
}
//************************************************************************
void CStudent::Writef1(char *fp,CStudent stu[],int number)
{
ofstream fout(fp);
if (!fout)
{
cout<<"文件不能打开"<<endl;
}
else
{
for(int i=0;i<number;i++)
{
fout<<endl;
fout<<stu[i].m_csno<<setw(20)<<stu[i].m_csname<<setw(20)<<stu[i].m_csex
<<setw(20)<<stu[i].m_cbanji<<setw(20)<<stu[i].m_czhuanye<<setw(20)
<<stu[i].m_imaxcourse<<setw(20)<<stu[i].m_ifactcourse;
}
}
fout.close();
}
//*****************************************************************************
void CStudent::Readf1(char *fp)
{
ifstream fin(fp);
int i=0;
if (!fin)
{
cout<<"还没有学生!"<<endl;
cout<<"按任意键继续!";
getch();
handle_Memu5();
}
fin.get();
while (!fin.eof())
{
fin>>stu[i].m_csno>>stu[i].m_csname>>stu[i].m_csex>>stu[i].m_cbanji
>>stu[i].m_czhuanye>>stu[i].m_imaxcourse>>stu[i].m_ifactcourse;
i++;
}
number=i;
fin.close();
}
//**************************************************************
int CStudent::Queryf1(char *sno,int *p)
{
for(int j=0;j<number;j++)
{
if(strcmp(stu[j].Getsno(),sno)==0)
{
*p=j;
return 1;
}
}
return 0;
}
//********************************************************************
char * CStudent::delstudent(char *sno,int *p)
{
char flag;
Readf1("student.txt");
cout<<"请输入要删除的学生学号:";
cin>>sno;
if(Queryf1(sno,p))
{
stu[*p].Output();
cout<<"是否删除(Y/n):"<<endl;
cin>>flag;
if(toupper(flag)=='Y')
{
if(*p==number)
number=number-1;
else
{
for(int i=*p;i<number-1;i++)
stu[i]=stu[i+1];
number=number-1;
}
Writef1("student.txt",stu,number);
cout<<"成功删除student文本里的学生信息!"<<endl;
return sno;
}
}
cout<<"没有这个学生!"<<endl;
return NULL;
}
//********************************************************************
void CStudent::show(char *fp)
{
ifstream fin(fp);
if (!fin)
{
cout<<"您还没有任何添加学生"<<endl;
getch();
return;
}
fin.get();
while (!fin.eof())
{
fin>>m_csno>>m_csname>>m_csex>>m_cbanji>>m_czhuanye
>>m_imaxcourse>>m_ifactcourse;
Output();
}
fin.close();
}
//********************************************************************
CStudent::~CStudent(){};
/*********************************************************************
* *
*********************************************************************/
class CCourse
{
public:
CCourse()
{
m_imaxcourse=5;
m_ifactcourse=0;
}
friend class CSubject;
friend class CTeacher;
char *Getcno(void)
{
return m_ccno;
}
char *Getcname(void)
{
return m_ccname;
}
char *Getaddress(void)
{
return m_caddress;
}
char *Gettime(void)
{
return m_ctime;
}
void Setcname();
void Setcno(char *cno);
void Settime(char time[20])
{
strcpy(m_ctime,time);
}
void Setaddress(char address[20])
{
strcpy(m_caddress,address);
}
void Readf(char *fp);
void Writef(char *fp);
char* Queryf(char *fp,char *cno);
void Readf1(char *fp);
void Writef1(char *fp,CCourse course[],int count1);
int Queryf1(char *sno,int *p);
void Queryf2(char *sno,char *address,char *time);
void addcourse(char *fp);
int Setmaxcourse();
int Setfactcourse();
void delcourse(char *cno,int *p);
void Output();
void Input();
void show2(char *fp);
~CCourse();
protected:
int m_imaxcourse,m_ifactcourse,m_ikeshi;
float m_fxuefen;
char m_ccname[20],m_ccno[20],m_cxingzhi[20],m_ctime[20],m_caddress[20];
};
//*********************************************************************
CCourse course[60];
//*********************************************************************
void CCourse::Setcno(char *cno)
{
strcpy(m_ccno,cno);
}
//*********************************************************************
int CCourse::Setmaxcourse()
{
int maxcourse;
cout<<"请输入最多可选课程:";
maxcourse=shuzi();
m_imaxcourse=maxcourse;
return m_imaxcourse;
}
//*********************************************************************
int CCourse::Setfactcourse()
{
return ++m_ifactcourse;
}
void CCourse::Input()
{
cout<<"请输入课程名:";
cin>>m_ccname;
cout<<"请输入课程性质:";
cin>>m_cxingzhi;
cout<<"请输入课时:";
m_ikeshi=shuzi();
cout<<"请输入上课时间:";
cin>>m_ctime;
cout<<"请输入上课地址:";
cin>>m_caddress;
cout<<"请输入课程学分:";
m_fxuefen=shuzi();
}
//*********************************************************************
void CCourse::Output()
{
cout<<"课程号:"<<setw(20)<<m_ccno<<endl;
cout<<"课程名:"<<setw(20)<<m_ccname<<endl;
cout<<"课程性质:"<<setw(20)<<m_cxingzhi<<endl;
cout<<"课程课时:"<<setw(20)<<m_ikeshi<<endl;
cout<<"上课地点:"<<setw(20)<<m_caddress<<endl;
cout<<"上课时间:"<<setw(20)<<m_ctime<<endl;
cout<<"学分:"<<setw(20)<<m_fxuefen<<endl;
}
//*********************************************************************
void CCourse::Writef(char *fp)
{
ofstream fout(fp,ios::app);
if (!fout)
{
cout<<"文件不能打开"<<endl;
exit(0);
}
else
{
fout<<endl;
fout<<m_ccno<<setw(20)<<m_ccname<<setw(20)<<m_cxingzhi<<setw(20)
<<m_ikeshi<<setw(20)<<m_caddress<<setw(20)<<m_ctime<<setw(20)
<<m_fxuefen<<setw(20)<<m_imaxcourse<<setw(20)<<m_ifactcourse;
}
fout.close();
}
//*********************************************************************
void CCourse::Readf(char *fp)
{
ifstream fin(fp);
if (!fin)
{
cout<<"还没有课程记录!"<<endl;
cout<<"按任意键继续!";
getch();
handle_Memu5();
}
fin.get();
while (!fin.eof())
{
fin>>m_ccno>>m_ccname>>m_cxingzhi>>m_ikeshi>>m_caddress>>m_ctime
>>m_fxuefen>>m_imaxcourse>>m_ifactcourse;
count++;
}
fin.close();
}
//*********************************************************************
char* CCourse::Queryf(char *fp,char *cno)
{
ifstream fin(fp);
if (!fin)
{
return cno;
}
fin.get();
while (!fin.eof())
{
fin>>m_ccno>>m_ccname>>m_cxingzhi>>m_ikeshi>>m_caddress>>m_ctime
>>m_fxuefen>>m_imaxcourse>>m_ifactcourse;
if (strcmp(m_ccno,cno)==0)
{
cout<<"\n\n\n\n\t\t此课程已存在!"<<endl;
Output();
cout<<"请按任意键继续!";
getch();
handle_Memu5();
}
}
fin.close();
return cno;
}
//************************************************************************
void CCourse::Writef1(char *fp,CCourse course[],int count1)
{
ofstream fout(fp);
if (!fout)
{
cout<<"文件不能打开"<<endl;
exit(0);
}
else
{
for(int i=0;i<count1;i++)
{
fout<<endl;
fout<<course[i].m_ccno<<setw(20)<<course[i].m_ccname<<setw(20)
<<course[i].m_cxingzhi<<setw(20)<<course[i].m_ikeshi<<setw(20)
<<course[i].m_caddress<<setw(20)<<course[i].m_ctime<<setw(20)
<<course[i].m_fxuefen<<setw(20)<<course[i].m_imaxcourse<<setw(20)
<<course[i].m_ifactcourse;
}
}
fout.close();
}
//*****************************************************************************
void CCourse::Readf1(char *fp)
{
ifstream fin(fp);
int i=0;
if (!fin)
{
cout<<"还没有课程记录!"<<endl;
cout<<"按任意键继续!";
getch();
handle_Memu5();
}
fin.get();
while (!fin.eof())
{
fin>>course[i].m_ccno>>course[i].m_ccname>>course[i].m_cxingzhi
>>course[i].m_ikeshi>>course[i].m_caddress>>course[i].m_ctime>>course[i].m_fxuefen>>
course[i].m_imaxcourse>>course[i].m_ifactcourse;
i++;
}
count1=i;
fin.close();
}
//**************************************************************
int CCourse::Queryf1(char *cno,int *p)
{
for(int j=0;j<count1;j++)
{
if(strcmp(course[j].Getcno(),cno)==0)
{
*p=j;
return 1;
}
cout<<course[j].Getcno()<<cno;
}
return 0;
}
//**************************************************************
void CCourse::Queryf2(char *cno,char *time,char *address)
{
cout<<address<<time;
for(int j=0;j<count1;j++)
{
if(strcmp(course[j].Getcno(),cno)==0)
{
course[j].Settime(time);
course[j].Setaddress(address);
course[j].Output();
}
}
Writef1("course.txt",course,count1);
cout<<"成功修改course文本里的课程的时间地点!"<<endl;
}
//******************************************************************
void CCourse::addcourse(char *fp)
{
CCourse a;
char flag='Y';
char cno[20];
while(toupper(flag)=='Y')
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -