⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 学生选课系统.cpp

📁 能够添加课程、学生
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		cout<<"请输入课程号:";
		cin>>cno;
		a.Setcno(Queryf("course.txt",cno));
		a.Input();	
		ifstream fin(fp);
		fin.close();
		fin.clear();
		fin.open("course.txt");
		if (!fin)
		{
			a.Writef("course.txt");
			a.Output();	
			cout<<"添加成功!";
			return;
		}
		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(a.Getaddress(),m_caddress)==0&&strcmp(a.Gettime(),m_ctime)==0)
			{
				cout<<"\n\n\t\t上课时间与"<<a.Getcname()<<"发生冲突!"<<endl;
				cout<<"请按任意键继续!";
				getch();
				handle_Memu5();
			}
		}
		fin.close();
		a.Writef("course.txt");
		a.Output();	
		cout<<"添加成功!";
		cout<<"是否继续输入:Y(是)/其它(否)";
		cin>>flag;
	}
}
void CCourse::delcourse(char *cno,int *p)
{
	char flag;
	Readf1("course.txt");
	cout<<"请输入要删除的课程号:";
	cin>>cno;
	if(Queryf1(cno,p))
	{
		course[*p].Output();
		cout<<"是否删除(Y/N):"<<endl;
		cin>>flag;
		if(toupper(flag)=='Y')
		{
			if(*p==count1) 
				count1=count1-1;
			else
			{
				for(int i=*p;i<count1-1;i++)
					course[i]=course[i+1];
				count1=count1-1;
			}
			Writef1("course.txt",course,count1);
			cout<<"成功删除course文本里的此课程信息!"<<endl;
		}	
	}
	else
		cout<<"没有这门课!"<<endl;
}
//*********************************************************************
void CCourse::show2(char *fp)
{
	ifstream fin(fp);
	if (!fin)
	{
		cout<<"您还没有任何添加学生"<<endl;
		cout<<"\n\t按任意键继续...";
		getch();
		return;
	}
	fin.get();
	while (!fin.eof())
	{
		fin>>m_ccno>>m_ccname>>m_cxingzhi>>m_ikeshi>>m_caddress>>m_ctime
			>>m_fxuefen>>m_imaxcourse>>m_ifactcourse;
		Output();
	} 
	fin.close();
}
//*********************************************************************
CCourse::~CCourse(){}
/*********************************************************************
*                                                                    *
*********************************************************************/
class CTeacher 
{
public:
	CTeacher(){};
	friend class CLand;
	friend class CSubject;
	char *Gettno()
	{
		return m_ctno;
	}
	void Settname();
	void Settno(char *tno);
	void Setsex();
	void Setzhicheng();
	void Setxi();
	void Readf(char *fp);
	void Writef(char *fp);
	char* Queryf(char *fp,char *tno);
	void Readf1(char *fp);
	void Writef1(char *fp,CTeacher teacher[],int count3);
	int Queryf1(char *tno,int *p);
	void Output();
	void Input();
	void addteacher();
	void delteacher();
	void show3(char *fp);
	~CTeacher();
protected:
	char m_ctname[20],m_ctno[20],m_ctxi[20],m_ctsex,m_ctzhicheng[20];
	CCourse course;CStudent student;
};
//*********************************************************************
 CTeacher teach[60];
//*********************************************************************
void CTeacher::Settno(char *tno)
{	
	strcpy(m_ctno,tno);
}
//********************************************************************
void CTeacher::Input()
{
	cout<<"请输入教师名:";
	cin>>m_ctname;
	cout<<"请输入教师所属系:";
	cin>>m_ctxi;
	cout<<"性别:(a=男,b=女)";
	cin>>m_ctsex;
	while(m_ctsex!='a'&&m_ctsex!='b')
	{
		cout<<"你的输入有误,请重新输入:";
		cin>>m_ctsex;
	}
	cout<<"请输入教师职称:";
	cin>>m_ctzhicheng;
}
//*********************************************************************
void CTeacher::Output()
{
	cout<<"教师号:"<<setw(20)<<m_ctno<<endl;
    cout<<"教师名:"<<setw(20)<<m_ctname<<endl;
	cout<<"教师所属系:"<<setw(20)<<m_ctxi<<endl;
	cout<<"性别:"<<setw(20);
	switch(m_ctsex)
	{
	case'a':
		cout<<"男"<<endl;
		break;
	case'b':
		cout<<"女"<<endl;
		break;
	default:
		cout<<"输入有误"<<endl;
	}
	cout<<"教师职称:"<<setw(20)<<m_ctzhicheng<<endl;
}
//*********************************************************************
void CTeacher::Writef(char *fp)
{
	ofstream fout(fp,ios::app);
	if (!fout)
	{
		cout<<"文件不能打开"<<endl;
		exit(0);
	}
	else
	{
		fout<<endl;
		fout<<m_ctno<<setw(20)<<m_ctname<<setw(20)<<m_ctxi<<setw(20)
			<<m_ctsex<<setw(20)<<m_ctzhicheng;
	}
	fout.close();
}
//*********************************************************************
void CTeacher::Readf(char *fp)
{
	ifstream fin(fp);
	if (!fin)
	{
		cout<<"文件不能打开"<<endl;
		exit(0);
	}
	fin.get();
	while (!fin.eof())
	{
		fin>>m_ctno>>m_ctname>>m_ctxi>>m_ctsex>>m_ctzhicheng;
	} 
	fin.close();    
}
//*********************************************************************
char * CTeacher::Queryf(char *fp,char *tno)
{
    ifstream fin(fp);
    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<<"此教师已经注册,请按任意键继续!";
			Output();
			getch();
			handle_Memu5();
		}
	}
	return tno;
	fin.close();      
} 
//*********************************************************************
void CTeacher::addteacher()
{
	char flag='Y';
	char tno[20];
	while(toupper(flag)=='Y')
	{		
		cout<<"请输入您的教师号:";
		cin>>tno;
		teach[count3].Settno(teach[count3].Queryf("teacher.txt",tno));
		teach[count3].Input();		
		teach[count3].Writef("teacher.txt");
		teach[count3].Output();
		count3++;		
		cout<<"添加成功!";
		cout<<"是否继续输入:Y(是)/其它(否)";
		cin>>flag;
		if(toupper(flag)!='Y')
			break;
	}
}
//************************************************************************
void CTeacher::Writef1(char *fp,CTeacher teach[],int count3)
{
	ofstream fout(fp);
	if (!fout)
	{
		cout<<"文件不能打开"<<endl;
		exit(0);
	}
	else
	{
		for(int i=0;i<count3;i++)
		{
			fout<<endl;
			fout<<teach[i].m_ctno<<setw(20)<<teach[i].m_ctname<<setw(20)<<teach[i].m_ctxi<<setw(20)
				<<teach[i].m_ctsex<<setw(20)<<teach[i].m_ctzhicheng;
		}
	}
	fout.close();
}
//*****************************************************************************
void CTeacher::Readf1(char *fp)
{
	ifstream fin(fp);
	int i=0;
	if (!fin)
	{
		cout<<"尚未添加教师!按任意键继续..."<<endl;
		getch();
		handle_Memu5();
	}
	fin.get();
	while (!fin.eof())
	{
		fin>>teach[i].m_ctno>>teach[i].m_ctname>>teach[i].m_ctxi
			>>teach[i].m_ctsex>>teach[i].m_ctzhicheng;
		i++;
	} 
	count3=i;
	fin.close();    
}
//**************************************************************
int CTeacher::Queryf1(char *tno,int *p)   
{
	for(int j=0;j<count3;j++)
	{
		if(strcmp(teach[j].Gettno(),tno)==0)
		{
			*p=j;
			return 1;
		}
	}
	return 0;
}
//********************************************************************
void CTeacher::delteacher()
{
	int*p;
	char flag;
	p=new int;
	char tno[20];
	Readf1("teacher.txt");
	cout<<"请输入要删除的教师号:";
	cin>>tno;
	if(Queryf1(tno,p))
	{
		teach[*p].Output();
		cout<<"是否删除(Y/n):"<<endl;
		cin>>flag;
		if(toupper(flag)=='Y')
		{
			if(*p==count3) 
				count3=count3-1;
			else
			{
				for(int i=*p;i<count3-1;i++)
					teach[i]=teach[i+1];
				count3=count3-1;
			}
			Writef1("teacher.txt",teach,count3);
			delete p;
			cout<<"删除成功!"<<endl;
		}	
	}
	else
	{
		cout<<"没有这个教师!"<<endl;
		delete p;
	}
}
//*********************************************************************
void CTeacher::show3(char *fp)
{
	ifstream fin(fp);
	if (!fin)
	{
		cout<<"\n\n\t您还没有任何添加教师"<<endl;
		cout<<"\n\t请按任意键继续...";
		getch();
		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 *Getaddress(void)
	{
		return course.m_caddress;
	}
	char *Gettime(void)
	{
		return course.m_ctime;
	}
	char *Setcno();
	void Readf(char *fp);
	void Writef(char *fp,char*sno,char *cno);
	void Queryf(char *fp,char *sno);
	void xuanke(char *fp,char *sno);   
	void Output();
	void tuixuan(char *sno);
	void Output1();
	void Input();
	void show4(char *fp);       
	void show5(char *fp,char *sno);  
	void show6(char *fp);
	void Readf1(char *fp);
	void Writef1(char *fp,CSubject subject[],int count2);
	int Queryf1(char *sno,char *cno,int *p);
	void Queryf2(char *sno,int *p);
	void Queryf3(char *cno,int *p);
	void getmark(char *fp);
	char* xiugai(char *cno,char *address,char *time);
	void Readf2(char *fp,char *sno);
	void Setaddress(char address[20]);
	void Settime(char time[20]);
	~CSubject();
	protected:
		int m_imaxcourse,m_ifactcourse;
		int m_cmark;
		CStudent stu;
		CCourse course;
		CTeacher teacher;
};
//*********************************************************************
CSubject subject[600];
//*********************************************************************
char* CSubject::Setcno()
{	
	char cno[20];
	cout<<"请输入课程号:";
	cin>>cno;
	strcpy(course.m_ccno,cno);
	return course.m_ccno;
}
//*********************************************************************
void CSubject::Setaddress(char address[20])
{	
	strcpy(course.m_caddress,address);
}
//*********************************************************************
void CSubject::Settime(char time[20])
{	
	strcpy(course.m_ctime,time);
}
//*********************************************************************
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,char *sno,char *cno)
{
	ofstream fout(fp,ios::app);
	if (!fout)
	{
		cout<<"文件不能打开"<<endl;
		exit(0);
	}
	else
	{
		fout<<endl;
		fout<<sno<<setw(20)<<cno<<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;
		exit(0);
	}
	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;
	} 
	fin.close();    
}
void CSubject::Readf2(char *fp,char *sno)
{
	char cno[20];
	ifstream fin(fp);
	cout<<"请输入课程号";
	cin>>cno;
	if (!fin)
	{
		cout<<"老师还没有打分"<<endl;
		cout<<"请按任意键继续...";
		getch();
		handle_Memu3(sno);
	}
	fin.get();
	while (!fin.eof())
	{
		fin>>stu.m_csno>>course.m_ccno>>course.m_ccname>>m_cmark;
		if(strcmp(cno,course.m_ccno)==0 && strcmp(sno,stu.m_csno)==0)
		{
			cout<<course.m_ccno<<"   "<<course.m_ccname<<"   "<<m_cmark;
		}
	} 
	fin.close();    
}
//*********************************************************************
void CSubject::Queryf(char *fp,char *sno)
{
    ifstream fin(fp);
    int flag=0;
    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;
			break;
		}
	}
	if(!flag)
	{
		cout<<"\n\n\n\t\t对不起,暂时没有这个学生!"<<endl;
		cout<<"\t\t请你先到管理员处注册。请按任意键继续.."<<endl;
		getch();
		handle_Memu1(); 
	}
	fin.close(); 
} 
//************************************************************************
void CSubject::Writef1(char *fp,CSubject subject[],int count2)
{
	ofstream fout(fp);
	if (!fout)
	{
		cout<<"文件不能打开"<<endl;
		exit(0);
	}
	else
	{
		for(int i=0;i<count2;i++)
		{
			fout<<endl;
			fout<<subject[i].stu.m_csno<<setw(20)<<subject[i].course.m_ccno<<setw(20)
				<<subject[i].course.m_ccname<<setw(20)<<subject[i].course.m_caddress<<setw(20)
				<<subject[i].course.m_cxingzhi<<setw(20)<<subject[i].course.m_ctime<<setw(20)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -