//example9_05_person.h//该预编译的作用是为了减少VC6的误报
#ifdef WIN32
#pragma warning (disable: 4514 4786)
#endif#ifndef _PERSON
#define _PERSON#include<string>
using namespace std;class Date
{protected:int year;int month;int day;
public:void Set( int y, int m, int d );int GetYear( );int GetMonth( );int GetDay( );
};class Person
{protected:string name;                          //姓名string number;                          //编号char sex;                               //性别        Date birthday;                          //出生日期string speciality;                        //专业string researchTopic;                   //课题string academicTitle;                   //职称int type;                               //类别
public:Person( string na , string num , char s, int y, int m, int d , string sp, string re, string ac, int ty );//构造函数bool operator<( Person ob )const;      //重载<运算,set容器要求元素之间满足该关系  string GetName( );                      //返回姓名string GetNumber( );                  //返回编号char GetSex( );                           //返回性别Date GetBirth( );                     //返回出生日期string GetSpec( );                      //返回专业string GetResearch( );                    //返回研究课题string GetAcademic( );                  //返回职称int GetType( );                           //返回类别
};#endif
//example9_05_person.cpp
#include "example9_05_person.h"//Date类的函数实现
void Date::Set( int y, int m, int d )
{year = y;month = m;day = d;
}int Date::GetYear( )
{return year;
}int Date::GetMonth( )
{return month;
}int Date::GetDay( )
{return day;
}//Person类的函数实现
Person::Person( string na , string num , char s, int y, int m, int d , string sp, string re, string ac, int ty )
{name = na;number = num;sex = s;birthday.Set( y, m, d );speciality = sp;researchTopic = re;academicTitle = ac;type = ty;
}bool Person::operator<( Person ob ) const
{if ( number < ob.number )return true;elsereturn false;
}string Person::GetName( )
{return name;
}string Person::GetNumber( )
{return number;
}char Person::GetSex( )
{return sex;
}Date Person::GetBirth( )
{return birthday;
}string Person::GetSpec( )
{return speciality;
}string Person::GetResearch( )
{return researchTopic;
}string Person::GetAcademic( )
{return academicTitle;
}int Person::GetType( )
{return type;
}
//example9_05_interface.h
#ifndef _INTERFACE
#define _INTERFACE#include "example9_05_person.h"
#include <set>class Interface
{protected:set<Person> pe;                                 //数据集
public:Interface( );                                    //构造函数void Display( );                              //输出界面信息void Run( );                                    //界面类主体功能void Output( );                                    //输出所有信息void PrintOne( set<Person>::iterator p );     //输出单条数据记录void Insert( );                                   //插入数据void Delete( );                                   //删除数据void ReadFile( );                             //从文件中读取数据void Search( );                                   //从数据集中查找数据void Save( );                                    //将数据保存到文件
};#endif
//example9_05_interface.cpp#include "example9_05_interface.h"
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;Interface::Interface( )
{ReadFile( );
}void Interface::Display( )
{cout << endl;cout << "**********0.退    出**********" << endl;cout << "**********1.添加信息**********" << endl;cout << "**********2.查询信息**********" << endl;cout << "**********3.删除信息**********" << endl;cout << "**********4.显示信息**********" << endl;
}void Interface::Run( )
{int choice;do{Display( );cout << "Please input your choice:";cin >> choice;switch ( choice ){case 0 :break;case 1 :Insert( );break;case 2 :Search( );break;case 3 :Delete( );break;case 4 :Output( );break;}} while (choice);Save( );
}void Interface::Search( )
{string number;cout << "请输入要查询的编号: " << endl;cin >> number;set<Person>::iterator p = pe.begin( );while ( p != pe.end( ) ){if ( p->GetNumber( ) == number )break;p++;}if ( p == pe.end( ) )cout << "没有此人信息!\n";else{cout << "姓名\t编号\t性别  出生日期\t 专业\t       课题\t职称\t类型\n";PrintOne( p );}
}void Interface::Insert( )
{string name;string number;char sex;        int y, m ,d;string speciality;string researchTopic;string academicTitle;int type;char ch = 'n';do{cout << "你要输入的人员类型(1-学生 2-研究生 3-在职研究生 4-教师 ):";cin >> type;while ( type != 1 && type != 2 && type != 3 && type != 4 ){cout << "输入错误,请重新输入\n";cout << "你要输入的人员类型(1-学生 2-研究生 3-在职研究生 4-教师 ):";cin >> type;}cout << "姓名: ";cin >> name;cout << "编号: ";cin >> number;cout << "性别(m/f):";cin >> sex;cout << "出生日期(年份 月份 日期):";cin >> y >> m >> d;if ( type == 1 ){cout << "专业: ";cin >> speciality; researchTopic = "";academicTitle = "";}else if  ( type == 2 ){cout << "专业: ";cin >> speciality; cout << "课题: ";cin >> researchTopic; academicTitle = "";}else if  ( type == 3 ){cout << "专业: ";cin >> speciality; cout << "课题: ";cin >> researchTopic;cout << "职称: ";cin >> academicTitle;}else if  ( type == 4 ){cout << "职称: ";cin >> academicTitle;speciality = "";researchTopic = "";            }Person ob( name, number, sex, y, m, d, speciality, researchTopic, academicTitle, type);pe.insert(ob);cout << "继续输入?(y/n)" << endl;cin >> ch;} while( ch == 'y' );
}void Interface::PrintOne( set<Person>::iterator p )
{cout << p->GetName( ) << '\t' << p->GetNumber( ) << '\t';if ( p->GetSex( ) == 'm' )cout << "女    ";elsecout << "男    ";Date bi = p->GetBirth( );cout << bi.GetYear( ) << '-' << bi.GetMonth( ) << '-' <<bi.GetDay( ) << "\t ";string sp = p->GetSpec( );if ( sp == "" )cout << setw(12) << setiosflags(ios::left) << "-" << "  ";elsecout << setw(12) << setiosflags(ios::left) << sp << "  ";string re = p->GetResearch( );if ( re == "" )cout << "-\t";elsecout << re << "\t";string ac = p->GetAcademic( );if ( ac == "" )cout << "-\t";elsecout << ac << '\t';int type = p->GetType( );if ( type == 1 )cout << "学生\n";else if ( type == 2 )cout << "研究生\n";else if ( type == 3 )cout << "在职研究生\n";else if ( type == 4 )cout << "教师\n";
}void Interface::Output( )
{cout << "姓名\t编号\t性别  出生日期\t 专业\t       课题\t职称\t类型\n";set<Person>::iterator p = pe.begin( );while ( p != pe.end( ) ){PrintOne( p );p++;}
}void Interface::Delete( )
{string number;cout << "请输入要删除的编号: " << endl;cin >> number;set<Person>::iterator p = pe.begin( );while ( p != pe.end( ) ){if ( p->GetNumber( ) == number ){pe.erase(p++);cout << "删除成功!" << endl;}elsep++;}return;
}void Interface::ReadFile( )
{ifstream in("D:\\record.txt");if( !in ){cout << "Cannot open the file\n";return ;}string name;string number;char sex;        int y, m ,d;string speciality;string researchTopic;string academicTitle;int type;set<Person>::iterator p = pe.begin( );in >> name >> number >> sex >> y >> m >> d >> speciality >> researchTopic >> academicTitle >> type;while ( !in.eof() ){if ( speciality == "-" )speciality = "";if ( researchTopic == "-" )researchTopic = "";if ( academicTitle == "-" )academicTitle = "";Person ob( name, number, sex, y, m, d, speciality, researchTopic, academicTitle, type);pe.insert(ob);in >> name >> number >> sex >> y >> m >> d >> speciality >> researchTopic >> academicTitle >> type;}in.close();return;
}void Interface::Save( )
{ofstream out("D:\\record.txt");if( !out ){cout << "Cannot open the file\n";return ;}set<Person>::iterator p = pe.begin( );while ( p != pe.end( ) ){out << p->GetName( ) << ' ' << p->GetNumber( ) << ' ' << p->GetSex( )<< ' ';Date bi = p->GetBirth( );out << bi.GetYear( ) << ' ' << bi.GetMonth( ) << ' ' <<bi.GetDay( )<< ' ';string sp = p->GetSpec( );if ( sp == "" )out << "-" << ' ';elseout << sp << ' ';string re = p->GetResearch( );if ( re == "" )out << "-" << ' ';elseout << re << ' ';string ac = p->GetAcademic( );if ( ac == "" )out << "-" << ' ';elseout << ac << ' ';out << p->GetType( )  << endl;p++;}out.close();return;
}
//example9_05_main.cpp
#include <iostream>
#include "example9_05_interface.h"
using namespace std;int main( )
{Interface inter;inter.Run( );return 0;
}



C++学生信息管理系统7.0相关推荐

  1. 赶紧进来看看--用C语言实现学生信息管理系统(1.0静态版)

    本文介绍了用C语言实现学生信息管理系统设计,主要包括对学生信息增删查改.分类统计.排序等功能,文章最后有全部源码展示- C语言实现学生信息管理系统--1.0静态版 一.学生信息管理系统介绍 二.实现学 ...

  2. Python实现学生信息管理系统V3.0(GUI界面)

    关于"学生信息管理系统"的基本思路和详细过程,请看V1.0版本: Python实现学生信息管理系统V1.0_︶ㄣ释然的博客-CSDN博客本文是关于学生信息管理系统的简易版以及具体内 ...

  3. python学生信息管理系统1.0

    目录 具体需求:实现一个学生信息管理系统 一.数据结构的设计: 二.菜单界面及按钮的设置: 三.各个模块的具体实现 1.定义一个字典,用于存放学生信息 2.查询学生信息模块: 3.添加学生信息模块: ...

  4. 赶紧进来看看---C语言实现学生信息管理系统(3.0文件存储版)

    本文主要介绍了将学生信息管理系统改造为文件存储版本- 主要涉及文件操作函数–将学生信息导入文件和从文件读取学生信息到程序中,从而达到数据持久化的效果 文章最后有源码展示 学生信息管理系统1.0静态版- ...

  5. C# 学生信息管理系统 2.0

    资源下载请点击 经历几天的探索,对原有的系统做了重大的修改. 修改如下: 1.登录界面进行了修改,增加了管理员选项. 2.学生界面增加了课表查询,成绩查询和选课系统,学生信息功能,界面做了优化,可以显 ...

  6. 学生信息管理系统V1.0

    需求: 将学生信息存储起来并能进行相关的增删改查 思路: 将学生信息存放在字典中,然后在将所有学生信息存放到列表中,通过对列表进行操作来达到对学生信息的增删改查等操作 说明: 此版本只是一个简单的列表 ...

  7. 学生信息管理系统V2.0

    需求 将学生信息存储起来(数据能多次使用)并能进行相关的增删改查 思路 将学生信息存放在字典中,然后在将所有学生信息存放到文件中,通过对文件进行操作来达到对学生信息的增删改查等操作 说明 这个版本只是 ...

  8. 【数据结构实习】学生信息管理系统2.0

    Student.h 1 #include<iostream> 2 #include<string> 3 #include<fstream> 4 using name ...

  9. python学生管理系统-Python 学生信息管理系统 2.0

    本次改进的方面有: 1.通过函数把不同的功能封装成为了一个个模块,使主程序看起来清晰简明. 2.把信息都通过文件操作写入了json文件中,在退出系统后重新登录时数据都还存在. 整个工程分为了四个.py ...

  10. Python实现简易版学生信息管理系统,包含源码及相关实现说明~

    前言 最近学了一点python语法,所以写一个小程序练习一下.当然程序中有许多不完美的地方,仅供各位小伙伴参考呀,并且欢迎大家留言指出不合理的地方奥~ 学生信息管理系统 1.系统介绍 该系统主要考察 ...

最新文章

  1. JVM启动参数解析(转)
  2. HashMap HashTable和ConcurrentHashMap的区别
  3. linux 新建用户配置文件 /etc/login.defs 简介
  4. 解决idea maven的导入依赖过慢
  5. mysql 设计两个主键都不可重复_18个MySQL面试题剖析(答案解析),听说身为程序员的你还没掌握...
  6. jQuery中,选择器既匹配开头又匹配结尾
  7. php wmi,window_Win7系统中的wmi控件是什么?有什么用?,  wmi控件是什么Windows - phpStudy...
  8. php加密数据解密,php 数据加密解密
  9. Python学习-2.安装IDE
  10. 使用单例时一定要注意的一个问题
  11. android studio: 让项目通过阿里云 maven jcenter 下载依赖资源
  12. 驾驶证/行驶证信息提取与识别
  13. Linux 在线词典
  14. LM2596电源降压调整器(150KHz,3A)020
  15. threejs光源的使用
  16. 牛腩--SQLHelper
  17. 安卓分析工具GameGurdian使用说明
  18. java.lang.UnsatisfiedLinkError: /usr/local/java/jdk1.8.0_91/jre/lib/amd64/libawt_xawt.so: libXtst.so
  19. 一筐梨子一筐水果——协变性(covariant)
  20. HTML5课程心得学生,HTML5培训心得体会

热门文章

  1. 6月8日 论文书写——公式
  2. AbstractQueuedSynchronizer源码分析
  3. 关于梯度下降法、牛顿法、高斯-牛顿、LM方法的总结
  4. 大规模图搜索和实时计算在阿里反作弊系统中的应用
  5. FreeMarker中获取Map内容
  6. ZStack源码剖析之核心库鉴赏——Defer
  7. 〖Linux〗在tmux同时使用bash和zsh
  8. cocos2d-x—schedule介绍
  9. CSS中min-height:100%问题
  10. uva_816 Abbott's Revenge(BFS求解最短路、结点状态由坐标和方向表示)