教职工管理系统
数据输入:教师(包含姓名和工号信息)和所授课程信息;
数据输出:
(1)教师授课情况明细列表(列出每位老师授课的所有课程);
(2)教师授课情况查询(可以按工号或姓名查询);
(3)添加、修改、删除教师授课数据;
功能要求及说明:
(1)系统以菜单界面方式工作,运行界面友好,演示程序以用户和计算机的对话方式进行,在用户有非法输入时能够给出相应提示;
(2)用户可以选择从键盘输入数据或者从文件读取数据,运行结果可以输出到屏幕和保存到文件中;
(3)测试用例至少三组以上,并包含对用户非法输入情况的测试;结合测试结果,对程序进行分析说明;
(4)程序何时退出应该由用户自主选择决定。
(5)进行面向对象程序设计!
#include<iostream>
#include<cstring>
#include<fstream>
#include<cstdlib>
using namespace std;
class Teacher {//定义一个教师类
public:
int id; // 工号
char name[10]; // 姓名
int couId; // 课程编号
char couName[10]; // 课程名称
public:
void add(); // 添加教师信息
void display(); // 显示信息
void search(); // 查询信息
void searchsid(); // 按工号查询信息
void searchsname(); // 按姓名查询信息
void alter(); // 修改信息
void del(); // 删除信息
void write(int n); // 向文件中写入数据
int read(); // 从文件中读数据
}tea[40];
//向文件中写入数据
void Teacher::write(int n)
{
fstream myfile;//1.创建流对象
myfile.open("teacher.txt", ios::out | ios::binary);
if (!myfile)
{
cout << "该文件不能打开 !" << endl;
abort();//功能: 终止程序的执行。返回值依赖于执行,可以通过返回值显示错误。
}
int count = n;
myfile << count << endl;
for (int i = 0; i <= count; i++)
{
myfile << tea[i].id << " " << tea[i].name << " " << tea[i].couId << " " << tea[i].couName << " " << endl;
}
myfile.close();
}
//从文件中读数据
int Teacher::read()
{
fstream myfile;//定义流对象
myfile.open("teacher.txt", ios::in | ios::binary);
if (!myfile)
{
cout << "该文件不能打开 !" << endl;
abort();//功能: 终止程序的执行。返回值依赖于执行,可以通过返回值显示错误。
}
int count;
myfile.seekg(0);
myfile >> count;
for (int i = 0; i <= count; i++)
{
myfile >> tea[i].id >> tea[i].name >> tea[i].couId >> tea[i].couName;
cout << endl;
}
myfile.close();
return count;
}
//添加功能
void Teacher::add()
{
int n = read();
int i = 0;
char sign;
cout << "是否输入增加的新教师的相关信息 :(Y or N) " << endl;
cin >> sign;
while (sign != 'N')
{
cout << "请录入新教师基本信息:" << endl;
cout << "工号 :";
cin >> tea[i].id;
cout << "姓名 :";
cin >> tea[i].name;
cout << "请录入课程设计信息:" << endl;
cout << "课程编号 :";
cin >> tea[i].couId;
cout << "课程名称 :";
cin >> tea[i].couName;
cout << "提示:是否继续写入教师信息 ?(Y/N)"<<endl;
cin >> sign; // 输入判断
i++;
}
write(i);
}
//显示教师信息、课程信息
void Teacher::display()
{
int n = read();
cout << "显示全部教师信息: " << endl;
if (!tea)
{
cout << "没有记录" << endl;
}
else
{
for (int i = 0; i < n; i++) // 循环输入
{
cout << "工号: " << tea[i].id << '\n' << "姓名: " << tea[i].name << '\n' << "课程编号 : " << tea[i].couId << '\n' << "课程名称 : " << tea[i].couName << '\n' << endl;
}
}
}
//查询教师信息、课程设计信息
void Teacher::search()
{
Teacher tea;
int n = tea.read();
cout << "查询学生信息、课程设计信息:[确认查询id:1/确认查询name:2]" << endl;
cout << "请输入选择 :";
int c;
cin >> c;
switch (c)
{
case 1:
tea.searchsid();
break;
case 2:
tea.searchsname();
break;
default:
cout << "输入错误 , 请重新输入 !" << endl;
}
tea.write(n);
}
//根据id查询教师信息、课程设计信息
void Teacher::searchsid()
{
Teacher te;
int n = te.read();
int s;
int i = 0;
cout << "查找教师信息 :" << endl;
cout << "请输入需要查找教师的工号 :" << endl;
cin >> s;
while ((tea[i].id - s) != 0 && i < n) {
i++;
}
cout << "---------------查询结果如下----------------" << endl;
cout << "工号 : " << tea[i].id << endl;
cout << "姓名 : " << tea[i].name << endl;
cout << "课程编号 : " << tea[i].couId << endl;
cout << "课程名称 : " << tea[i].couName << endl;
}
//根据name查询教师信息、课程设计信息
void Teacher::searchsname()
{
Teacher te;
int n = te.read();
char s[10];
int i = 0;
cout << "查找教师信息 :" << endl;
cout << "请输入需要查找教师的姓名 :" << endl;
cin >> s;
while (strcmp(tea[i].name,s)!=0 && i < n) {
i++;
}
cout << "---------------查询结果如下----------------" << endl;
cout << "工号 : " << tea[i].id << endl;
cout << "姓名 : " << tea[i].name << endl;
cout << "课程编号 : " << tea[i].couId << endl;
cout << "课程名称 : " << tea[i].couName << endl;
}
//删除教师信息、课程设计信息
void Teacher::del()
{
Teacher te;
int n = te.read();
int s;
int i = 0, j;
cout << endl << "删除教师信息 :" << endl;
cout << "请输入需要删除教师的工号 :" << endl;
cin >> s;
while ((tea[i].id - s) != 0 && i < n) {// 查找判断
i++;
}
if (i == n)
{
cout << "提示:记录为空 !!!" << endl; // 返回失败信息
}
else
{
cout << "你要删除的信息如下 :" << endl;
cout << "姓名 :" << tea[i].name << endl;
cout << "工号 :" << tea[i].id << endl;
cout << "课程编号 :" << tea[i].couId << endl;
cout << "课程名称 :" << tea[i].couName << endl;
for (j = i; j < n - 1; j++) // 删除操作
{
tea[j].id = tea[j + 1].id;
strcpy_s(tea[j].name, tea[j + 1].name);
tea[j].couId = tea[j + 1].couId;
strcpy_s(tea[j].couName, tea[j].couName);
}
cout << "提示:已成功删除 !" << endl; // 返回成功信息
}
te.write(n - 1);
}
//修改教师信息、课程设计信息
void Teacher::alter()
{
Teacher te;
int n = te.read();
int s;
int i = 0;
cout << "修改教师信息 :" << endl;
cout << "请输入需要修改教师的工号 :" << endl;
cin >> s;
while ((tea[i].id - s) != 0 && i < n)// 查找判断
{
i++;
}
if (i >= n)
{
cout << "提示:对不起,无该教师的信息!" << endl;
}
else
{
cout << "该教师的信息 :" << endl;
cout << "工号: " << tea[i].id << '\n' << "姓名: " << tea[i].name << '\n' << "课程编号 : " << tea[i].couId << '\n' << "课程名称 : " << tea[i].couName << '\n' << endl;
cout << "请重新输入该学生的信息 " << endl;
cout << "学号 :";
cin >> tea[i].id;
cout << "姓名 :";
cin >> tea[i].name;
cout << "请重新输入课程设计信息:" << endl;
cout << "课程编号 :";
cin >> tea[i].couId;
cout << "课程名称 :";
cin >> tea[i].couName;
cout << "修改成功 !" << endl;
te.write(n);
}
}
int main()
{
char choice;
cout << "菜单界面" << endl;
cout << "0、退出" << endl;
cout << "1、添加新教师" << endl;
cout << "2、显示教师授课情况明细列表" << endl;
cout << "3、教师授课情况查询" << endl;
cout << "4、修改教师授课数据" << endl;
cout << "5、删除教师授课数据" << endl;
cout << "请选择你的操作(输入对应功能的序号):" << endl;
cin >> choice;
Teacher te;
if (choice == '0')
{
cout << "感谢您使用教职工管理系统!" << endl;
exit(0);
}
else if (choice == '1')
{
te.add();
system("pause");
main();
}
else if (choice == '2')
{
te.display();
system("pause");
main();
}
else if (choice == '3')
{
te.search();
system("pause");
main();
}
else if (choice == '4')
{
te.alter();
system("pause");
main();
}
else if (choice == '5')
{
te.del();
system("pause");
main();
}
else
{
cout << "输入错误,请重新输入您的选择: " << endl;;
main();
}
return 0;
}
|