用C++做的教师信息管理系统
要求:定义一个TeacherList类可以实现简单的增加教师可以实现简单的查找教师可以实现简单的删除教师要求用二进制文件的读写操作QQ:200613527在线等。11点断...
要求:
定义一个 TeacherList 类
可以实现简单的增加教师
可以实现简单的查找教师
可以实现简单的删除教师
要求用二进制文件的读写操作
QQ:200613527 在线等。11点断网。
拜托啦
谢谢帅哥回答了。可是这个tc.dat怎么个建法吖?
能不能把程序打包给我?
邮箱:200613527@qq.com
谢谢这位帅哥了 展开
定义一个 TeacherList 类
可以实现简单的增加教师
可以实现简单的查找教师
可以实现简单的删除教师
要求用二进制文件的读写操作
QQ:200613527 在线等。11点断网。
拜托啦
谢谢帅哥回答了。可是这个tc.dat怎么个建法吖?
能不能把程序打包给我?
邮箱:200613527@qq.com
谢谢这位帅哥了 展开
2个回答
展开全部
占位置,有时间再给你弄一个
//代码在vs2005中编译通过,一个有三个文件,使用前请先新建一个文件tc.dat
//头文件teacher.h
#pragma once
#ifndef TEACHER_H_
#define TEACHER_H_
#define SIZE 20 //名字的最大长度为19
namespace kp{
class Teacher{
private:
char _name[SIZE];
public:
Teacher();
Teacher(const char * name);
void getname(); //从键盘获得信息
void showname()const; //将信息输入到屏幕
void read(std::ifstream &b_fin); //从文件中读信息
void write(std::ofstream &b_fout)const; //将信息写到文件中
bool operator ==(const Teacher &tc)const; //判断两个对象是否相等,重载==
};
}
#endif
//方法实现teacher.cpp
#include<iostream>
#include<fstream>
#include<cstdlib> //for strcpy() ,strcmp()
#include"teacher.h"
namespace kp{
Teacher::Teacher(){ }
Teacher::Teacher(const char * name)
{
std::strcpy(_name,name);
}
void Teacher::getname()
{
std::cout<<"plz enter the name:";
std::cin>>_name; //使用的是cin所以不能读取空格等
}
void Teacher::showname()const
{
std::cout<<_name;
}
void Teacher::read(std::ifstream & b_fin)
{
b_fin.read((char*)_name,sizeof(_name));
}
void Teacher::write(std::ofstream & b_fout)const
{
b_fout.write((char*)_name,sizeof(_name));
}
bool Teacher::operator ==(const Teacher &tc)const
{
return std::strcmp(_name,tc._name)==0;
}
}
//测试文件main.cpp
//请注意新建一个文件tc.dat,否则不能完成要求
#include<iostream>
#include<fstream>
#include<cstdlib> //for eixt()
#include<vector> //for vector<T>
#include<algorithm> //for for_each()
#include"teacher.h"
using namespace std;
using namespace kp;
bool del( vector<Teacher> &vect,const Teacher &t); //删除老师t
bool findd( vector<Teacher> &vect,const Teacher &t); //查找老师t
//void setall( vector<Teacher> &vect);
void add(vector<Teacher> &vect,const Teacher &t);
void show(const Teacher & tc); //显示某个老师信息
void display(const vector<Teacher> &vect); //显示所有的老师信息
void displaychoice(void); //菜单选择
void save(vector<Teacher> &vect); //保存信息到文件
int main(void )
{
int choice;
vector<Teacher> vect;
Teacher temp;
/*Teacher temp("eg");
vect.push_back(temp);*/
ifstream fin("tc.dat",ios_base::in|ios_base::binary);
if (!fin.is_open())
{
cerr<<"没有找到文件!"<<endl;
exit(1);
}
//读文件中的信息
temp.read(fin);
while (!fin.eof())
{
vect.push_back(temp);
temp.read(fin);
}
fin.close();
fin.clear();
displaychoice();
cin>>choice;
if (choice<0||choice>4||cin.bad()) //检测输入是否合法
{
cout<<"错误指令,程序退出!"<<endl;
save(vect);
exit(2);
}
while (choice)
{
Teacher t;
switch (choice)
{
case 1:
cout<<"所有老师的信息"<<endl;
display(vect);
break;
case 2:
t.getname();
if (findd(vect,t))
{
cout<<"查到了老师:";
show(t);
}
else
{
cout<<"没有查找到:";
show(t);
}
cout<<endl;
break;
case 3:
t.getname();
if (del(vect,t))
{
show(t);
cout<<" 已经删除";
}
else
{
cout<<"没有老师:";
show(t);
}
cout<<endl;
break;
case 4:
t.getname();
add(vect,t);
/*case 5:
setall(vect);
break;*/
default:
break;
}
displaychoice();
cin>>choice;
if (choice<0||choice>4||cin.bad())
{
cout<<"错误指令,程序退出!"<<endl;
save(vect);
exit(2);
}
}
save(vect); //正常退出,保存文件
cout<<"bye bye!"<<endl;
return 0;
}
void displaychoice(void)
{
cout<<"--------------- 选择菜单------------------"<<endl;
cout<<"1..........显示所有老师信息 "<<endl;
cout<<"2..........查找某个老师"<<endl;
cout<<"3..........删除某个老师 "<<endl;
cout<<"4..........添加某个老师"<<endl;
//cout<<"5..........设置所有老师的信息"<<endl;
cout<<"0...........exit "<<endl;
cout<<"--------------------------------------"<<endl;
cout<<"请输入操作:";
}
void add(vector<Teacher> &vect,const Teacher &t)
{
vect.push_back(t);
}
bool findd(vector<Teacher> &vect,const Teacher & t)
{
vector <Teacher >::iterator iter;
// 遍历vect来查找指定的t
for (iter=vect.begin();iter!=vect.end();++iter)
if (t==(*iter))
return true;
return false;
}
bool del( vector<Teacher> &vect,const Teacher &t)
{
bool tag=false; //用来标志是否有t
vector <Teacher > temp;
vector<Teacher >::iterator iter;
for (iter=vect.begin();iter!=vect.end();++iter)
{
if (!(*iter==t))
temp.push_back(*iter);
else
tag=true; //有
}
if (!tag) //没有,不在执行下面的操作
return tag;
vect.erase(vect.begin(),vect.end());
for (iter=temp.begin();iter!=temp.end();++iter)
vect.push_back(*iter);
return tag;
}
void show(const Teacher & tc)
{
tc.showname();
cout<<" ";
}
void display(const vector<Teacher> &vect)
{
for_each(vect.begin(),vect.end(),show);
cout<<endl;
}
void save(vector<Teacher> &vect)
{
ofstream fout("tc.dat",ios_base::out|ios_base::binary);
if (!fout.is_open())
{
cerr<<"文件具有写保护,或者其他原因!"<<endl;
exit(3);
}
vector<Teacher >::iterator iter;
for (iter=vect.begin();iter!=vect.end();++iter)
(*iter).write(fout);
fout.close();
fout.clear();
}
//调试的时候在工程目录下新建一个tc.dat,空的就可以了,运行的话在程序所在目录新建一个就可以了
//代码在vs2005中编译通过,一个有三个文件,使用前请先新建一个文件tc.dat
//头文件teacher.h
#pragma once
#ifndef TEACHER_H_
#define TEACHER_H_
#define SIZE 20 //名字的最大长度为19
namespace kp{
class Teacher{
private:
char _name[SIZE];
public:
Teacher();
Teacher(const char * name);
void getname(); //从键盘获得信息
void showname()const; //将信息输入到屏幕
void read(std::ifstream &b_fin); //从文件中读信息
void write(std::ofstream &b_fout)const; //将信息写到文件中
bool operator ==(const Teacher &tc)const; //判断两个对象是否相等,重载==
};
}
#endif
//方法实现teacher.cpp
#include<iostream>
#include<fstream>
#include<cstdlib> //for strcpy() ,strcmp()
#include"teacher.h"
namespace kp{
Teacher::Teacher(){ }
Teacher::Teacher(const char * name)
{
std::strcpy(_name,name);
}
void Teacher::getname()
{
std::cout<<"plz enter the name:";
std::cin>>_name; //使用的是cin所以不能读取空格等
}
void Teacher::showname()const
{
std::cout<<_name;
}
void Teacher::read(std::ifstream & b_fin)
{
b_fin.read((char*)_name,sizeof(_name));
}
void Teacher::write(std::ofstream & b_fout)const
{
b_fout.write((char*)_name,sizeof(_name));
}
bool Teacher::operator ==(const Teacher &tc)const
{
return std::strcmp(_name,tc._name)==0;
}
}
//测试文件main.cpp
//请注意新建一个文件tc.dat,否则不能完成要求
#include<iostream>
#include<fstream>
#include<cstdlib> //for eixt()
#include<vector> //for vector<T>
#include<algorithm> //for for_each()
#include"teacher.h"
using namespace std;
using namespace kp;
bool del( vector<Teacher> &vect,const Teacher &t); //删除老师t
bool findd( vector<Teacher> &vect,const Teacher &t); //查找老师t
//void setall( vector<Teacher> &vect);
void add(vector<Teacher> &vect,const Teacher &t);
void show(const Teacher & tc); //显示某个老师信息
void display(const vector<Teacher> &vect); //显示所有的老师信息
void displaychoice(void); //菜单选择
void save(vector<Teacher> &vect); //保存信息到文件
int main(void )
{
int choice;
vector<Teacher> vect;
Teacher temp;
/*Teacher temp("eg");
vect.push_back(temp);*/
ifstream fin("tc.dat",ios_base::in|ios_base::binary);
if (!fin.is_open())
{
cerr<<"没有找到文件!"<<endl;
exit(1);
}
//读文件中的信息
temp.read(fin);
while (!fin.eof())
{
vect.push_back(temp);
temp.read(fin);
}
fin.close();
fin.clear();
displaychoice();
cin>>choice;
if (choice<0||choice>4||cin.bad()) //检测输入是否合法
{
cout<<"错误指令,程序退出!"<<endl;
save(vect);
exit(2);
}
while (choice)
{
Teacher t;
switch (choice)
{
case 1:
cout<<"所有老师的信息"<<endl;
display(vect);
break;
case 2:
t.getname();
if (findd(vect,t))
{
cout<<"查到了老师:";
show(t);
}
else
{
cout<<"没有查找到:";
show(t);
}
cout<<endl;
break;
case 3:
t.getname();
if (del(vect,t))
{
show(t);
cout<<" 已经删除";
}
else
{
cout<<"没有老师:";
show(t);
}
cout<<endl;
break;
case 4:
t.getname();
add(vect,t);
/*case 5:
setall(vect);
break;*/
default:
break;
}
displaychoice();
cin>>choice;
if (choice<0||choice>4||cin.bad())
{
cout<<"错误指令,程序退出!"<<endl;
save(vect);
exit(2);
}
}
save(vect); //正常退出,保存文件
cout<<"bye bye!"<<endl;
return 0;
}
void displaychoice(void)
{
cout<<"--------------- 选择菜单------------------"<<endl;
cout<<"1..........显示所有老师信息 "<<endl;
cout<<"2..........查找某个老师"<<endl;
cout<<"3..........删除某个老师 "<<endl;
cout<<"4..........添加某个老师"<<endl;
//cout<<"5..........设置所有老师的信息"<<endl;
cout<<"0...........exit "<<endl;
cout<<"--------------------------------------"<<endl;
cout<<"请输入操作:";
}
void add(vector<Teacher> &vect,const Teacher &t)
{
vect.push_back(t);
}
bool findd(vector<Teacher> &vect,const Teacher & t)
{
vector <Teacher >::iterator iter;
// 遍历vect来查找指定的t
for (iter=vect.begin();iter!=vect.end();++iter)
if (t==(*iter))
return true;
return false;
}
bool del( vector<Teacher> &vect,const Teacher &t)
{
bool tag=false; //用来标志是否有t
vector <Teacher > temp;
vector<Teacher >::iterator iter;
for (iter=vect.begin();iter!=vect.end();++iter)
{
if (!(*iter==t))
temp.push_back(*iter);
else
tag=true; //有
}
if (!tag) //没有,不在执行下面的操作
return tag;
vect.erase(vect.begin(),vect.end());
for (iter=temp.begin();iter!=temp.end();++iter)
vect.push_back(*iter);
return tag;
}
void show(const Teacher & tc)
{
tc.showname();
cout<<" ";
}
void display(const vector<Teacher> &vect)
{
for_each(vect.begin(),vect.end(),show);
cout<<endl;
}
void save(vector<Teacher> &vect)
{
ofstream fout("tc.dat",ios_base::out|ios_base::binary);
if (!fout.is_open())
{
cerr<<"文件具有写保护,或者其他原因!"<<endl;
exit(3);
}
vector<Teacher >::iterator iter;
for (iter=vect.begin();iter!=vect.end();++iter)
(*iter).write(fout);
fout.close();
fout.clear();
}
//调试的时候在工程目录下新建一个tc.dat,空的就可以了,运行的话在程序所在目录新建一个就可以了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
校管家
2024-02-28 广告
2024-02-28 广告
少儿编程机构管理系统是一款专为少儿编程培训机构设计的综合管理软件。该系统致力于提高机构的教学质量和运营效率,通过智能排课、学员管理、教师管理、课程管理等功能,帮助机构实现全面信息化、规范化管理。系统界面简洁,操作便捷,为机构节省了大量时间和...
点击进入详情页
本回答由校管家提供
展开全部
能不能给我也发一份啊。1538858438@qq.com,谢谢啦!呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询