c++课设----教师管理系统

目录

设计框架

 流程图:

 显示教师信息:

删除教师信息

【数据结构】

全部代码

【程序最终运行情况】

 【参考文献】

心得体会


设计框架

 流程图:

 显示教师信息:

选择该功能后,打开教师的信息,读取内容,利用cout输出字符串变量,以及输入流ifstream类,支持从磁盘文件输入,其中包括编号,姓名,职位,年龄,出生日期,电话号码,住址, 电子邮件地址。若信息文件打开错误,则系统输出“open error!”并终止运行。

void teacher::display()  
		{  
		int i,l;   
		l=length();  
		cout<<"  编号   姓名    职位   年龄  出生日期   电话号码     住址     电子邮件地址"<<endl;  
		ifstream infile("teacher1.dat",ios::in|ios::binary);  
		if(! infile)  {   cerr<<"open error!"<<endl;   
		abort();  
		}  
		for( i=0;i<l;i++)  
		{    
		infile.read((char *)&tea[i],sizeof(tea[i]));          
cout<<"  "<<tea[i].num<<"     "<<tea[i].name<<"     "<<tea[i].call<<"    "
<<tea[i].age<<"   "<<tea[i].birthday        <<"     "<<tea[i].phone<<"    "
<<tea[i].addr<<"    "<<tea[i].eaddr<<endl;  
		 }    
		  infile.close(); }

删除教师信息

与显示教师信息大致相同,定义l类指针,获取length成员的值,利用ifstream类,用来支持磁盘文件的输入。选择该功能后,输入要删除的教师编号,若编号正确,则删除成功。若编号错误,则显示输入有误。

void teacher::del() 
		  {  
		  int i,a=0,j,l;     
		  l=length();     
		  ifstream infile("teacher1.dat",ios::in|ios::binary); 
if(! infile)  
{   
cerr<<"open error!"<<endl;   
abort();  
}  
for( i=0;i<l;i++)  
{    
infile.read((char *)&tea[i],sizeof(tea[i])); 
 } 
 int num; 
 cout<<"请输入要删除的编号:"; 
 cin>>num; 
 cout<<endl; 
 for(i=0;i<l;i++) 
 {  
 if(tea[i].num==num)  
 {     
 a=1;        
 for(j=i;j<l-1;j++)     
 tea[j]=tea[j+1];     
 break;  
 } 
 } 
 if(a==0) 
 {  
 cout<<"输入有误!"<<endl;  
 cout<<"  编号   姓名    职位   年龄  出生日期   电话号码     住址     电子邮件地址"<<endl;  
 for( i=0;i<l;i++)  
 {    
 infile.read((char *)&tea[i],sizeof(tea[i]));          
 cout<<"  "<<tea[i].num<<"     "<<tea[i].name<<"     "<<tea[i].call<<" "<<tea[i].age<<"  "<<tea[i].birthday         
  <<"     "<<tea[i].phone<<"    "<<tea[i].addr<<"    "<<tea[i].eaddr<<endl;  
  }   
  } 
  else if(a==1) 
  {  
  cout<<"删除成功! "<<endl;     
  cout<<"  编号   姓名    职位   年龄  出生日期   电话号码     住址     电子邮件地址"<<endl;  
  for( i=0;i<l-1;i++) 
{    infile.read((char *)&tea[i],sizeof(tea[i]));          
cout<<"  "<<tea[i].num<<"     "<<tea[i].name<<"     "<<tea[i].call<<"    "<<tea[i].age<<"   "<<tea[i].birthday         <<"     "<<tea[i].phone<<"    "<<tea[i].addr
<<"    "<<tea[i].eaddr<<endl;  }   
ofstream outfile("teacher1.dat",ios::out|ios::binary); 
if(! outfile)  
{   
cerr<<"open error!"<<endl;   
abort();  
} 
for(j=0;j<l-1;j++)  
outfile.write((char *)&tea[j],sizeof(tea[j])); 
outfile.close();  
} 
}

【数据结构】

int num;//编号

char name[20];//姓名

int age;//年龄

char birthday[20];//出生日期

char addr[20];//住址

int phone;//电话号码

char eaddr[20];//电子邮件地址

char call[20];//在校职位

int length()

全部代码

//教师管理系统

#include <iostream> //基本输入输出函数 
#include<fstream>  //文件操作,打开文件,关闭文件函数 
using namespace std; //用string定义数据类型
#include <string.h>
class teacher  //定义教师类 
{public: 
int num;//编号 
char name[20];//姓名 
int age;//年龄 
char birthday[20];//出生日期 
char addr[20];//住址 
int phone;//电话号码 
char eaddr[20];//电子邮件地址
 char call[20];//在校职位 
 void set(); 
 void display(); 
 void del(); 
 void zhao(); 
 void renshu(); 
 }tea[100]; 
 int length()  
 {      
   ifstream infile("teacher1.dat",ios::binary);      
   if(! infile)  
    {   
	   cerr<<"open error!"<<endl;      
	    abort();  
		 }    
 int len;        
 infile.seekg(0,ios::end);     
 len=infile.tellg()/sizeof(teacher);     
 return len; 
  } 
  void teacher::set() //增加教师信息 
  {      
  int n,i,j;   
  int l=0;  
  ofstream outfile("teacher1.dat",ios::app|ios::binary);    //使用了teacher1文件   文件写操作,内存写入存储设备中 
  if(! outfile)  
  {   
  cerr<<"open error!"<<endl;   
  abort(); 
  }  
  l=length();cout<<l<<endl;  
  if(l>0)  
  {   ifstream infile("teacher1.dat",ios::in|ios::binary);     //录入文件,    向已有的文件读入 
   if(! infile)   
   {       
   cerr<<"open error!"<<endl;       //输出错误信息 
   abort();   
   }    
   for( i=0;i<l;i++)       
    infile.read((char *)&tea[i],sizeof(tea[i]));               //存放数据 
	}  
	n=0;  
	cout<<"请输入要录入的教师人数(<=100):"<<endl;     
	cin>>n;     
	cout<<"请输入1个教师的信息:"<<endl;//编号、姓名、年龄、出生日期、住址、电话号码、电子邮件地址、在校职位     
	cout<<endl;    
	 for(i=l;i<n+l;)     
	 {        
	  cout<<"输入教师编号:";        
	   cin>>tea[i].num;         
	   if(i>0)   
	   {   
	   int h=i;    
	   for(j=0;j<h;)            
	    {     
		if(tea[h].num==tea[j].num)                 
		{                     
		cout<<"教师号重复,请重新输入!"<<endl;                 
		}    
		 else {j++;continue;}     
		 cout<<"输入教师编号:";                 
		 cin>>tea[h].num;     
		 j=0;    
		 }  
		  }         
		cout<<"输入教师姓名:";         
		cin>>tea[i].name;        
		cout<<"输入教师职位:";         
		cin>>tea[i].call;         
		cout<<"输入教师年龄:";         
		cin>>tea[i].age;         
		cout<<"输入教师出生日期:"; 
		cin>>tea[i].birthday;         
		cout<<"输入教师电话号码:";         
		cin>>tea[i].phone;         
		cout<<"输入教师住址:";         
		cin>>tea[i].addr;         
		cout<<"输入教师电子邮件地址:";         
		cin>>tea[i].eaddr;         
		//cout<<endl;   
		i++;   
		if(i<n+l)    
		cout<<"请输入"<<i+l+1<<"个教师的信息:"<<endl;      
		}  
		for(j=l;j<n+l;j++)   
		outfile.write((char *)&tea[j],sizeof(tea[j]));  
		outfile.close();   
		cout<<"数据已保存!\n"; 
		} 
		void teacher::display() // 显示所有教师信息 
		{  
		int i,l;   
		l=length();  
		cout<<"  编号   姓名    职位   年龄  出生日期   电话号码     住址     电子邮件地址"<<endl;  
		ifstream infile("teacher1.dat",ios::in|ios::binary);  
		if(! infile)  {   cerr<<"open error!"<<endl;   
		abort();  
		}  
		for( i=0;i<l;i++)  
		{    
		infile.read((char *)&tea[i],sizeof(tea[i]));          
cout<<"  "<<tea[i].num<<"     "<<tea[i].name<<"     "<<tea[i].call<<"    "
<<tea[i].age<<"   "<<tea[i].birthday        <<"     "<<tea[i].phone<<"    "
<<tea[i].addr<<"    "<<tea[i].eaddr<<endl;  
		 }    
		  infile.close(); } 
		  void teacher::del() //删除教师信息 
		  {  
		  int i,a=0,j,l;     
		  l=length();     
		  ifstream infile("teacher1.dat",ios::in|ios::binary); 
if(! infile)  
{   
cerr<<"open error!"<<endl;   
abort();  
}  
for( i=0;i<l;i++)  
{    
infile.read((char *)&tea[i],sizeof(tea[i])); 
 } 
 int num; 
 cout<<"请输入要删除的编号:"; 
 cin>>num; 
 cout<<endl; 
 for(i=0;i<l;i++) 
 {  
 if(tea[i].num==num)  
 {     
 a=1;        
 for(j=i;j<l-1;j++)     
 tea[j]=tea[j+1];     
 break;  
 } 
 } 
 if(a==0) 
 {  
 cout<<"输入有误!"<<endl;  
 cout<<"  编号   姓名    职位   年龄  出生日期   电话号码     住址     电子邮件地址"<<endl;  
 for( i=0;i<l;i++)  
 {    
 infile.read((char *)&tea[i],sizeof(tea[i]));          
 cout<<"  "<<tea[i].num<<"     "<<tea[i].name<<"     "<<tea[i].call<<" "<<tea[i].age<<"  "<<tea[i].birthday         
  <<"     "<<tea[i].phone<<"    "<<tea[i].addr<<"    "<<tea[i].eaddr<<endl;  
  }   
  } 
  else if(a==1) 
  {  
  cout<<"删除成功! "<<endl;     
  cout<<"  编号   姓名    职位   年龄  出生日期   电话号码     住址     电子邮件地址"<<endl;  
  for( i=0;i<l-1;i++) 
{    infile.read((char *)&tea[i],sizeof(tea[i]));          
cout<<"  "<<tea[i].num<<"     "<<tea[i].name<<"     "<<tea[i].call<<"    "<<tea[i].age<<"   "<<tea[i].birthday         <<"     "<<tea[i].phone<<"    "<<tea[i].addr
<<"    "<<tea[i].eaddr<<endl;  }   
ofstream outfile("teacher1.dat",ios::out|ios::binary); 
if(! outfile)  
{   
cerr<<"open error!"<<endl;   
abort();  
} 
for(j=0;j<l-1;j++)  
outfile.write((char *)&tea[j],sizeof(tea[j])); 
outfile.close();  
} 
}
void teacher::zhao() //查找教师信息 
{   
int i,l,m=0;     
int n;  
l=length();    //建立l指针,录入结构体成员 
cout<<l<<endl;      
ifstream infile("teacher1.dat",ios::in|ios::binary);   //读取存放的数据 
 if(! infile)  
 {      
 cerr<<"open error!"<<endl;    //用if语句,teacher1错误显示error 
 abort();  
 }      
 for( i=0;i<l;i++) //for循环 
 {        
 infile.read((char *)&tea[i],sizeof(tea[i]));  
 }        
 cout<<"请选择按(1.教师编号;2.教师姓名)查找\n";  
 for(;;)  
 {     
 int x;     
 cin>>x;     
 if(x==1)  
 {         
 cout<<"请输入要查找的编号:";         
 cin>>n;        
  cout<<endl;    
   for(i=0;i<l;i++)  
   {  
if(n==tea[i].num)     //用if函数和for循环,把输入值放到数组tea里 
{       
cout<<"  编号   姓名    职位   年龄  出生日期   电话号码     住址     电子邮件地址"<<endl;      
cout<<"  "<<tea[i].num<<"     "<<tea[i].name<<"     "<<tea[i].call<<"    "<<tea[i].age<<"   "<<tea[i].birthday         <<"     "<<tea[i].phone<<"    "
<<tea[i].addr<<"    "<<tea[i].eaddr<<endl;         
m=1;      
break;     
}    
}
break;    
 if(m==0)       
  cout<<"未找到!"<<endl;     
  }  
  if(x==2)  
  {         
  cout<<"请输入要查找的姓名:";   
  char y[10];   //定义插入数据类型 ,用if函数和for循环,把输入值放到数组tea里       
  cin>>y;         
  cout<<endl;     
  for(i=0;i<l;i++)  
  {      
  if(strcmp(y,tea[i].name)==0)     
  {       
  cout<<"  编号   姓名    职位    年龄   出生日期   电话号码     住址     电子邮件地址"<<endl;      
  cout<<"  "<<tea[i].num<<"     "<<tea[i].name<<"     "<<tea[i].call<<"      "<<tea[i].age<<"     "<<tea[i].birthday    <<"     "<<tea[i].phone<<"     "
  <<tea[i].addr<<"     "<<tea[i].eaddr<<endl;         
  m=1;      
  break;     
  }    
  } 
  break;     
  if(m==0)  //判断语句      
  cout<<"未找到!"<<endl;  //输入编号或姓名没有则未找到 
  }  if(x!=1||x!=2)  
  {   
  cout<<"输入错误!请重新输入!\n";     //如果 输入形式不对则输出,输入错误 
   continue;  
   } 
   } 
   } 
   void teacher::renshu() //显示教师信息 
   {  
   int l=length();  //建立l指针统计教师人数 
   cout<<"统计教师人数:"<<l<<endl; 
   } 
   int main() 
   {  
   teacher a;  
   int select=0;  
   while(1)     //while循环体和swich语句将数据整合 为一个菜单 
   {         
   cout<<"********************************************"<<endl;         
   cout<<"*           欢迎使用教师信息管理系统       *"<<endl;         
   cout<<"*               1.增加教师信息             *"<<endl;         
   cout<<"*               2.删除教师信息             *"<<endl;         
   cout<<"*               3.显示教师信息             *"<<endl;         
   cout<<"*               4.查找教师信息             *"<<endl;   
   cout<<"*               5.统计教师人数             *"<<endl;         
   cout<<"*               6.退 出 系  统             *"<<endl;         
   cout<<"********************************************"<<endl;         
   cout<<("请输入您的选择 (1-6) : [ ]\b\b");      
   cin>>select;         
   switch(select)         
   {   
   case 1:    
   a.set();   
    break;            
	case 2:                 
	a.del();                
	 break;             
	 case 3:                 
	 a.display();                 
	 break;            
	  case 4:                 
	  a.zhao();                 
	  break;    
	  case 5:     
	  a.renshu();     
	  break;             
	  case 6:                 
	  exit(0);                 
	  break;             
	  default:                 
	  cout<<"输入错误!"<<endl; 
}
}
return 0;
}

【程序最终运行情况】

(1)增加教师信息

 (2)删除教师信息

 (3)显示教师信息

 (4)查找教师信息

 (5)统计教师人数

 【参考文献】

[1]谭浩强.C++面向对象程序设计(第三版)[M]北京:清华出版社.2020

[2]谭浩强.C程序设计(第五版)[M]北京:清华出版社.2017

[3]谭浩强.C++程序设计(第二版)[M]北京:清华出版社.2004

[4]杨秀金.数据结构(c++版)[M]北京:人民邮电出版社,2009.4
[5]湛为芳.C++程序设计技术习题解答和实验指导 [M]北京:清华出版社,2009.10
[6]伍俊良编著:Vusual C++6.0课程设计与系统开发案例.北京:清华大学出版社,2002.11
[7](美)戴特尔(Deitel,H.M.)等编著,张引等译:C++大学基础教程(第五版),北京:电子工业出版社,2006.6

[8][ C ++基础]命名空间 namespace 的了解和使用 zhaozhenyu123的博客

[9] 郑莉,董渊,张瑞丰.C++语言程序设计(第3版).北京:清华大学出版社,2003

[10] 邓振杰.C++程序设计,北京:人民邮电出版社,2005

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

了一li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值