C++实现学生信息管理系统(完整版)
#include
#include
#include
#include
#include
#include
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;
cout< cout<<"**********************************************************************"< cout<<"======================================================================"< cout<<"***************************学生信息管理系统***************************"< cout< cout<<" 1.添加功能"< cout<<" 2.查询功能"< cout<<" 3.显示功能"< cout<<" 4.编辑功能"< cout<<" 5.删除功能"< cout<<" 6.统计功能"< cout<<" 7.保存功能"< cout<<" 8.全部删除"< cout<<" 0.退出系统"< cout< cout<<"***********************************************************************"< cout<<"======================================================================="< cout<<"***********************************************************************"< cout< cin >> ch; cout<<" "< return ch; } void studentMessage::save(void) { system("cls"); fstream f("student.txt",ios::out); int i; if(!f) { cout< cout<<"文件保存失败!!!!按任意键返回..."< if(i = getch()) return ; } if(student::num_total == 0) { f<<"当前记录中无学生..."< } else { student *p = first->next; while(p != null) { f<<"学号:"< f<<"姓名:"< f<<"性别(boy/girl):"< f<<"年龄:"< f<<"班级:"< if(p->grade == 'A') { f<<"专业:"< f<<"家庭住址:"< f<<"联系方式:"< } else if(p->grade == 'B') { f<<"地理成绩:"< f<<"历史成绩:"< f<<"家庭住址:"< } else { f<<"语文成绩:"< f<<"数学成绩:"< f<<"英语成绩:"< } f<<"------------------------------------------------"< p = p->next; } } f.close(); cout< cout<<"学生信息文件已创建,按任意键继续"< i = getch(); } void studentMessage::read(void) { system("cls"); string name; int age; int id; char grade; string sex,address; double chinese , math , english; //语文 , 数学 , 英语 double history , geography ; //历史 , 地理 string major; long long int TL; // 专业 , 电话 int i; char ch; ifstream f("student.txt"); while(1) { f>>ch; if(f.eof()) { cout<<"文件为空!按任意键返回"< if(i = getch()) return ; } f>>name; f>>sex; f>>age; f>>id; f>>grade; if(grade=='A') { f>>major; f>>address; f>>TL; } else if(grade == 'B') { f>>geography; f>>history; f>>address; } else { f>>chinese; f>>math; f>>english; } student::num_total ++; if(sex=="boy") student::num_sex++; if(age>=18) student::num_age ++; student *newstu = new student(); if(grade == 'A') newstu = new student(id,name,sex,age,grade,major,address,TL); else if(grade == 'B') newstu = new student(id,name,sex,age,grade,geography,history,address); else if(grade == 'C') newstu = new student(id,name,sex,age,grade,chinese,math,english); student *p = first; while(p->next != NULL) { p = p->next; } p->next = newstu; newstu->next = null; } } /统计 void studentMessage::tongji(void) { system("cls");// cout<<"学生人数一共为:" < cout<<"男生一共有:"< cout<<"女生一共有:"< cout<<"成年人有:"< int i; cout< cout<<"按任意键继续"< i = getch(); } //插入 void studentMessage::Insret(void) { system("cls");// string name; int age; int id; char grade; string sex,address; double chinese , math , english; //语文 , 数学 , 英语 double history , geography ; //历史 , 地理 string major; long long int TL; // 专业 , 电话 cout<<"请输入学生姓名: "; cin>>name; cout<<"请输入学生性别(boy/girl): "; cin>>sex; cout<<"请输入学生年龄: "; cin>>age; cout<<"请输入学生学号: "; cin>>id; cout<<"下面请输入学生班级(大学生输入'A',初中生输入'B',小学生输入'C'): "; cout< cin>>grade; cout< if(grade=='A') { cout<<"请输入专业:"< cin>>major; cout<<"请输入家庭住址:"< cin>>address; cout<<"请输入联系电话:"< cin>>TL; } else if(grade == 'B') { cout<<"请输入地理成绩:"< cin>>geography; cout<<"请输入历史成绩:"< cin>>history; cout<<"请输入家庭住址:"< cin>>address; } else { cout<<"请输入语文成绩:"< cin>>chinese; cout<<"请输入数学成成绩:"< cin>>math; cout<<"请输入英语成绩:"< cin>>english; } student::num_total ++; if(sex=="boy") student::num_sex++; if(age>=18) student::num_age ++; student *newstu = new student(); if(grade == 'A') newstu = new student(id,name,sex,age,grade,major,address,TL); else if(grade == 'B') newstu = new student(id,name,sex,age,grade,geography,history,address); else if(grade == 'C') newstu = new student(id,name,sex,age,grade,chinese,math,english); student *p = first; while(p->next != NULL) { p = p->next; } p->next = newstu; newstu->next = null; } //00000000000000000000000/ void studentMessage::Display(void) { system("cls"); if(student::num_total == 0) { cout<<"当前记录中无学生..."< } else { student *p = first->next; while(p != null) { cout<<"学号:"< cout<<"姓名:"< cout<<"性别(boy/girl):"< cout<<"年龄:"< cout<<"班级:"< if(p->grade == 'A') { cout<<"专业:"< cout<<"家庭住址:"< cout<<"联系方式:"< } else if(p->grade == 'B') { cout<<"地理成绩:"< cout<<"历史成绩:"< cout<<"家庭住址:"< } else { cout<<"语文成绩:"< cout<<"数学成绩:"< cout<<"英语成绩:"< } cout<<"------------------------------------------------"< p = p->next; } } int i; cout< cout<<"按任意键继续"< i = getch(); } //删除功能~~~~~~~~~~~~~~~~ void studentMessage::Delete(void) { string _name; system("cls"); cout<<"请输入需要删除的同学姓名:"< cin>>_name; int k=0; student *p = first; student *pre = first; while(p->next) { pre=p->next; if(pre->name == _name) { p->next=pre->next; k=1; delete pre; } p=p->next; } if(k==0&&p->name!=_name) cout<<"记录为空!"< else { student::num_total--; if(p->sex=="boy") student::num_sex--; if(p->age>=18) student::num_age--; } int i; cout< cout<<"按任意键继续"< i = getch(); } void studentMessage::Search(void) { system("cls");/ int temp = 0; cout<<"请输入查找的条件,有如下选项..."< cout<<"按照学号查找(请输入【1】) 按照姓名查找(请输入【2】) "< cout<<" 退出(请输入【666】)"< cin>>temp; switch(temp) { case 1: SearchByid(); break; case 2: SearchByname(); break; case 666: return; default: cout<<"输入有误..."< } } void studentMessage::SearchByid(void) { system("cls");// int _id; int flag = 0; cout<<"请输入待查找学生的学号:"; cin >> _id; student *p = first->next; while(p != null) { if(p->id == _id) { flag = 1; cout<<"下面是查找匹配结果:"< cout< cout<<"学号:"< cout<<"姓名:"< cout<<"性别(boy/girl):"< cout<<"年龄:"< cout<<"班级:"< if(p->grade == 'A') { cout<<"专业:"< cout<<"家庭住址:"< cout<<"联系方式:"< } else if(p->grade == 'B') { cout<<"地理成绩:"< cout<<"历史成绩:"< cout<<"家庭住址:"< } else { cout<<"语文成绩:"< cout<<"数学成绩:"< cout<<"英语成绩:"< } } p = p->next; } if(flag == 0) { cout<<"未找到匹配项..."< } int i; cout< cout<<"按任意键继续"< i = getch(); } void studentMessage::SearchByname(void) { system("cls");/ string _name; int flag = 0; cout<<"请输入待查找的学生姓名: "; cin >> _name; student *p = first->next; while(p != null) { if(p->name == _name) { cout<<"下面是查找匹配结果:"<