学生选课和成绩管理系统

学生选课和成绩管理系统

毕业季,复习c++以找工作,恰逢期末,写一下成绩管理系统,蹭下热度,顺便复习。。。

类框架

  • 系统管理员(sys)
  • 教师(teacher)
  • 学生(student)
  • 课程(course)
  • 选课项(S_C)

类成员设计

  • 系统管理员(sys)

教师表
学生表
课程表
选课表
文件I/O流

  • 教师(teacher)

选课表(打分)
学生表(对应班级的时候查看)
工号
姓名
授课数
授课课程

  • 学生(student)

课程表(选课)
选课表
学号
姓名
班级号
专业

  • 课程(course)

课程ID
课程名称
课程性质
学分
学时

  • 选课项(S_C)

学号
学生名
课程名称
分数

类功能函数设计

  • 系统管理员(sys)

载入教师信息函数
载入学生信息函数
载入课程信息函数
载入选课信息函数
开始界面函数
系统管理员界面
添加学生、教师、课程函数
修改学生、教师、课程函数
删除学生、教师、课程函数
保存学生、教师、课程函数

  • 教师(teacher)

打印教师信息函数
设置信息函数
教师管理界面
用文件打分函数
修改分数函数
查找函数
保存分数信息函数
排序函数
分析统计函数

  • 学生(student)

打印学生信息函数
设置信息函数
学生管理界面
保存选课信息函数
选课函数
退课函数

  • 课程(course)

打印课程信息
设置信息函数

  • 选课项(S_C)

打印信息
设置信息函数

类总览

  • 系统管理员(sys)
    学生选课和成绩管理系统_第1张图片
  • 教师(teacher)
    学生选课和成绩管理系统_第2张图片
  • 学生(student)
    学生选课和成绩管理系统_第3张图片
  • 课程(course)
    学生选课和成绩管理系统_第4张图片
  • 选课项(S_C)
    学生选课和成绩管理系统_第5张图片

部分具体函数实现

  • 添加学生
void sys::add_s()//添加学生
{
	student t_student;
	cout << "请输入学生ID:";
	cin >> t_student.s_id;
	cout << "请输入学生姓名:";
	cin >> t_student.s_name;
	cout << "请输入学生班级:";
	cin >> t_student.s_class_id;
	cout << "请输入学生专业:";
	cin >> t_student.s_speacialty;
	vector::iterator it;
	for (it = students.begin(); it != students.end(); ++it) {
		if (it->s_id == t_student.s_id) {
			cout << "该生信息已存在\n";
			break;
		}
	}
	if (it == students.end()) {

		t_student.print();
		cout << "确认添加该学生信息?(回答y or n)";

		char ch = getchar();
		while (ch == 10)
			ch = getchar();
		if (ch == 'y')
			students.push_back(t_student);
		else {
			cout << "老瞎填个啥-_-!!!\n";
		}
	}
	cout << "添加结束!按任意键返回上一界面";
	_getch();
	this->systempage();
}
  • 删除学生
void sys::del_s()//删除学生
{
	student t_student;
	cout << "请输入学生ID:";
	cin >> t_student.s_id;
	vector::iterator it;
	for (it = students.begin(); it != students.end(); ++it) {
		if (it->s_id == t_student.s_id) {
			t_student.print();
			cout << "确认删除该学生信息?(回答y or n)";

			char ch = getchar();
			while (ch == 10)
				ch = getchar();
			if (ch == 'y') {
				students.erase(it);
			}
			else if (ch == 'n')
				cout << "未删除....";
			else {
				cout << "老瞎填个啥-_-!!!\n";
			}
			break;
		}
	}
	if (it == students.end()) {
		cout << "该生信息不存在\n";

	}
	cout << "删除结束!按任意键返回上一界面";
	_getch();
	this->systempage();

}
  • 修改学生
void sys::change_s()//修改学生
{
	student t_student;
	cout << "请输入学生ID:";
	cin >> t_student.s_id;

	vector::iterator it;
	for (it = students.begin(); it != students.end(); ++it) {
		if (it->s_id == t_student.s_id) {
			t_student.print();
			cout << "确认修改该学生信息?(回答y or n)";

			char ch = getchar();
			while (ch == 10)
				ch = getchar();
			if (ch == 'y') {
				cout << "请输入学生姓名:";
				cin >> it->s_name;
				cout << "请输入学生班级:";
				cin >> it->s_class_id;
				cout << "请输入学生专业:";
				cin >> it->s_speacialty;
				cout << "已修改";
			}
			else {
				cout << "老瞎填个啥-_-!!!\n";
			}
			break;
		}
	}
	if (it == students.end()) {
		cout << "该生信息不存在\n";

	}
	cout << "修改结束!按任意键返回上一界面";
	_getch();
	this->systempage();
}
  • 保存学生表
void sys::save_s()//保存学生
{
	out.open(s_filename);
	if (out.is_open())
		cout << "out open successful!\n";
	else
		cout << "out open failed!\n";

	out << "#学号(ID)" << '	' << "姓名" << '	' << "班级" << '	' << "专业\n";
	vector::iterator it;
	for (it = students.begin(); it != students.end(); ++it) {
		out << it->s_id << '	' << it->s_name << '	' << it->s_class_id << '	' << it->s_speacialty << '\n';
	}
	out << "#END";
	cout << "store " << students.size() << " students data\n";
	out.close();
	cout << "保存结束!按任意键返回上一界面";
	_getch();
	this->systempage();
}
  • 文件打分
void teacher::load()//录入成绩
	{
		fstream file;
		cout << "请输入学生成绩文件名(顺便加上路径)\n";
		string filename = "temp.txt";

		char line[105];
		file.open(filename);
		if (file.is_open())
			cout << "in open successful!\n";
		else
			cout << "in open failed!\n";
		S_C t_S_C;
		int size1 = 0;
		int size2 = 0;
		while (file >> line && line[1] != 'E') {
			if (line[0] == '#') {
				file.getline(line, 100);
				continue;
			}
			t_S_C.set_s_id(line);
			file >> line;
			file >> line;
			t_S_C.set_c_name(line);
			file >> line;
			t_S_C.set_score(atoi(string(line).c_str()));

			vector::iterator it;
			for (it = t_S_Cs.begin(); it != t_S_Cs.end(); it++) {
				if (it->s_id == t_S_C.s_id&&it->c_name == t_S_C.c_name) {
					it->score = t_S_C.score;
					size1++;
					break;
				}
			}

			if (it == t_S_Cs.end()) {
				t_S_Cs.push_back(t_S_C);
				size2++;
			}
		}
		cout << "change " << size1 << " S_Cs data\n";
		cout << "add " << size2 << " S_Cs data\n";
		file.close();

	}
  • 排序
void teacher::msort()//对某班某科排序
	{
		string t_class_id;
		string t_c_name;
		cout << "请输入排序班号:";
		cin >> t_class_id;
		cout << "请输入排序课程名:";
		cin >> t_c_name;
		vector m_S_Cs;//对应班级课程学生选课表
		vector::iterator it;
		for (it = t_S_Cs.begin(); it != t_S_Cs.end(); it++) {
			if (this->search_class_id(it->s_id) == "error")
				cout << "此人不在学生表中\n";
			else if (this->search_class_id(it->s_id) == t_class_id && it->c_name == t_c_name) {
				m_S_Cs.push_back(*it);

			}
		}
		sort(m_S_Cs.begin(), m_S_Cs.end(), mcomp);
		for (it = m_S_Cs.begin(); it != m_S_Cs.end(); it++) {
			it->print();
		}

		cout << "排序结束!按任意键返回上一界面";
		_getch();
		this->systempage();
	}
  • 选课
void student::select() {
	S_C t_S_C;
	cout << "请输入选课课程名:";
	cin >> t_S_C.c_name;
	cout << "请输入您的ID:";
	cin >> t_S_C.s_id;
	cout << "请输入您的姓名:";
	cin >> t_S_C.s_name;
	t_S_C.score = -1;
	vector::iterator it;
	for (it = t_S_Cs.begin(); it != t_S_Cs.end(); it++) {
		if (it->s_id == t_S_C.s_id && it->c_name == t_S_C.c_name) {

			cout << "此课程已选\n";
			//break;
		}
	}
	if (it == t_S_Cs.end()) {
		t_S_C.print();
		cout << "确定选课?(回答y or n)\n";
		char ch = getchar();
		while (ch == 10)
			ch = getchar();

		if (ch == 'y') {
			t_S_Cs.push_back(t_S_C);
			cout << "添加成功!";
		}
		else if (ch == 'n') {
			this->systempage();
		}
		else {
			cout << "输入错误,重新查询!";
			this->select();
		}
	}
}

VS2017工程文件链接

你可能感兴趣的:(程序人生)