#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;
int k=1,i; //定义一个标志变量
class birthday
{ //定义出生年月日类
public:
int year;
int month;
int day;
};
class people
{ //声明人员基类,以后在这个基础上派生出其它类
public:
people() {}
virtual void enter(); //虚基函数,搭成一个框架,以后在此基础上扩充
virtual void display();
virtual int get_no()
{
return number;
}
virtual char * get_name()
{
return name;
}
// virtual void change_infor() {} //信息修改函数
virtual void readfile() {} //从文件中读
virtual void write() {} //将信息写入文件
people operator = (people p1); //运算符重载
int operator == (people p1);
virtual ~people() {};
protected:
char name[12];
int number;
char sex;
birthday bir;
char id[15];
};
void people::enter()
{ //定义信息输入函数
cout <<"输入姓名:";
cin>>name;
cout <<"输入编号:";
cin>>number;
cout <<"输入性别:";
cin>>sex;
cout <<"生日是(年 月 日):";
cin>>bir.year>>bir.month>>bir.day;
cout <<"身份证号:";
cin>>id;
}
void people::display()
{ //定义信息显示函数
cout <<setw(8) <<"姓名" <<setw(8) <<"编号" <<setw(8) <<"性别" <<setw(8) <<"出生日期" <<setw(8) <<"身份证号" <<endl;
cout <<setw(8) <<name <<setw(8) <<number <<setw(8) <<sex <<setw(8) <<bir.year <<setw(8) <<bir.month <<setw(8) <<bir.day <<setw(8) <<id <<endl;
}
class student:virtual public people
{ //以公有方式派生出学生类
protected:
char classnumber[20];
public:
student() {}
virtual void enter()
{
people::enter();
cout <<"输入班级名称:";
cin>>classnumber;
}
virtual void display();
virtual void readfile();
virtual void write();
// virtual void change_infor();
virtual ~student() {};
};
void student::display()
{ //定义派生类学生的信息显示函数
cout <<setw(8) <<"姓名" <<setw(8) <<"编号" <<setw(5) <<"性别" <<setw(12) <<"出生日期" <<setw(12) <<"身份证号" <<setw(12) <<"班级名称" <<endl;
cout <<setw(8) <<name <<setw(8) <<number <<setw(5) <<sex <<setw(4) <<bir.year <<setw(4) <<bir.month <<setw(4) <<bir.day <<setw(10) <<id <<setw(12) <<classnumber <<endl;
}
/********************************************************************************************
ifstream myfile("student.txt",ios::nocreate);
nocreate在头文件中#include <fstream>不存在,
希望高手帮忙改一下,实现相同的功能
*/
void student::write()
{ //定义派生类学生的信息写入文件函数
student stu;
char ch;
ofstream myfile("student.txt",ios::app);
do
{
stu.enter();
myfile.write((char *)&stu,sizeof(stu));
cout <<"还需要输入下个学生的信息吗(y/n):";
cin>>ch;
}
while (ch=='y'||ch=='Y');
myfile.close();
}
void student::readfile()
{ //定义派生类学生的读文件函数
ifstream myfile("student.txt",ios::in);
while (myfile)
{
student stu;
if (myfile.read((char*)&stu,sizeof(stu)))
{
if (stu.number!=-1) //删除一个学生的信息,通过不显示来定义删除
stu.display();
}
}
myfile.close();
}
//*************************************************************/
void menu()
{
cout <<"\n\n\t\t**************************************************" <<endl;
cout <<"\t\t*\t 人事管理系统\t *" <<endl;
cout <<"\t\t*------------------------------------------------*" <<endl;
cout <<" \t\t* 1.请输入人事信息 2.显示人事信息 *" <<endl;
cout <<" \t\t* 3.对信息的修改或删除 4.返回主菜单 0.退出*" <<endl;
cout <<"\t\t**************************************************" <<endl;
cout <<" \t\t\t\t请选择操作(0=======4) " <<endl;
cout <<"\t\t\t\t 请选择:";
}
void select()
{
people *pt;
student st;
pt=&st;
/*
teacher te;
graduate gr;
teacher_asistant t_a;
if (i==1) pt=&st;
else if (i==2) pt=&gr;
else if (i==3) pt=&te;
else if (i==4) pt=&t_a;
*/
do
{
int ch;
cin>>ch;
switch (ch)
{
case 0:
exit(0);
case 1:
pt->write();
cout <<"你还想进行何种操作:";
break;
case 2:
pt->readfile();
cout <<"你还想进行何种操作:";
break;
case 3:
// pt->change_infor();
cout <<"你还想进行何种操作:";
break;
case 4:
k=0;
break;
default:
cout <<"你的选择错误,请重新选择:";
break;
}
}
while (k);
}
int main()
{
b:
cout <<"\n\n\t\t***************************************************" <<endl;
cout <<"\t\t*\t 人事管理系统\t *" <<endl;
cout <<"\t\t*-----------------------------------------------------*" <<endl;
cout <<"\t\t* 1:学生 *" <<endl;
cout <<" ***************************************************" <<endl;
cout <<"请选择(0---4):";
cin>>i;
switch (i)
{
case 0:
cout <<"你已经退出系统";
getch();
exit(0);
case 1:
{
system("cls");
menu();
select();
break;
}
default :
cout <<"你的选择有误,请重新选择:";
break;
}
if (k==0)
k=1;
system("cls");
goto b;
}
ios 学生的信息
最新推荐文章于 2024-09-24 16:32:50 发布