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

📄 main.cpp

📁 这是一个学生选修课系统开发的程序!!很好用的啊!
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			cout<<setw(20)<<pos->name<<setw(10)<<pos->number<<setw(6)<<pos->credit<<setw(10)<<pos->selectedStu<<setw(10)<<pos->maxstu<<setw(10)<<pos->property<<"\n";
			pos=pos->next;
		}
	}
}
void admin::readStuInfo(student *&sfirst,student *&slast)
{
	ifstream fin("student.txt");
	if(fin.fail())
		cerr<<"无学生数据!"<<endl;
	else
	{
		do
		{
			student *stu=new student();
			if(!fin.eof())
			{
				fin>>stu->name>>stu->number>>stu->department>>stu->grade>>stu->Class>>stu->password>>stu->totalCredit;
				stu->readCourseInfoTostu();
			}
			else
				break;
			if(sfirst==NULL)
				sfirst=slast=stu;
			else
			{
				slast->next=stu;
				stu->previous=slast;
				slast=stu;
			}
		}while(!fin.eof());
	}
}
void admin::saveStuInfo(student *&sfirst)
{
	string fileName="student.txt";
    student *pos=sfirst;
	if(sfirst==NULL)
		cerr<<"无数据,不能保存!"<<endl;
	else
	{
		ofstream fout(fileName.c_str());
		while(pos)
		{
	        fout<<pos->name<<" "<<pos->number<<" "<<pos->department<<" "<<pos->grade<<" "<<pos->Class<<" "<<pos->password<<" "<<pos->totalCredit;            
			pos=pos->next;
            if(pos)
                fout<<endl;
		}
		fout.close();
	}
}
void admin::readCourseInfo(course *&cfirst,course *&clast)
{
	ifstream fin("course.txt");
	if(fin.fail())
		cerr<<"无课程数据!"<<endl;
	else
	{
		do
		{
			course *cou=new course();
			if(!fin.eof())
			{
				fin>>cou->name>>cou->number>>cou->credit>>cou->selectedStu>>cou->maxstu>>cou->property;
			}
			else
				break;
			if(cfirst==NULL)
				cfirst=clast=cou;
			else
			{
				clast->next=cou;
				cou->previous=clast;
				clast=cou;
			}
		}while(!fin.eof());
	}
}
void admin::saveCourseInfo(course *&cfirst)
{
    course *pos=cfirst;
	if(cfirst==NULL)
		cerr<<"无数据,不能保存!"<<endl;
	else
	{
		ofstream fout("course.txt");
		while(pos)
		{
	        fout<<pos->name<<" "<<pos->number<<" "<<pos->credit<<" "<<pos->selectedStu<<" "<<pos->maxstu<<" "<<pos->property;            
            pos=pos->next;
            if(pos)
                fout<<endl;
		}
		fout.close();
	}
}
void admin::releaseStudent(student* &target)
{
  student *pos=target;
  while(pos)
  {
    pos=pos->next;
    delete target;
    target=pos;
  }  
}
void admin::releaseCourse(course* &target)
{
  course *pos=target;
  while(pos)
  {
    pos=pos->next;
    delete target;
    target=pos;
  }  
}
bool isEqual(string password)
{
    char ps[20],ch; 
	char ps1[20];
	int i,j=0;
	for(i=0;i<password.length();i++)
        ps[i]=password[i];
	ps[i]='\0';
    cout<<"输入密码:";
    while(true)
	{
	    ch=getch();
        if(isdigit(ch)||isalpha(ch))
		{
			ps1[j]=ch;
			j++;
			cout<<"*";
		}
		else if(ch==13)
			break;
	}
	ps1[j]='\0';
	if(strcmp(ps,ps1)==0)
		return true;
	else
		return false;
}
void addStudentMenu(admin *&ad,student *&sfirst,student *&slast)
{
	system("cls");
	string answer;
	do
	{
		ad->addStudent(sfirst,slast);
		cout<<"继续添加?(Y/N):";
		cin>>answer;
        system("cls");
	}while(answer=="Y"||answer=="y");
}
void setStudentInfoMenu(admin *&ad,student *&sfirst)
{
	system("cls");
	string answer,num;
	do
	{
        cout<<"请输入学号:";
		cin>>num;
		ad->setStudent(sfirst,num);
		cout<<"继续修改?(Y/N):";
		cin>>answer;
		system("cls");
	}while(answer=="Y"||answer=="y");
}
void selectCourseMenu(admin *&ad,student *&sfirst,course *&cfirst)
{
	system("cls");
	string answer,snum,cnum;
	do
	{
		cout<<"请输入要添加课程学生的学号:";
		cin>>snum;
		student *spos=ad->searchStudent(sfirst,snum);
		if(spos==NULL)
			cout<<"无此学生!";
		else
		{
			do
			{
			    cout<<"请输入要添加课程的课程号:";
			    cin>>cnum;
				spos->selectCourse(cfirst,cnum);
				cout<<"继续添加课程(Y/N):";
				cin>>answer;
				system("cls");
			}while(answer=="Y"||answer=="y");
			spos->saveCourseInfoForStu();
		}
		cout<<"继续为学生选课(Y/N):";
		cin>>answer;
		system("cls");
	}while(answer=="Y"||answer=="y");
}
void setStudentMenu(admin *&ad,student *&sfirst,course *&cfirst)
{
	system("cls");
	int choice;
	do
	{
		cout<<"1.修改学生基本信息\n2.为学生添加课程\n0.返回上一级\n请选择:";
        cin>>choice;
		switch(choice)
		{
		case 0:system("cls");break;
		case 1:setStudentInfoMenu(ad,sfirst);break;
		case 2:selectCourseMenu(ad,sfirst,cfirst);break;
		}
	}while(choice);
}
void getStudentMenu(admin *&ad,student *&sfirst)
{
	system("cls");
	string answer,num;
	do
	{
        cout<<"请输入学号:";
		cin>>num;
		ad->getStudent(sfirst,num);
		cout<<"继续查找?(Y/N):";
		cin>>answer;
		system("cls");
	}while(answer=="Y"||answer=="y");
}
void deleteStudentMenu(admin *&ad,student *&sfirst,student *&slast)
{
	system("cls");
	string answer,num;
	do
	{
        cout<<"请输入学号:";
		cin>>num;
		ad->deleteStudent(sfirst,slast,num);
		cout<<"继续删除?(Y/N):";
		cin>>answer;
		system("cls");
	}while(answer=="Y"||answer=="y");
}
void addCourseMenu(admin *&ad,course *&cfirst,course *&clast)
{
	system("cls");
	string answer;
	do
	{
		ad->addCourse(cfirst,clast);
		cout<<"继续添加?(Y/N):";
		cin>>answer;
        system("cls");
	}while(answer=="Y"||answer=="y");
}
void deleteCourseMenu(admin *&ad,course *&cfirst,course *&clast)
{
	system("cls");
	string answer,num;
	do
	{
        cout<<"请输入课程号:";
		cin>>num;
		ad->deleteCourse(cfirst,clast,num);
		cout<<"继续删除?(Y/N):";
		cin>>answer;
		system("cls");
	}while(answer=="Y"||answer=="y");
}
void getCourseMenu(admin *&ad,course *&cfirst)
{
	system("cls");
	string answer,num;
	do
	{
        cout<<"请输入课程号:";
		cin>>num;
		ad->getCourse(cfirst,num);
		cout<<"继续查找?(Y/N):";
		cin>>answer;
		system("cls");
	}while(answer=="Y"||answer=="y");
}
void setCourseMenu(admin *&ad,course *&cfirst)
{
	system("cls");
	string answer,num;
	do
	{
        cout<<"请输入课程号:";
		cin>>num;
		ad->setCourse(cfirst,num);
		cout<<"继续修改?(Y/N):";
		cin>>answer;
		system("cls");
	}while(answer=="Y"||answer=="y");
}
void adminMenu(admin *&ad,student *&sfirst,student *&slast,course *&cfirst,course *&clast)
{
    int choice;
	do
	{
		system("cls");
		cout<<"请选择操作:\n1.增加学生  2.修改学生信息  3.删除学生  4.查看学生信息"
			<<"\n5.增加课程  6.修改课程信息  7.删除课程  8.查看课程信息"
			<<"\n9.查看所有学生信息  10.查看所有课程信息  0.退出\n请选择:";
		cin>>choice;
		switch(choice)
		{
		case 0:ad->saveStuInfo(sfirst);
			ad->saveCourseInfo(cfirst);
			ad->releaseCourse(cfirst);				
			ad->releaseStudent(sfirst);
			exit(0);break;
		case 1:addStudentMenu(ad,sfirst,slast);break;
		case 2:setStudentMenu(ad,sfirst,cfirst);break;
		case 3:deleteStudentMenu(ad,sfirst,slast);break;
		case 4:getStudentMenu(ad,sfirst);break;
		case 5:addCourseMenu(ad,cfirst,clast);break;
		case 6:setCourseMenu(ad,cfirst);break;
		case 7:deleteCourseMenu(ad,cfirst,clast);break;
		case 8:getCourseMenu(ad,cfirst);break;
		case 9:system("cls");ad->printStudent(sfirst);cout<<"按任意键返回...";getch();break;
		case 10:system("cls");cout<<"本学期所有课程如下:\n\n";ad->printCourse(cfirst);cout<<"\n按任意键返回...";getch();break;
		}
	}while(choice);
}
void checkAPassword(admin *&ad,student *&sfirst,student *&slast,course *&cfirst,course *&clast)
{
	system("cls");
	string password="admin";
	int i=0;
	do
	{
		if(isEqual(password))
			adminMenu(ad,sfirst,slast,cfirst,clast);
		else
		{
			cout<<"\n密码输入有误!请重新输入!";
			i++;
			if(getch()==13)
			    system("cls");
		}
	}while(i&&i<3);
	if(i==3)
		cout<<"输入错误超过3次!你已被强制退出!\n";
}
void stuSelectCouMenu(admin *&ad,student *&stu,course *&cfirst)
{
	system("cls");
	string num,answer;
	do
	{
		cout<<"请输入课程号:";
		cin>>num;
		stu->selectCourse(cfirst,num);
		cout<<"继续选课(Y/N):";
		cin>>answer;
		system("cls");
	}while(answer=="Y"||answer=="y");
	stu->saveCourseInfoForStu();
}
void stuDeleteCouMenu(course *&cfirst,student *&stu)
{
	system("cls");
	string answer,num;
	do
	{
        cout<<"请输入课程号:";
		cin>>num;
		stu->deleteCourse(cfirst,num);
		cout<<"继续删除?(Y/N):";
		cin>>answer;
		system("cls");
	}while(answer=="Y"||answer=="y");
	stu->saveCourseInfoForStu();
}
void studentMenu(admin *&ad,student *&stu,student *&sfirst,course *&cfirst)
{
    int choice;
	do
	{
		system("cls");
		cout<<"请选择操作:\n1.选课\n2.删除已选课程\n3.查看所有课程\n4.查看已选课程\n5.修改密码\n0.退出\n请选择:";
		cin>>choice;
		switch(choice)
		{
		case 0:ad->saveStuInfo(sfirst);
			ad->saveCourseInfo(cfirst);
		    ad->releaseCourse(cfirst);				
			ad->releaseStudent(sfirst);
			exit(0);break;
		case 1:stuSelectCouMenu(ad,stu,cfirst);break;
		case 2:stuDeleteCouMenu(cfirst,stu);break;
		case 3:system("cls");cout<<"本学期所有课程如下:\n\n";
		    ad->printCourse(cfirst);cout<<"\n按任意键返回...";getch();break;
		case 4:system("cls");cout<<"已选课程如下:\n\n";stu->getCourse();cout<<"\n按任意键返回...";getch();break;
		case 5:stu->setPassword();break;
		}
	}while(choice);
}
void checkSPassword(admin *&ad,student *&sfirst,course *&cfirst)
{
	system("cls");
	string num,pw;
	int i=0;
	do
	{
	    cout<<"请输入学号:";
	    cin>>num;
	    student *stu=ad->searchStudent(sfirst,num);
	    if(stu==NULL)
		{
		    cout<<"学号输入有误!请重新输入!";
			i++;
			if(getch()==13)
			    system("cls");
		}
	    else
		{
			if(isEqual(stu->getPassword()))
			    studentMenu(ad,stu,sfirst,cfirst);
		    else
			{
			    cout<<"\n密码输入有误!请重新输入!";
			    i++;
				if(getch()==13)
			        system("cls");
			}
		}
	}while(i&&i<3);
	if(i==3)
		cout<<"输入错误超过3次!你已被强制退出!\n";
}
void main()
{
	int choice;
	admin *ad=new admin();
	student *sfirst=NULL;
	student *slast=NULL;
	course *cfirst=NULL;
	course *clast=NULL;
	ad->readStuInfo(sfirst,slast);
	ad->readCourseInfo(cfirst,clast);
	cout<<"请选择登陆方式:\n1.学生登陆\n2.管理员登陆\n0.退出\n请选择:";
	cin>>choice;
	switch(choice)
	{
	case 0:ad->releaseStudent(sfirst);ad->releaseCourse(cfirst);exit(0);break;
	case 1:checkSPassword(ad,sfirst,cfirst);break;
	case 2:checkAPassword(ad,sfirst,slast,cfirst,clast);break;
	}
}

⌨️ 快捷键说明

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