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

📄 学生选课系统.cpp

📁 能够添加课程、学生
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#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 + -