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

📄 学生选课系统.cpp

📁 这是一个很小的学生成绩管理系统
💻 CPP
📖 第 1 页 / 共 4 页
字号:
{
	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 + -