/*********************************************** *版权所有(C)2015,Yan Xiaoxuan。 * *文件名称:xscjgl.c *文件标识:无 *内容摘要:该代码用于获取满足后缀要求的第一个文件 *其它说明:无 *当前版本:V1.0 *作者:颜肖璇 *完成日期:20151224 * *修改记录1: *修改日期:20151224 *版本号:V1.0 *修改人:Yan Xiaoxuan *修改内容:创建 ***********************************************/ #include <iostream> #include <fstream.h> #include <string.h> #include <windows.h> struct Class//成绩结构体 { int Computer; int Math; int English; int Pe; int Music; }; class Student//学生类 { public: Student(); void Ofile(ofstream &of); void Infile(ifstream &f); void Out(); void Set(char *name,char *no,Class score); char *GetName(); char *GetNo(); Student *Next; protected: char Name[64]; char No[20]; Class Score ; }; Student::Student():Next(0){} char *Student::GetName() { return Name; } char *Student::GetNo() { return No; } void Student::Set(char *name,char *no,Class score) { strcpy(Name,name); strcpy(No,no); Score=score; } void Student::Infile(ifstream &f)//将数据输入到文件 { f>>Name>>No>>Score.Computer>>Score.Math>>Score.English>>Score.Pe>>Score.Music; } void Student::Ofile(ofstream &of) //从文件中提取数据 { of<<Name<<" "<<No<<" "<<Score.Computer<<" "<<Score.Math<<" "<<Score.English<<" "<<Score.Pe<<" "<<Score.Music; } void Student::Out()//输出成绩 { cout<<Name<<" "<<No<<" "<<Score.Computer<<" "<<Score.Math<<" "<<Score.English<<" "<<Score.Pe<<" "<<Score.Music<<endl; } class Function//功能类 { public: Function();//构造函数 ~Function();//析构函数 void Menu();//菜单函数 void Add();//录入学生信息函数 void Insert();//插入学生信息函数 void Modify();//修改学生信息函数 void Delete();//删除学生信息函数 void Show();//显示学生信息函数 void Search();//查询学生信息函数 private: Student *Student_First; void Read();//读取学生信息函数 void Save();//保存学生信息函数 }; Function::Function() { Student_First=new Student; Read(); } Function::~Function() { delete Student_First; } /*********************************************** *功能描述:录入学生姓名、学号及各科成绩等信息 *输入参数:name-学生姓名 no-学号 score.Computer-计算机成绩 score.Math-数学成绩 score.English-英语成绩 score.Pe-体育成绩 score.Music-音乐成绩 choose-选择是否继续输入信息(Y/N) *输出参数: *返回值:无返回值 *其它说明:消息字段之间用分号(;)分隔 ************************************************/ void Function::Add()//录入学生信息函数 { cout<<endl; cout<<" ╭───────────╮ "<<endl; cout<<" │ 学生成绩管理系统 │ "<<endl; cout<<" ╰───────────╯ "<<endl<<endl; char name[64]; char no[20]; Class score; char choose; Student *f1,*p; f1=Student_First; while(f1->Next) f1=f1->Next; do { p=new Student; cout<<endl<<"** 请输入您要添加的学生成绩信息:"<<endl<<endl; cout<<"请输入学生姓名: "; cin>>name; cout<<"请输入学号: "; cin>>no; cout<<"请输入计算机成绩: "; cin>>score.Computer; cout<<"请输入数学成绩: "; cin>>score.Math; cout<<"请输入英语成绩: "; cin>>score.English; cout<<"请输入体育成绩: "; cin>>score.Pe; cout<<"请输入音乐成绩: "; cin>>score.Music; p->Set(name,no,score); f1->Next=p; p->Next=NULL; f1=f1->Next; cout<<endl<<"**是否继续输入信息?(Y\\N) ------- "; cin>>choose; system("cls"); } while(choose=='y'||choose=='Y'); Save(); cout<<endl; cout<<"** 正在保存,请稍候..."<<endl; Sleep(1000); cout<<endl<<"◣ 输入成功! "; system("cls"); Menu(); } /*********************************************** *功能描述:根据输入学号的位置,插入学生姓名、学号、各科成绩等信息 *输入参数:name-学生姓名 no-学号 score.Computer-计算机成绩 score.Math-数学成绩 score.English-英语成绩 score.Pe-体育成绩 score.Music-音乐成绩 *输出参数: *返回值:无返回值 *其它说明:消息字段之间用分号(;)分隔 ************************************************/ void Function::Insert()//插入学生信息函数 { cout<<endl; cout<<" ╭───────────╮ "<<endl; cout<<" │ 学生成绩管理系统 │ "<<endl; cout<<" ╰───────────╯ "<<endl<<endl; char name[64]; char no[20]; Class score; Student *f1,*p; f1=Student_First; p=new Student; cout<<"◣ 请输入学号来确定插入位置:"<<endl; cin>>no; while(f1) { if(strcmp(f1->GetNo(),no)==0) break; f1=f1->Next; } cout<<"请输入学生姓名: "; cin>>name; cout<<"请输入学号: "; cin>>no; cout<<"请输入计算机成绩: "; cin>>score.Computer; cout<<"请输入数学成绩: "; cin>>score.Math; cout<<"请输入英语成绩: "; cin>>score.English; cout<<"请输入体育成绩: "; cin>>score.Pe; cout<<"请输入音乐成绩: "; cin>>score.Music; p->Set(name,no,score); p->Next=f1->Next; f1->Next=p; Save(); cout<<endl; cout<<"** 正在保存,请稍候..."<<endl; Sleep(1000); cout<<endl<<"◣ 插入成功! "; system("cls"); Menu(); } /*********************************************** *功能描述:根据输入要修改的学号,修改学生姓名、学号、各科成绩等信息 *输入参数:name-学生姓名 no-学号 score.Computer-计算机成绩 score.Math-数学成绩 score.English-英语成绩 score.Pe-体育成绩 score.Music-音乐成绩 choose-选择返回主菜单(1)或继续查询(2) *输出参数: *返回值:无返回值 *其它说明:消息字段之间用分号(;)分隔 ************************************************/ void Function::Modify()//修改学生信息函数 { cout<<endl; cout<<" ╭───────────╮ "<<endl; cout<<" │ 学生成绩管理系统 │ "<<endl; cout<<" ╰───────────╯ "<<endl<<endl; char name[64]; char choose; Student *temp,*p; char no[20]; Class score; temp=p=Student_First; cout<<"◣请输入您要修改的学号: "; cin>>no; while(temp) { if(strcmp(temp->GetNo(),no)==0) { cout<<"姓名 学号 计算机 数学 英语 体育 音乐\n"; temp->Out();cout<<endl; cout<<"请输入姓名: "; cin>>name; cout<<"请输入学号: "; cin>>no; cout<<"请输入计算机成绩: "; cin>>score.Computer; cout<<"请输入数学成绩: "; cin>>score.Math; cout<<"请输入英语成绩: "; cin>>score.English; cout<<"请输入体育成绩: "; cin>>score.Pe; cout<<"请输入音乐成绩: "; cin>>score.Music; temp->Set(name,no,score); break; } temp=temp->Next; } Save(); cout<<endl; cout<<"** 正在保存,请稍候..."<<endl; Sleep(1000); system("cls"); cout<<endl<<"◣ 修改成功! "<<endl; cout<<" ** 返回主菜单请按<1> ** 继续查询请按<2> **"<<endl; cin>>choose; system("cls"); if(choose=='1') Menu(); else Modify(); } /*********************************************** *功能描述:根据输入要删除的学号,删除相应的学生姓名、学号、各科成绩等信息 *输入参数: no-学号 choose-选择返回主菜单(1)或继续查询(2) *输出参数: *返回值:无返回值 *其它说明:消息字段之间用分号(;)分隔 ************************************************/ void Function::Delete()//删除学生信息函数 { cout<<endl; cout<<" ╭───────────╮ "<<endl; cout<<" │ 学生成绩管理系统 │ "<<endl; cout<<" ╰───────────╯ "<<endl<<endl; char no[20]; char choose; Student *temp,*p; p=temp=Student_First; cout<<"输入学号: "; cin>>no; while(temp) { if(strcmp(temp->GetNo(),no)==0) { p->Next=p->Next->Next; delete temp; cout<<"\n删除成功:\n"; break; } p=temp; temp=temp->Next; } Save(); cout<<" ** 返回主菜单请按<1> ** 继续查询请按<2> **"<<endl; cin>>choose; while(choose!='1'&&choose!='2') { cout<<" ** 返回主菜单请按<1> ** 继续查询请按<2> **"<<endl; cin>>choose; } if(choose=='1') Menu(); else if(choose=='2') Delete(); } /*********************************************** *功能描述:读取学生姓名、学号、各科成绩等信息 *输入参数: *输出参数: *返回值:无返回值 *其它说明:消息字段之间用分号(;)分隔 ************************************************/ void Function::Read()//读取学生信息函数 { Student *p,*p2; p=Student_First; ifstream is("Student.txt",ios::in); if(!is) { ofstream os("Student.txt",ios::out); os.close(); return ; } while(!is.eof()) { p2=new Student; p2->Infile(is); p->Next=p2; p2->Next=NULL; p=p->Next; } } /*********************************************** *功能描述:保存学生姓名、学号、各科成绩等信息 *输入参数: *输出参数: *返回值:无返回值 *其它说明:消息字段之间用分号(;)分隔 ************************************************/ void Function::Save()//保存学生信息函数 { ofstream of("Student.txt",ios::out); Student *p=Student_First->Next; while(p) { p->Ofile(of); p=p->Next; } of.close(); } /*********************************************** *功能描述:根据输入要查询的学号,查询学生姓名、学号、各科成绩等信息 *输入参数: no-学号 choose-选择返回主菜单(1)或继续查询(2) *输出参数: name-学生姓名 no-学号 score.Computer-计算机成绩 score.Math-数学成绩 score.English-英语成绩 score.Pe-体育成绩 score.Music-音乐成绩 *返回值:无返回值 *其它说明:消息字段之间用分号(;)分隔 ************************************************/ void Function::Search()//查询学生信息函数 { cout<<endl; cout<<" ╭───────────╮ "<<endl; cout<<" │ 学生成绩管理系统 │ "<<endl; cout<<" ╰───────────╯ "<<endl<<endl; char choose; char t2[20]; Student *temp=Student_First->Next; cout<<"◣请输入您要查询的学号 ------- "; cin>>t2; while(temp) { if(strcmp(t2,temp->GetNo())==0) break; temp=temp->Next; } cout<<"\n"; cout<<"姓名 学号 计算机 数学 英语 体育 音乐\n"; temp->Out(); cout<<" ** 返回主菜单请按<1> ** 继续查询请按<2> **"<<endl; cin>>choose; if(choose=='1') Menu(); else if(choose=='2') Search(); system("cls"); } /*********************************************** *功能描述:显示所有已保存学生的姓名、学号、各科成绩等信息 *输入参数:choose-选择返回主菜单(1)或继续查询(2) *输出参数: name-学生姓名 no-学号 score.Computer-计算机成绩 score.Math-数学成绩 score.English-英语成绩 score.Pe-体育成绩 score.Music-音乐成绩 *返回值:无返回值 *其它说明:消息字段之间用分号(;)分隔 ************************************************/ void Function::Show() //显示学生信息函数 { cout<<endl; cout<<" ╭───────────╮ "<<endl; cout<<" │ 学生成绩管理系统 │ "<<endl; cout<<" ╰───────────╯ "<<endl<<endl; Student *temp; char choose; int i=1; temp=Student_First->Next; if(!temp) Menu(); else { cout<<"姓名 学号 计算机 数学 英语 体育 音乐\n"; while(temp!=NULL) { cout<<i<<'.'; temp->Out(); temp=temp->Next; i++; } } cout<<"\n** 按任意键返回主菜单。"<<endl; cin>>choose; system("cls"); Menu(); } /*********************************************** *功能描述:菜单界面,显示所有操作,选择所需进行的操作 *输入参数:choose-录入学生信息操作(1) 或插入学生信息操作(2) 或修改学生信息操作(3) 或删除学生信息操作(4) 或显示全部学生信息操作(5) 或查找学生信息操作(6) 或退出系统操作(7) *输出参数: *返回值:无返回值 *其它说明:消息字段之间用分号(;)分隔 ************************************************/ void Function::Menu()//菜单界面 { char choose; cout<<endl; cout<<" ╭───────────╮ "<<endl; cout<<" │ 学生成绩管理系统 │ "<<endl; cout<<" ╰───────────╯ "<<endl<<endl; cout<<"<1> 录入学生信息:"<<endl; cout<<"<2> 插入学生信息:"<<endl; cout<<"<3> 修改学生信息:"<<endl; cout<<"<4> 删除学生信息:"<<endl; cout<<"<5> 显示全部学生信息:"<<endl; cout<<"<6> 查找学生信息:"<<endl; cout<<"<7> 退出系统:"<<endl<<endl; cout<<"◣请输入需要选择的操作:"; //输入选择编号 cin>>choose; switch(choose)//调用各个函数 { case '1': //录入系统 system("cls"); Add(); break; case '2': //插入系统 system("cls"); Insert(); break; case '3': //修改系统 system("cls"); Modify(); break; case '4': //删除系统 system("cls"); Delete(); break; case '5': //显示系统 system("cls"); Show(); break; case '6': //查找系统 system("cls"); Search(); break; case '7': //退出系统 exit(1); break; default: //上面条件都不成立时返回主菜单 Menu(); } } /*********************************************** *功能描述:登录界面,正确输入管理员名和密码以进入菜单界面 *输入参数:name-管理员名 password-管理员密码 *输出参数: *返回值:0-成功 其他-失败 *其它说明:消息字段之间用分号(;)分隔 ************************************************/ int main()//主界面,输入管理员账号和密码进入系统 { system("color F0"); cout<<endl; cout<<" ╭ 欢迎进入学生成绩管理系统 ╮"<<endl; cout<<endl; char name[10],password[10]; for(int i=0;i<3;i++)//至多循环输入三次 { cout<<endl<<"◣请输入管理员名:"; cin>>name; cout<<"◣请输入管理员密码:"; cin>>password; //账户及密码输入正确时 if(strcmp(name,"admin")==0&&strcmp(password,"admin")==0)//默认账户和密码都为"admin" { system("cls"); cout<<endl<<"** 正在进入系统,请稍侯......"<<endl<<endl; Sleep(1000); system("cls"); Function function; //定义功能接口 function.Menu(); //调用主菜单 } else { if(i==2)//第三次输入账户及密码错误 { system("cls"); cout<<endl<<"** 密码错误,系统正在退出 ..."<<endl<<endl; Sleep(1000); system("cls"); cout<<"~^~^~^~^~^~^~^~^~^~^~^~^~^~^~~^~^~^~^~^~^~^~~^~^~~^~^~^~^~^~^~^^"<<endl<<endl; cout<<" ◣系统退出...... "<<endl<<endl; cout<<"~^~^~^~^~^~^~^~^~^~^~^~^~^~^~~^~^~^~^~^~^~^~~^~^~~^~^~^~^~^~^~^^"<<endl<<endl; Sleep(1000); return 0; } else//前两次输入账户及密码错误 { system("cls"); cout<<endl<<"** 密码错误,请重新输入..."<<endl; } } } return 0; }