实现功能
*
上面的功能基本完全实现
目前的程序其实还存在两个问题:
- 无法从文件中读取信息,我感觉是格式问题,输出的格式需要改,但是这样的话,保存在文件的信息看起来就不是很方便了
- 保存新同学的学号与当前记录的学号相同时不会提醒,这个实现起来比较容易,在保存的时候,再加一个链表查询就可以了,是我太懒了。。。
源码附上
#include <cstdlib>
#include <iostream>
#include <string>
#include<windows.h>
#include<conio.h>
#include <fstream>
using namespace std;
#define null NULL
class student
{
private:
int flag;
friend class studentMessage;
student *next; //节点指针
string name; //学生姓名
string address; //家庭住址
int age; //年龄
int id; //学号
string sex;
char grade; ////班级
// A 代表大学生
// B 代表中学生
// C 代表小学生
double chinese , math , english; //语文 , 数学 , 英语
double history , geography ; //历史 , 地理
string major; long long int TL; // 专业 , 电话
public:
static int num_total; //总数
static int num_sex;
static int num_age;
//小学生初始化
student(int _id,string _name,string _sex,int _age,char _grade,double _chinese,double _math,double _english)
{
name = _name;
grade = _grade;
age = _age;
sex = _sex;
id = _id;
chinese = _chinese;
math = _math;
english = _english;
next = NULL;
}
//初中生初始化
student(int _id,string _name,string _sex,int _age,char _grade,double _geography,double _history,string _address)
{
name = _name;
grade = _grade;
age = _age;
sex = _sex;
id = _id;
geography = _geography;
history = _history;
address = _address;
next = NULL;
}
//大学生初始化
student(int _id,string _name,string _sex,int _age,char _grade,string _major,string _address,long long int _TL)
{
name = _name;
grade = _grade;
age = _age;
sex = _sex;
id = _id;
major = _major;
address = _address;
TL = _TL;
next = NULL;
}
//构造函数
student() //为studentMessage初始化头结点用
{
name = "null";
sex = "null";
address = "null";
age = 0;
id = 0;
chinese = 0;
math = 0;
english = 0;
grade = '0';
geography = 0;
history = 0;
major = "null";
TL = 0;
next = NULL;
}
~student(){
}
void swap(student*);
};
int student::num_total = 0; ////////////初始化
int student::num_sex = 0;
int student::num_age = 0;
void student::swap(student *q)
{
string _name,_sex,_address;
int _age,_id;
char grade; ////班级
// A 代表大学生
// B 代表中学生
// C 代表小学生
double _chinese , _math , _english; //语文 , 数学 , 英语
double _history , _geography ; //历史 , 地理
string _major; long long int _TL; // 专业 , 电话
_chinese = chinese;
chinese = q->chinese;
q->chinese = _chinese;
_math = math;
math = q->math;
q->math = _math;
_english = english;
english = q->english;
q->english = _english;
_history = history;
history = q->history;
q->history = _history;
_geography = geography;
geography = q->geography;
q->geography = _geography;
_major = major;
major = q->major;
q->major = _major;
_TL = TL;
TL = q->TL;
q->TL = _TL;
_name = name;
name = q->name;
q->name = _name;
_sex = sex;
sex = q->sex;
q->sex = _sex;
_address = address;
address = q->address;
q->address = _address;
_age = age;
age = q->age;
q->age = _age;
_id = id;
id = q->id;
q->id = _id;
}
class studentMessage
{
private:
student *first; //头指针
int num; //信息中的学生人数
public:
studentMessage()
{
num = 0; //初始化学生人数为0
first = new student; //初始化头结点
}
~studentMessage(){
delete first;}
/*管理系统常规操作*/
void Insret(void); //插入
void Display(void); //显示
void Delete(void); //删除
void Search(void); //搜索
void Change(void); //改动
void SearchByid(void); //按照学号查找
void SearchByname(void); //按照姓名查找
int menu(void); //初始的菜单
void clear(void); //清空列表
void tongji(void); //统计学生人数
void save(void);
void read(void);
};
int studentMessage::menu(void)
{
system("cls");
int ch