- 继承与派生
Person类 派生 Student类 and Teacher类
Student类 and Teacher类 派生 Student Techer类
Student Techer类 姓名、性别、年龄
Student类 学号、班级、专业
Teacher类 职称、工资
- 实现功能
一.信 息 管 理 系 统
1.学生信息
2.教师信息
3.在职读书教师信息
二.子信息管理系统(具体实现功能)
1.增加信息 4.查找信息
2.显示信息 5.删除信息
3.更改信息 6.保存信息
- 代码
//添加数据部分
void Message::Add_student()
//显示信息部分
void Message::Display_student()
//函数说明 查找名字相同的子函数
int Message::Same_name_student(string t)
//查找部分
void Message::Find_student()
//函数说明 修改函数
void Message::Change_student()
//函数说明 删除学生数据
void Message::Delete_student()
//函数说明 保存学生数据函数
void Message::Save_student()
#include <iostream>
#include <fstream> //写文件
#include <string> //字符串操作length()
#include <windows.h>//画颜色
#include <conio.h> //调用getch(),从控制台读取,但不会显示
using namespace std;
int n=0;//初始化,后面采用
//基类Person
class Person
{
public:
string name; //姓名
string sex; //性别
string age; //年龄
string number; //学号
string class_grade; //班级
string major; //专业
string professional_title; //职称
string salary; //工资
};
//Teacher类 公有继承 Person类(最开放)
//public->public protected->protected private->不能直接访问
//当子类重新定义了父类中的同名成员函数,子类的成员函数会隐藏掉父类中所有重载版本的同名成员
//可以利用作用域显示指定调用
//从继承路径上看Student_teacher类两次继承了Person类
//但由于使用关键字virtual 把 Person声明为Student Teacher的虚基类,这样Student_teacher类中只保留了一个Person类的副本,从而消除二义性
class Teacher:virtual public Person
{
public:
void input()
{
cout<<"\t请输入姓名:"; cin>>name;
cout<<"\t请输入性别:"; cin>>sex;
cout<<"\t请输入年龄:"; cin>>age;
cout<<"\t请输入职称:"; cin>>professional_title;
cout<<"\t请输入工资:"; cin>>salary;
}
void Show_teacher()
{
cout<<name<<"\t"<<sex<<"\t"<<age<<"\t"<<professional_title<<"\t"<<salary<<"\n"<<endl;
}
};
class Student:virtual public Person
{
public:
void input()
{
cout<<"\t请输入姓名:"; cin>>name;
cout<<"\t请输入性别:"; cin>>sex;
cout<<"\t请输入年龄:"; cin>>age;
cout<<"\t请输入学号:"; cin>>number;
cout<<"\t请输入班级:"; cin>>class_grade;
cout<<"\t请输入专业:"; cin>>major;
}
void Show_student()
{
cout<<name<<"\t"<<sex<<"\t"<<age<<"\t"<<number<<"\t"<<class_grade<<"\t"<<major<<"\n"<<endl;
}
};
//多重继承派生类会将所有基类的全部成员继承下来,基类的成员的访问属性也遵循单一继承的原则
class Student_teacher:public Student,Teacher
{
void input()
{
cout<<"\t请输入姓名:"; cin>>name;
cout<<"\t请输入性别:"; cin>>sex;
cout<<"\t请输入年龄:"; cin>>age;
}
void Show_student_teacher()
{
cout<<Student::name<<"\t"<<Teacher::sex<<"\t"<<Student::age<<"\n"<<endl;
}
};
//创建类
class Message
{
public:
Message(){};
//对类进行实例化
class Teacher teacher[20];
class Student student[20];
class Teacher_student teacher_student[20];
//展示菜单1 2
void Menu_first();
void Menu_second();
//增加信息部分
void Add_student();
void Add_teacher();
void Add_teacher_student();
//显示信息部分
void Display_student();
void Display_teacher();
void Display_teacher_student();
//查找函数
int Same_name_student(string t);
int Same_name_teacher(string t);
int Same_name_teacher_student(string t);
//菜单操作部分
//查找部分
void Find_student();
void Find_teacher();
void Find_teacher_student();
//修改部分
void Change_student();
void Change_teacher();
void Change_teacher_student();
//删除部分
void Delete_student();
void Delete_teacher();
void Delete_teacher_student();
//保存部分
void Save_student();
void Save_teacher();
void Save_teacher_student();
~Message(){};//析构函数
};
void Message::Menu_first()
{
cout<<"\t\t\t**********************************************************************\n";
cout<<"\t\t\t* 信 息 管 理 系 统 *\n";
cout<<"\t\t\t* *\n";
cout<<"\t\t\t* 1.学生信息 *\n";
cout<<"\t\t\t* 2.教师信息 *\n";
cout<<"\t\t\t* 3.在职读书教师信息 *\n";
cout<<"\t\t\t* *\n";
cout<<"\t\t\t* *\n";
cout<<"\t\t\t**********************************************************************\n";
cout<<"\t\t\t* 4.退出系统 *\n";
cout<<"\t\t\t* ------------------------------------------- *\n";
cout<<"\t\t\t**********************************************************************\n";
}
void Message::Menu_second()
{
cout<<"\t\t\t*********************************************************************\n";
cout<<"\t\t\t* 子 信 息 管 理 系 统 *\n";
cout<<"\t\t\t* *\n";
cout<<"\t\t\t* 1.增加信息 4.查找信息 *\n";
cout<<"\t\t\t* *\n";
cout<<"\t\t\t* 2.显示信息 5.删除信息 *\n";
cout<<"\t\t\t* *\n";
cout<<"\t\t\t* 3.更改信息 6.保存信息 *\n";
cout<<"\t\t\t*********************************************************************\n";
cout<<"\t\t\t* 7.退出系统 *\n";
cout<<"\t\t\t* ------------------------------------------- *\n";
cout<<"\t\t\t*********************************************************************\n";
}
//添加数据部分
void Message::Add_student()
{
student[n++].input();
cout<<"\t添加成功!\n";
getch();
}
//显示信息部分
void Message::Display_student()
{
cout<<"姓名\t性别\t年龄\t学号\t班级\t专业"<<endl;
for(int x=0;x<n;x++)
student[x].Show_student();
getch();
}
//函数说明 查找名字相同的子函数
int Message::Same_name_student(string t)
{
int i;
for(i=0;i<n;i++)
{
if(student[i].name==t)
return i;
}
return -1;
}
//查找部分
void Message::Find_student()
{
int t;
string b;
cout<<"请输入需查找学生的姓名:";
cin>>b;
t=Same_name_student(b);
if(t!=-1)
{
cout<<"姓名\t性别\t年龄\t学号\t班级\t专业"<<endl;
student[t].Show_student();
}
else
{
cout<<"没有找到该学生\n"<<endl;
}
getch();
}
//函数说明 修改函数
void Message::Change_student()
{
int Account_number,Password;
cout<<" 修 改 信 息"<<endl;
cout<<"管理员账号:"<<endl;
cin>>Account_number;
cout<<"管理员密码:"<<endl;
cin>>Password;
if(Account_number==123&&Password==123)
{ int k;
string cp;
cout<<"请输入需修改学生姓名:";
cin>>cp;
k=Same_name_student(cp);
if(k!=-1)
{
cout<<"该生原信息"<<endl ;
cout<<"姓名\t性别\t年龄\t"<<endl;
cout<<student[k].name<<"\t"<<student[k].sex<<"\t"<<student[k].age<<endl;
cout<<"已找到,请输入新的信息。"<<endl;
student[k].input();
}
else
cout<<"没有该生信息\n"<<endl;
getch();
}
else{
cout<<"密码错误无法修改"<<endl;
getch();
}
}
//函数说明 删除学生数据
void Message::Delete_student()
{
int y;
string t;
cout<<"请输入要删除学生的姓名:";
cin>>t;
y=Same_name_student(t);
if(y!=-1)
{
for(;y<n;y++)
{
student[y].name=student[y+1].name;
student[y].sex=student[y+1].sex;
student[y].age=student[y+1].age;
student[y].number=student[y+1].number;
student[y].class_grade=student[y+1].class_grade;
student[y].major=student[y+1].major;
}
n--;
}
else
{
cout<<"输入错误,找不到该生信息\n"<<endl;
}
getch();
}
//函数说明 保存学生数据函数
void Message::Save_student()
{
ofstream ofs;
//指定路径和打开方式
ofs.open("Text_student.txt", ios::out);
//写内容
ofs<<"姓名\t性别\t年龄\t学号\t班级\t专业"<<endl;
for(int x=0;x<n;x++)
{
ofs<<student[x].name<<"\t"<<student[x].sex<<"\t"<<student[x].age<<
student[x].number<<"\t"<<student[x].class_grade<<"\t"<<student[x].major<<endl;
}
//关闭文件
ofs.close();
cout<<"\n";
getch();
}
int main()
{
int Account_number,Password;
cout<<"\t\t\t\t\t\t信 息 服 务 系 统"<<endl;
cout<<"管理员账号:"<<endl;
cin>>Account_number;
cout<<"管理员密码:"<<endl;
cin>>Password;
if(Account_number==123&&Password==123)
{
cout<<"\t\t\t\t\t\t 登录成功"<<endl;
char menu[]={"\t\t\t\t\t\t 欢迎访问"};
for(int i=0; menu[i]!= '\0'; i++)
{
Sleep(250);
cout<<menu[i];
}
string s="1";
int t;
//实例化
class Message message;
while(1)
{
system("cls");
cout<<" 欢 迎 进 入 信 息 管 理 系 统!"<<endl;
message.Menu_first();
int select_1,select_2;
cout<<"请输入你的选择:";
cin>>select_1;
switch(select_1)
{
//学生部分
case 1:{
do
{
system("pause");
system("cls");
message.Menu_second();
cin>>select_2;
switch(select_2)
{
case 1:message.Add_student(); break;
case 2:message.Display_student(); break;
case 3:message.Change_student(); break;
case 4:message.Find_student(); break;
case 5:message.Delete_student(); break;
case 6:message.Save_student(); break;
case 7:s="0"; break;
}
}while(s=="0") ;
}
}
}
}
else
cout<<"输入的账户或密码错误"<<endl;
return 0;
}
版权声明:本文为Somewherej原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。