【C++】评教管理系统

部署运行你感兴趣的模型镜像
#include<iostream>
#include<fstream>
#include<cstring>
#include <stdlib.h>
#include <conio.h>
#include<vector>
using namespace std;
int n;

class Student
{public:
	char sname[20];
	char snum[20];
	char sclass[20];
	void input();
};
/*--------------------------学生登陆-----------------------------*/
void Student::input()
{
	cout<<"请输入您的姓名:";	cin>>sname;
	cout<<"请输入您的学号:";	cin>>snum;
	cout<<"请输入您的班级:";	cin>>sclass;
	cout<<"登陆成功!输入任意字符继续";	getch();
}
/*--------------------------评教信息 类模板-----------------------------*/
template<typename T1,typename T2,typename T3>
class Lesson
{public:
	Lesson(){};
	~Lesson(){};
	T1 tname[20];
	T2 tlesson[20];
	T3 grade;
	void display();
	void input();
	void show();
};

/*--------------------------输出函数-----------------------------*/
template<typename T1,typename T2,typename T3>
void Lesson<T1,T2,T3>::show()
{
	cout<<"教师姓名:"<<tname<<endl;
	cout<<"课程名称:"<<tlesson<<endl;
	cout<<"评教分数:"<<grade<<endl;
}
/*--------------------------新建类-----------------------------*/
class System
{public:
	System(){};
	~System(){};
	void add();
	int lname(char *x);
	void find();
	void change();
	void dele();
	void menu();
	void display();
	void save();
	void read();
};
	vector<Lesson<char,char,double> >v;
/*--------------------------输入函数-----------------------------*/
template<typename T1,typename T2,typename T3>
void Lesson<T1,T2,T3>::input()
{
	cout<<"请输入教师姓名:";	cin>>tname;
	cout<<"请输入课程名称:";	cin>>tlesson;
	cout<<"请输入打分(0-100):";	cin>>grade;
	try{														//异常处理 
		if(grade<0||grade>100)	throw 0;
		else
		cout<<endl;}
	catch(int)
	{cout<<"输入数据错误,请重新输入";}
	cout<<endl;
}
/*--------------------------读取函数-----------------------------*/
void System::read()
{
    Lesson<char,char,double> ch;
    ifstream infile("sys.txt",ios::binary);
    if(!infile){
        cout<<"文件打不开"<<endl;
    }
    infile.read((char*)&ch,sizeof(ch));
    while(!infile.eof())
    {
    v.push_back(ch);
    infile.read((char*)&ch,sizeof(ch));

       	cout<<"教师姓名:"<<ch.tname<<endl;
        cout<<"课程名称:"<<ch.tlesson<<endl;
        cout<<"评教分数:"<<ch.grade<<endl;
        cout<<endl;

    }
    infile.close();
    cout<<"读取成功"<<endl;
	getch();
}
/*--------------------------保存函数-----------------------------*/
void System::save()
	{
      ofstream outfile("sys.txt",ios::binary);
	  Lesson<char,char,double>t;
	  vector<Lesson<char,char,double> >::iterator ap;
	  if(!outfile)
		  cout<<"文件不能被打开"<<endl;
    else
    {
            for(ap=v.begin();ap!=v.end();ap++)
        {
                t=*ap;
             outfile.write((char*)&t,sizeof(t));
             cout<<"保存成功"<<endl;
        }
        outfile.close();
        getch();
    }

}
void System::display() 
{
	for(int i=0;i<n;i++)
	{v[i].show();} 
    cout<<"输入任意字符继续";	getch();
}
/*--------------------------主菜单-----------------------------*/
void System::menu() 
{
	cout<<"--------------*评 教 管 理 系 统*-------------"<<endl;
    cout<<"--------------*$1. 学生登陆界面*--------------"<<endl;
    cout<<"--------------*$2. 增加评教信息*--------------"<<endl;
    cout<<"--------------*$3. 更改评教信息*--------------"<<endl;
    cout<<"--------------*$4. 查找评教信息*--------------"<<endl;
    cout<<"--------------*$5. 显示评教信息*--------------"<<endl;
    cout<<"--------------*$6. 删除评教信息*--------------"<<endl;
    cout<<"--------------*$7. 保存相关数据*--------------"<<endl;
    cout<<"--------------*$8. 读取相关数据*--------------"<<endl;
    cout<<"--------------*$9. 退出评教系统*--------------"<<endl;
}
/*--------------------------添加数据-----------------------------*/
void System::add()
{
	string h="y";
	do{
	Lesson<char,char,double>l;
	l.input();
	n++;
	v.push_back(l); 
	cout<<"是否继续添加(y/n)?";
	cin>>h;
	}while(h=="y");
	cout<<"添加成功!输入任意字符继续";
	getch();
}
/*--------------------------查找课程-----------------------------*/
int System::lname(char *x) 
{
	int i;
    for(i=0;i<n;i++)
    {
        if(strcmp(v[i].tlesson,x)==0)
        {  return i;} 
    }
    return -1;
}

void System::find()
{
	char x[20];
	int a;
	cout<<"请输入要查找的课程名称:";	cin>>x;
	a=lname(x);
	if(a!=-1)
	v[a].show();
	else
	cout<<"没有找到相关课程信息"<<endl;
	cout<<"输入任意字符继续";
	getch();
}
/*--------------------------更改数据-----------------------------*/
void System::change() 
{
	char b[20];
	int k;
	cout<<"请输入需要修改的课程名称:";	cin>>b;
	k=lname(b);
	if(k!=-1){
	cout<<"已找到,请输入新的信息:"<<endl;
	v[k].input();}
	cout<<"输入任意字符继续:";
    getch();
}
/*--------------------------删除数据-----------------------------*/
void System::dele()
{
	char c[20];
	int d;
	cout<<"请输入要删除的课程名称:";	cin>>c;
	d=lname(c);
	if(d!=-1)
	{for(;d<n-1;d++)
	{strcpy(v[d].tname,v[d+1].tname);
    strcpy(v[d].tlesson,v[d+1].tlesson);
    v[d].grade==v[d+1].grade;
	}
	n--;
	}
	else
    cout<<"输入错误,找不到该课程信息"<<endl;
    cout<<"输入任意字符继续";
    getch();
} 
/*--------------------------主函数-----------------------------*/
int main()
{	
	Student x;
	System y; 
	int a;
	string ss="y";
	do{
		system("cls");
		cout<<"====================欢迎进入评教管理系统!===================="<<endl;
    	y.menu() ;
		cout<<"请输入相应阿拉伯数字:";
    	cin>>a;
    	switch(a)
    	{
    		case 1:x.input();break;
    		case 2:y.add();break;
    		case 3:y.change();break;
    		case 4:y.find();break;
    		case 5:y.display();break;
    		case 6:y.dele();break;
    		case 7:y.save();break;
			case 8:y.read();break; 
    		case 9:ss="n";break;
		}
		}while(ss=="y");
	return 0;
}



您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### 使用 C++ 实现学生评教系统的功能需求与开发学生评教系统是一种用于收集和管理学生学质量价的软件系统。以下是基于 C++学生评教系统的实现思路、功能需求及代码示例。 #### 功能需求 1. **用户登录**:支持管理员和学生两种身份登录。 2. **表管理**:管理员可以添加、删除或修改表的内容。 3. **学生**:学生可以根据表中的问题进行分,并提交结果。 4. **数据存储**:将结果保存到文件中,便于后续分析。 5. **统计分析**:管理员可以查看结果的统计信息,例如平均分、最高分等。 #### 开发程 ##### 1. 系统设计 定义两个主要类:`Student` 和 `EvaluationSystem`。 - `Student` 类用于管理学生的个人信息和操作。 - `EvaluationSystem` 类用于管理表和统计结果。 ##### 2. 代码实现 ```cpp #include <iostream> #include <vector> #include <fstream> #include <string> using namespace std; class Student { private: string id; string name; vector<int> ratings; // 存储学生分 public: Student(string sid, string sname) : id(sid), name(sname) {} void setRatings(const vector<int>& r) { ratings = r; } void displayInfo() const { cout << "Student ID: " << id << ", Name: " << name << endl; } vector<int> getRatings() const { return ratings; } }; class EvaluationSystem { private: vector<string> questions; // 表的问题列表 vector<Student> students; // 学生列表 public: void addQuestion(const string& q) { questions.push_back(q); } void addStudent(const Student& s) { students.push_back(s); } void showMenu() const { cout << "Welcome to the Evaluation System!" << endl; cout << "1. Add Question" << endl; cout << "2. Add Student" << endl; cout << "3. Evaluate Teacher" << endl; cout << "4. Show Results" << endl; cout << "5. Exit" << endl; } void evaluateTeacher() { if (students.empty()) { cout << "No students available." << endl; return; } for (auto& student : students) { cout << "Evaluating for student: "; student.displayInfo(); vector<int> ratings; for (size_t i = 0; i < questions.size(); ++i) { cout << "Question " << (i + 1) << ": " << questions[i] << endl; int rating; cout << "Enter rating (1-5): "; cin >> rating; ratings.push_back(rating); } student.setRatings(ratings); } } void showResults() const { if (students.empty()) { cout << "No evaluation results available." << endl; return; } for (const auto& student : students) { cout << "Student: "; student.displayInfo(); const vector<int>& ratings = student.getRatings(); double average = 0; for (int rating : ratings) { average += rating; } average /= ratings.size(); cout << "Average Rating: " << average << endl; } } }; int main() { EvaluationSystem system; int choice; while (true) { system.showMenu(); cout << "Enter your choice: "; cin >> choice; switch (choice) { case 1: { string question; cout << "Enter new question: "; cin.ignore(); getline(cin, question); system.addQuestion(question); } break; case 2: { string id, name; cout << "Enter student ID: "; cin >> id; cout << "Enter student name: "; cin >> name; system.addStudent(Student(id, name)); } break; case 3: system.evaluateTeacher(); break; case 4: system.showResults(); break; case 5: cout << "Exiting..." << endl; return 0; default: cout << "Invalid choice. Please try again." << endl; } } return 0; } ``` #### 关键点说明 1. **友元函数**:如果需要在类外部访问私有成员,可以使用友元函数[^4]。 2. **文件存储**:可以通过 `fstream` 将结果保存到文件中,便于持久化存储。 3. **菜单驱动**:通过 `showMenu` 函数提供用户交互界面[^2]。 #### 注意事项 - 确保输入的有效性,例如分范围为 1-5。 - 使用异常处理机制来增强程序的健壮性。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值