简易C++ 校园信息管理系统

本文档展示了如何使用C++实现一个信息管理系统,包括学生、教师和在职读书教师的信息管理。系统提供了添加、显示、查找、修改、删除和保存信息的功能。通过类的继承和派生,如Person派生出Student和Teacher,再由两者派生出StudentTeacher类,实现了数据结构和操作的抽象。系统还涉及到虚基类的使用以解决多重继承的二义性问题。
摘要由CSDN通过智能技术生成
  • 继承与派生
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;
}
 
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1、问题描述 某高校有四类员工教师、实验员、行政人员教师兼行政人员共有的信息包括编号、姓名、性别、年龄等。其中教师还包含的信息有所在系部、专业、职称实验员还包含的信息由所在实验室、职务行政人员还包含的信息有政治面貌、职称等。 2、功能要求 (1)添加功能程序能够任意添加上述四类人员的记录可提供选择界面供用户选择所要添加的人员类别要求员工的编号要唯一如果添加了重复编号的记录时则提示数据添加重复并取消添加。 (2)查询功能可根据编号、姓名等信息对已添加的记录进行查询如果未找到给出相应的提示信息如果找到则显示相应的记录信息。 (3)显示功能可显示当前系统中所有记录每条记录占据一行。 (4)编辑功能可根据查询结果对相应的记录进行修改修改时注意编号的唯一性。 (5)删除功能主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录则提示“记录为空”并返回操作否则输入要删除的人员的编号或姓名根据所输入的信息删除该人员记录如果没有找到该人员信息则提示相应的记录不存。 (6)统计功能能根据多种参数进行人员的统计。能统计四类人员数量以及总数,统计男、女员工的数量。 (7)保存功能可将当前系统中各类人员记录存入文件中存入方式任意。 (8)读取功能可将保存在文件中的人员信息读入到当前系统中供用户进行使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值