C++课程设计(教务管理系统)
- 格式:docx
- 大小:19.91 KB
- 文档页数:17
#include<iostream>using namespace std;#include<string>#include<iomanip>#include<fstream>#include<conio.h>#include<windows.h>#include"01.h"class University;void menu(University uni);//菜单函数声明class Student//学生类{public:string name;int age;string sex;int number;string major;public:void disp_stu();friend void file_in(University &uni);friend void file_out(University uni);};void Student::disp_stu(){cout<<"学生姓名:"<<name<<endl;cout<<"学生年龄:"<<age<<endl;cout<<"学生性别:"<<sex<<endl;cout<<"学生学号:"<<number<<endl;cout<<"学生专业:"<<major<<endl; }class Institute//学院类{public:string name;List<Student> head;//封装学生信息public:void add_stu(); //添加学生bool delete_stu(int i); // 删除学生bool modefy_stu(int i); //修改学生信息void disp_ins_1(); // 显示本院学生信息friend void file_in(University &uni);friend void file_out(University uni);};void Institute::add_stu(){Student *p=new Student;cout<<"学生名字:";cin>>(*p).name;cout<<"学生年龄:";cin>>(*p).age;cout<<"学生性别:";cin>>(*p).sex;cout<<"学生学号:";cin>>(*p).number;cout<<"学生专业:";cin>>(*p).major;head.Add(p);//在链表末尾增加一个节点}bool Institute::delete_stu(int i){head.Remove(i);//删除链表指定位置节点return true;}bool Institute::modefy_stu(int i){Student *p=new Student;cout<<"学生名字:";cin>>(*p).name;cout<<"学生年龄:";cin>>(*p).age;cout<<"学生性别:";cin>>(*p).sex;cout<<"学生学号:";cin>>(*p).number;cout<<"学生专业:";cin>>(*p).major;head.Remove(i);//删除链表指定位置节点head.Insert(i,p);//在链表指定位置插入一个新节点return true;}void Institute::disp_ins_1(){int i;Node<Student> *q;q=head.pHead;//q指向学生节点双向链表头指针cout<<"学院名字:"<<name<<setw(7)<<"学生人数:"<<head.size<<endl;for(i=1;i<=head.size;i++){cout<<"-------"<<i<<"-------"<<endl;cout<<setw(8);q->pData->disp_stu();q=q->pNext;}}class University//学校类{public:string name;int age;string addr;List<Institute> head;//封装学院信息public:void design_stu();//学生信息设置void add_ins(); //添加学院bool delete_ins(int n); // 删除学院void design_ins(); //学院信息设置bool modefy_ins(int n); //修改学院void disp_ins(); //显示学院信息void design_cqut(); //设置学校信息bool modefy_cqut(); //修改学校信息void disp_cqut(); //显示学校信息void search_menu();void search_name(string n);//姓名void search(string n);//性别//函数重载void search(int n);//学号bool search_age(int n);//年龄friend void file_in(University &uni);friend void file_out(University uni);};void University::design_stu(){int i,m,j;int n;cout<<" ★★★★★★学生信息设置★★★★★★"<<endl<<endl;cout<<setw(35)<<" 1.添加学生"<<endl<<endl;cout<<setw(35)<<" 2.删除学生"<<endl<<endl;cout<<setw(39)<<" 3.修改学生信息"<<endl<<endl;cout<<setw(41)<<" 4.返回上一级菜单"<<endl<<endl;cout<<setw(37)<<" 5.返回主菜单"<<endl<<endl;cin>>i;system("cls");//清屏switch(i){case 1:{disp_ins();cout<<endl;cout<<"输入学生所在学院序号:"<<endl;cin>>m;system("cls");//清屏head.pCurrent=head.pHead;//当前指针指向双向链表头指针for(j=1;j<m;j++){head.pCurrent=head.pCurrent->pNext;//当前指针指后移}cout<<"输入要添加的学生信息:";head.pCurrent->pData->add_stu();cout<<"按任意键返回上一级菜单:"<<endl;getch();system("cls");//清屏design_stu();break;}case 2:{disp_ins();cout<<endl;cout<<"输入学生所在学院序号:"<<endl;cin>>m;system("cls");//清屏head.pCurrent=head.pHead; //当前指针指向双向链表头指针for(j=1;j<m;j++){head.pCurrent=head.pCurrent->pNext;//当前指针指后移}head.pCurrent->pData->disp_ins_1();cout<<endl;cout<<"输入删除学生序号:";cin>>n;head.pCurrent->pData->delete_stu(n);cout<<"按任意键返回上一级菜单:"<<endl;getch();system("cls");//清屏design_stu();break;}case 3:{disp_ins();cout<<endl;cout<<"输入学生所在学院序号:"<<endl;cin>>m;system("cls");//清屏head.pCurrent=head.pHead;//当前指针指向双向链表头指针for(j=1;j<m;j++){head.pCurrent=head.pCurrent->pNext;//当前指针指后移}head.pCurrent->pData->disp_ins_1();cout<<endl;cout<<"输入修改的学生序号:";cin>>n;head.pCurrent->pData->modefy_stu(n);cout<<"按任意键返回上一级菜单:"<<endl;getch();system("cls");//清屏design_stu();break;}case 4:{system("cls");design_stu();break;}case 5:{system("cls");menu(*this);break;}}}void University::add_ins(){Institute *p=new Institute;cout<<"学院名字:";cin>>(*p).name;head.Add(p);//在链表末尾增加一个节点}bool University::delete_ins(int n){head.Remove(n);//删除链表指定位置节点return true;}bool University::modefy_ins(int n){Institute *p=new Institute;cout<<"学院名字:";cin>>(*p).name;head.Remove(n);//删除链表指定位置节点head.Insert(n,p);//在指定位置插入节点信息return true;}void University::disp_ins(){int i;Node<Institute> *q;q=head.pHead; //q指向学院节点双向链表头指针for(i=1;i<=head.size;i++){cout<<i<<".学院名字:"<<q->pData->name<<setw(33)<<"学生人数:"<<q->pData->head.size<<endl;q=q->pNext;}}void University::design_ins(){int i;int j;cout<<" ★★★★★★学院信息设置★★★★★★"<<endl<<endl;cout<<setw(35)<<" 1.显示学院信息"<<endl<<endl;cout<<setw(35)<<" 2.添加学院信息"<<endl<<endl;cout<<setw(35)<<" 3.删除学院信息"<<endl<<endl;cout<<setw(35)<<" 4.修改学院信息"<<endl<<endl; cout<<setw(33)<<" 5.返回主菜单"<<endl<<endl; cout<<"请输入选项:";cin>>i;system("cls");//清屏switch(i){case 1:{disp_ins();cout<<"按任意键返回上一级菜单:"<<endl;getch();system("cls");//清屏design_ins();break;}case 2:{disp_ins();add_ins();cout<<"按任意键返回上一级菜单:"<<endl;getch();system("cls");//清屏design_ins();break;}case 3:{disp_ins();cout<<"输入删除学院序号:";cin>>j;delete_ins(j);cout<<"按任意键返回上一级菜单:"<<endl;getch();system("cls");//清屏design_ins();break;}case 4:{disp_ins();cout<<"输入修改学院序号:";cin>>j;modefy_ins(j);cout<<"按任意键返回上一级菜单:"<<endl;getch();system("cls");//清屏design_ins();break;}case 5:menu(*this);break;}}bool University::modefy_cqut(){cout<<"学校名字:";cin>>name;cout<<"创建年代:";cin>>age;cout<<"学校地址:";cin>>addr;return true;}void University::design_cqut(){int i;University uni;cout<<" ★★★★★★学校信息设置★★★★★★"<<endl<<endl;cout<<setw(35)<<" 1.显示学校信息"<<endl<<endl;cout<<setw(35)<<" 2.修改学校信息"<<endl<<endl;cout<<setw(33)<<" 3.返回主菜单"<<endl<<endl;cout<<"请输入选项:";cin>>i;system("cls");//清屏switch(i){case 1:{disp_cqut();cout<<"按任意键返回上一级菜单:"<<endl;getch();system("cls");//清屏design_cqut();break;}case 2:{modefy_cqut();cout<<"按任意键返回上一级菜单:"<<endl;getch();system("cls");//清屏design_cqut();break;}case 3:menu(uni);break;}}void University::disp_cqut(){cout<<"学校有关信息为:"<<endl<<endl;cout<<"学校名字:"<<name<<endl;cout<<"创建年代:"<<age<<endl;cout<<"学校地址:"<<addr<<endl;}void University::search_name(string n){int i,j,m=0;head.pCurrent=head.pHead;//当前指针指向学院节点头指针for(i=0;i<head.size;i++){head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pHead;//当前指针指向学生节点头指针for(j=0;j<head.pCurrent->pData->head.size;j++){if(n==head.pCurrent->pData->head.pCurrent->pData->name){head.pCurrent->pData->head.pCurrent->pData->disp_stu();m++;}head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;//学生当前指针后移}head.pCurrent=head.pCurrent->pNext;//学院当前指针后移}cout<<"有"<<m<<"个符合条件。