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

📄 mian.cpp

📁 用C++写的一个简单学籍管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#define _DEBUG_
#include <Windows.h>
#include <WinCon.h>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <assert.h>
#include "person.h"
#include "teacher.h"
#include "student.h"
#include "course.h"
#include "class.h"

using namespace std;

typedef  list<Class>::iterator cls_iter;
typedef list<Course>::iterator crs_iter;
typedef list<Student>::iterator stu_iter;

bool loginSession();
void loginInterface();
void setColor(int);
void setCursorPosition(int,int);

void mainWin();

void mulClsMgt();
void mulCrsMgt();
void sglClsMgt(Class  &);
void sglCrsMgt(Course &);

void lstStuIn( Class &);
void addStuIn(Class &);
void fndStuIn(Class &);
void mdfStuIn(Class &);
void delStuIn(Class &);

void lstStu(Class &);
void addStu(Class &);
void fndStu(Class &);
void mdfStu(Class &);
void delStu(Class &);

void lstCrs();
void addCrs();
void fndCrs();
void mdfCrs();
void delCrs();

void saveClasses();
void saveCourses();
void loadClasses();
void loadCourses();

void lstAllClsBase();
void lstAllCrsBase();
void lstSglStuCrs(int,Class &);

void clsCourseInfo(Class &);

HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
ifstream inClass;
ofstream outClass;
ifstream inCourse;
ofstream outCourse;
list<Class> classes;         //所有班级
list<Course>courses;      //所有课程
int classesNumber;
int coursesNumber;

int main_()
{

	const teaNum=6;
	string teaName[teaNum]={"H.M.Deitel","Kuth","James F.Kurose","Bruce Eckel","Kobe","候捷"};
	int teaId[teaNum]={101,102,103,104,105,106};
	Sex teaSex[teaNum]={MALE,MALE,MALE,MALE,MALE,MALE};
	Teacher teas[teaNum];
	for (int i=0;i<teaNum;i++)
	{
	   teas[i]=Teacher(teaName[i],teaId[i]);
	   cout<<teas[i].id<<" "<<teas[i].name<<" "<<teas[i].sex<<endl;
	}


	const crsNum=teaNum;
	string crsName[crsNum]={"C++程序设计","软件工程","计算机网络","Thinking in Java","篮球(一)","Word排版艺术"};
	int crsId[crsNum]={201,202,203,304,205,206};
	float crsScore[crsNum]={90,85,93,98,89,87};
	Course cours[crsNum];
	for (int i=0;i<crsNum;i++)
	{
		cours[i]=Course(crsName[i],crsId[i],crsScore[i]*0);
		cout<<crsName[i]<<" "<<crsId[i]<<" "<<crsScore[i]<<endl;
		cours[i].setTeacher(teas[i]);
		courses.push_back(cours[i]);
	}
	coursesNumber=crsNum;



	const stuNum=12;
	string stuName[stuNum]=
	{
		"Susan","Fall","Fengcool","Jana","大伟","Tea",
			"Caption","Bill","竹子","小米","Linus","SHE"
	};
	int stuId[stuNum]=
	{
		301,302,303,304,305,306,
			307,308,309,310,311,312
	};
	Sex  stuSex[stuNum]=
	{
		FEMALE,MALE,FEMALE,FEMALE,MALE,FEMALE,
			MALE,MALE,FEMALE,FEMALE,MALE,FEMALE
	};
	Student stus[stuNum];
	srand( (unsigned)time( NULL ) ); 
	for (int i=0;i<stuNum;i++)
	{
		stus[i]=Student(stuName[i],stuId[i],stuSex[i]);
		for (int j=0;j<crsNum;j++)
		{
			float f=rand()*45/32767+55.0;
			cours[j].setScore(f);
			stus[i].addCourse(cours[j]);
		}
	}

	int k=0;
	Class cs0401("cs0401",401);
	for(;k<stuNum/3;k++)
	{
		cs0401.addStudent(stus[k]);
	}

	Class cs0402("cs0402",402);
	for(;k<2*stuNum/3;k++)
	{
		cs0402.addStudent(stus[k]);
	}

	Class cs0403("cs0403",403);
	for(;k<stuNum;k++)
	{
		cs0403.addStudent(stus[k]);
	}
	classes.push_back(cs0401);
	classes.push_back(cs0402);
	classes.push_back(cs0403);
	classesNumber=3;




	/*Teacher marry("Marry",201,MALE);
	Teacher jack("Jack",202);
	Teacher bill("Bill",203);
	Teacher kobe("Kobe",204);

	Course math("高等数学",301);
	Course cs("计算机基础",302);
	Course database("数据库",303);
	Course pe("体育",304);
	math.setTeacher(bill);
	cs.setTeacher(marry);
	database.setTeacher(jack);
	pe.setTeacher(kobe);
	courses.push_back(math);
	courses.push_back(cs);
	courses.push_back(database);
	courses.push_back(pe);
	coursesNumber=4;

	Student susan("Susan",101,FEMALE);
	Student jana("Jana",102,FEMALE);
	Student fall("Fall",103,MALE);
	Student fengcool("Fengcool",104,FEMALE);
	susan.addCourse(math);
	susan.addCourse(pe);
	jana.addCourse(math);
	jana.addCourse(pe);
	//math.setScore(59);
	fall.addCourse(database);
	fall.addCourse(cs);
	fengcool.addCourse(database);
	fengcool.addCourse(cs);

	Class cs0403("CS0403",403);
	Class cs0404("CS0404",404);
	cs0403.addStudent(susan);
	cs0403.addStudent(jana);
	cs0404.addStudent(fall);
	cs0404.addStudent(fengcool);
	classes.push_back(cs0403);
	classes.push_back(cs0404);
	classesNumber=2;
	*/

	saveClasses();
	saveCourses();
	//classes.front().printClass();
	classes.clear();
	courses.clear();

	loadClasses();
	loadCourses();
	cout<<"\n~~~~~~~~\n";
	courses.front().printCourse();

	return 0;
}

int main()
{
	cout.setf(ios::left);
	SetConsoleTitle("I LOVE YOU!");
	loginSession();
	mainWin();
	return 0;
}

bool loginSession()
{
	loginInterface();
	return true;
}
void loginInterface()
{
	
	setColor(10);
	setCursorPosition(32,5);
	cout<<"学生学籍管理系统";
	setCursorPosition(34,8);
	cout<<"华中科技大学";
	setCursorPosition(0,23);
	//cout.setf(ios::left);
	//cout<<"按任意健继续......";
	cin.get();
}
void mainWin()
{
	loadClasses();
	loadCourses();
	int chs=0;
	do{
		system("cls");
		setCursorPosition(0,4);
		cout<<setw(20)<<"(1) 班级管理";
		cout<<"   共 "<<setw(2)<<classesNumber <<" 个班"<<endl;
		cout<<'\n';
		cout<<setw(20)<<"(2) 课程管理";
		cout<<"   共 "<<setw(2)<<coursesNumber <<" 课程"<<endl;

		setCursorPosition(0,23);
		cout<<"请选择管理项(1~2),退出(0):";
		cin>>chs;
		//cin.ignore();//跳过换行?
		switch(chs)
		{
		case  1:
			mulClsMgt();
			break;
		case 2:
			mulCrsMgt();

		default: ;
		}
	}while(chs!=0);
	saveClasses();
	saveCourses();
}

void mulClsMgt()
{
	system("cls");
	//cout.setf(ios::left);
	cout<<setw(20)<<"班级编号"<<setw(20)<<"班级名"<<setw(20)<<"班级人数"<<endl;
	lstAllClsBase();
	setCursorPosition(0,23);
	cout<<"请选择要管理的班级(班级编号):";
	int classId;
	cin>>classId;
	cin.ignore();
	cls_iter iter = classes.begin();
	while (iter!=classes.end()) 
	{
		if(classId==(*iter).getId())
		{
			Class &cl=(*iter);
			sglClsMgt(cl);
			break;
		}
		iter++;
	}
}

void sglClsMgt(Class &cl)
{
	int chs =0;
	do {
		system("cls");
		cout<<"欢迎光临"<<cl.getName();
		setCursorPosition(0,5);
		cout<<setw(40)<<"(0) 返回上级会话"<<endl;
		cout<<setw(40)<<"(1) 查看学生信息"<<endl;
		cout<<setw(40)<<"(2) 添加学生信息"<<endl;
		cout<<setw(40)<<"(3) 查找学生信息"<<endl;
		cout<<setw(40)<<"(4) 修改学生信息"<<endl;
		cout<<setw(40)<<"(5) 删除学生信息"<<endl;
		cout<<setw(40)<<"(6) 查看班级课程"<<endl;
		
		setCursorPosition(0,23);
		cout<<"请选择(0~6): ";
		cin>>chs;
		switch(chs)
		{
		case 1:
			lstStu(cl);
			break;
		case 2:
			addStu(cl);
			break;
		case 3:
			fndStu(cl);
			break;
		case 4:
			mdfStu(cl);
			break;
		case 5:
			delStu(cl);
			break;
		case 6:
			clsCourseInfo(cl);
			break;
		default: ;
		}
	}while(chs!=0);
}

void mulCrsMgt()
{
	system("cls");
	cout<<setw(20)<<"课程号"<<setw(20)<<"课程名"<<setw(20)<<"选课人数"<<endl;
	lstAllCrsBase();
	setCursorPosition(0,23);
	cout<<"按任意键继续.....";
	cin.ignore();//跳过换行
	cin.get();
	int chs=0;
	do
	{
		system("cls");
		setCursorPosition(0,5);
		cout<<setw(40)<<"(1) 查看课程信息"<<endl;
		cout<<setw(40)<<"(2) 添加课程信息"<<endl;
		cout<<setw(40)<<"(3) 查找课程信息"<<endl;
		cout<<setw(40)<<"(4) 修改课程信息"<<endl;
		cout<<setw(40)<<"(5) 删除课程信息"<<endl;
		cout<<setw(40)<<"(6) 返回上级会话"<<endl;

		setCursorPosition(0,23);
		cout<<"请选择(1~6):";
		cin>>chs;
		switch(chs) {
	case 1:
		lstCrs();
		break;
	case 2:
		addCrs();
		break;
	case 3:
		fndCrs();
		break;
	case 4:
		mdfCrs();
		break;
	case 5:
		delCrs();
		break;
	default:;
		}
	}while(chs!=6);
}

void lstStuIn( Class &cl)
{
	list<Student>::iterator iBegin= cl.students.begin();
	list<Student>::iterator iEnd= cl.students.end();
	while (iBegin!=iEnd)
	{
		(*iBegin).printBase();
		cout<<endl;
		iBegin++;
	}
}
void lstStu(Class & cl)
{

⌨️ 快捷键说明

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