📄 teacher.cpp
字号:
// teacher.cpp: implementation of the teacher class.
//
//////////////////////////////////////////////////////////////////////
#include "teacher.h"
#include "color.h"
//////////////////////////////////////////////////////////////////////
#include <iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iomanip.h>
//////////////////////////////////////////////////////////////////////
extern int choice;
extern color c;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
teacher::teacher()
{
}
teacher::~teacher()
{
}
void teacher::input()
{
c.setcolor(10);
cout<<endl;
cout<<"请输入教师的基本信息:"<<endl;
cout<<endl;
cout<<"编 号: ";
cin.getline(ser_num,80);
cout<<"姓 名: ";
cin.getline(name,80);
cout<<"职 称: ";
cin.getline(post,80);
cout<<"教研室 : ";
cin.getline(staff_room,80);
cout<<"主讲课程: ";
cin.getline(maintch_course,80);
cout<<"研究方向: ";
cin.getline(research_direction,80);
}
void teacher::output()
{
c.setcolor(10);
cout<<setiosflags(ios::left)<<setw(7)<<ser_num<<setw(7)<<name<<\
setw(7)<<post<<setw(9)<<staff_room<<setw(11)<<maintch_course<<\
setw(11)<<research_direction<<endl;
}
//////////////////////////////////////////////////////////////////////
// teacher_fun Class
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
teacher_fun::teacher_fun()
{
}
teacher_fun::~teacher_fun()
{
}
void teacher_fun::maintenance()
{
c.setcolor(9);
cout<<endl;
cout<<"----------------------------------------------------"<<endl;
cout<<" 欢迎进入教师基本信息的维护系统"<<endl;
cout<<"===================================================="<<endl;
void menu5();
int x;
while(1)
{
menu5();
cin>>x;
switch(x)
{
case 1:
char str[2];//吃回车
cin.getline(str,2);//吃回车
file();
break;
case 2:
modify();//修改
break;
case 3:
del();//删除
break;
case 4:
browse();//浏览
break;
case 5:
search();//查询
break;
case 6:
break;
case 0:
exit(0);
default:
c.setcolor(15);
cout<<"--------------------------------------------------"<<endl;
cout<<" 输入有误!"<<endl;
}if(x==6)break;
}
}
//教师基本信息录入
void teacher_fun::file()
{
system("cls");
if(choice==1)
{
c.setcolor(5);
teacher tech;
FILE *fp;
if((fp=fopen("teacher.dat","ab+"))==NULL)
{
cout<<"can't open file teacher.dat";
exit(0);
}
char ch;//控制循环
do
{
tech.input();
fwrite(&amt;tech,sizeof(teacher),1,fp);
cout<<"继续输入请按 y,否则请按其他键: ";
cin>>ch;
char str[2];//吃回车
cin.getline(str,2);//吃回车
}while(ch=='y');
fclose(fp);
if((fp=fopen("teacher.dat","rb"))==NULL)
{
cout<<"can't open file teacher.dat";
exit(0);
}
cout<<"编号 姓名 职称 教研室 主讲课程 研究方向"<<endl;
cout<<endl;
while(fread(&amt;tech,sizeof(teacher),1,fp)==1)
tech.output();
fclose(fp);
}
else
{
c.setcolor(7);
cout<<" 你不是管理员,无权录入信息。"<<endl;
}
}
//教师基本信息修改
void teacher_fun::modify()
{
system("cls");
if(choice==1)
{
c.setcolor(11);
cout<<endl;
cout<<"----------------------------------------------------"<<endl;
cout<<" 教师基本的信息修改"<<endl;
cout<<"****************************************************"<<endl;
teacher tech;
FILE *fp;
if((fp=fopen("teacher.dat","rb+"))==NULL)//打开文件
{
cout<<"can't open file teacher.dat";
exit(0);
}
char ser_num[8]; //要输入修改教师的编号
int flag=0;//控制循环
cout<<"请输入要修改的教师编号:";
cin>>ser_num;
char str[2];//吃回车
cin.getline(str,2);//吃回车
cout<<"编号 姓名 职称 教研室 主讲课程 研究方向"<<endl;
cout<<endl;
while(fread(&amt;tech,sizeof(teacher),1,fp)==1)//显示要修改教师的信息
if(strcmp(ser_num,tech.getser_num())==0)
tech.output();
fclose(fp);//关闭文件
int wide=sizeof(tech);
if((fp=fopen("teacher.dat","rb+"))==NULL)//打开文件
{
cout<<"can't open file teacher.dat";
exit(0);
}
while(fread(&amt;tech,sizeof(teacher),1,fp)==1)
{
if(strcmp(ser_num,tech.getser_num())==0)
{
fseek(fp,-wide,1);
cout<<endl;
tech.input();
fwrite(&amt;tech,sizeof(teacher),1,fp);
flag=1;
}
if(flag==1)break;
}
if(flag==0)
{
c.setcolor(12);
cout<<" **不存在此教师的信息**"<<endl;
}
fclose(fp);//关闭文件
}
else
{
c.setcolor(12);
cout<<" 你不是管理员,无权进行修改。"<<endl;
}
}
//教师基本信息删除
void teacher_fun::del()
{
system("cls");
if(choice==1)
{
c.setcolor(9);
cout<<"----------------------------------------------------"<<endl;
cout<<" 教师基本信息删除"<<endl;
cout<<"****************************************************"<<endl;
int i;
teacher tech[10];
char judge;
long int filesize,recount;
FILE *fp;
if((fp=fopen("teacher.dat","rb"))==NULL)//打开文件
{
cout<<"can't open file teacher.dat";
exit(0);
}
fseek(fp,0,2);
filesize=ftell(fp);
rewind(fp);
recount=filesize/sizeof(teacher);
for(i=0;i<recount;i++)
fread(&amt;tech[i],sizeof(teacher),1,fp);
fclose(fp);
char ser_num[20];
cout<<"请输入你要删除的教师的编号:";
cin>>ser_num;
for(i=0;i<recount;i++)
{
if(strcmp(ser_num,tech[i].getser_num())==0)
{
cout<<"编号 姓名 职称 教研室 主讲课程 研究方向"<<endl;
cout<<endl;
tech[i].output();
cout<<"确实要删除此教师的信息吗?(y/n)";
cin>>judge;
}
if(judge=='y'||judge=='Y')break;
}
if(judge=='y'||judge=='Y')
{
fp=fopen("teacher.dat","wb");
for(i=0;i<recount;i++)
if(strcmp(ser_num,tech[i].getser_num())!=0)
fwrite(&amt;tech[i],sizeof(teacher),1,fp);
fclose(fp);
c.setcolor(13);
cout<<" **删除成功**"<<endl;
}
cout<<"继续删除请按 Y,否则请按其他键: ";
char a;//判断是否继续删除
cin>>a;
if(a=='y'||a=='Y')
del();
}
else
{
c.setcolor(9);
cout<<" 你不是管理员,无权删除信息。"<<endl;
}
}
//教师基本信息浏览
void teacher_fun::browse()
{
system("cls");
FILE *fp;
teacher tech;
if((fp=fopen("teacher.dat","rb"))==NULL)
{
cout<<"can't open file teacher.dat";
exit(0);
}
c.setcolor(9);
cout<<"编号 姓名 职称 教研室 主讲课程 研究方向"<<endl;
cout<<endl;
while(fread(&amt;tech,sizeof(teacher),1,fp)==1)
tech.output();
fclose(fp);
}
//教师基本信息查询
void teacher_fun::search()
{
system("cls");
teacher tech;//定义对象
FILE *fp;
char ser_num[8]; //要输入的教师编号
int flag=0; //判断是否有此教师信息
c.setcolor(9);
cout<<"请输入要查询的教师编号: ";
cin>>ser_num;
if((fp=fopen("teacher.dat","rb"))==NULL)
{
cout<<"can't open file teacher.dat"<<endl;
exit(0);
}
while(fread(&amt;tech,sizeof(teacher),1,fp)==1)
if(strcmp(ser_num,tech.getser_num())==0)
{
cout<<"编号 姓名 职称 教研室 主讲课程 研究方向"<<endl;
cout<<endl;
tech.output();
flag=1;
}
if(flag==0)
{
c.setcolor(8);
cout<<" 不存在此教师的信息!"<<endl;
}
fclose(fp);
}
void menu5()
{
c.setcolor(10);
cout<<endl;
cout<<"----------------------------------------------------"<<endl;
cout<<"1. 教师基本信息增加 2. 教师基本信息修改"<<endl;
cout<<"3. 教师基本信息删除 4. 教师基本信息浏览"<<endl;
cout<<"5. 教师基本信息查询 6. 返回上级菜单"<<endl;
cout<<"0. 退出系统"<<endl;
cout<<"----------------------------------------------------"<<endl;
cout<<"请做出选择(0-6): ";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -