问题补充说明:一、菜单功能: 1.添加信息 2.删除信息 3.修改信息 4.查询信息 5.显示所有 6.退出系统二、学生信息 1.学号(唯一) 2.姓名 3.性别(只能是 w 或 m) 4.电话 5.语文成绩 6.数学成绩 7.英语成绩 8.平均成绩(上面三个成绩的平均值)
用C语言程序编写一个学生成绩管理系统,界面用菜单360问答进行设计。菜单功能可用函数实现。
#include
#include
#include
#include
usingnamespacestd;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌新呀是区告室必拿学圆﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
classStudent
{
直点办地选public:
charname[20];
charId[20];
intCnum;//C++课程得分
intMnum;//汇编课程得分
intEnum;//嵌入式操作系统课程得分
intsum;//总分
Student*Next;
voidInput()
{
cout<<"\t\t请输入学生的姓名:";cin>>n的ame;
cout<<"\t\t请输入学生的学号:";c简染in>>Id;
cout<<"\t\t请输入C++课程的成绩:";cin>>Cnum;
cout<<"\t\t请输入汇编课程的成绩:";cin>>Mnum;
cout<<"\t\t请输入嵌入式操作系统课程的成绩:";cin>>Enum;
sum=Cnu题支m+Mnum+Enum;
}
voidReadFile(istream&in)
{
in>>name>>Id>>Cnum>>Mnum>>Enum>>s院重um;
}
voidShow()
{
cout<<"姓名:"< <<"汇编:"< } }; /翻和著县充鱼延五宜艺至/﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ classS率行tudentmassage { public: Stu双见缺存克混础红望件划dentmassage(); ~Student值育拉显粮终获massage(); voidShowMenu江器事真滑矛须你几斤(); voidFind(); voidSave(); vo少李送初大期下菜干哪括idModifyItem(); vo深挥idRemoveItem(); voidSwap(Student*,Stu落dent*); voidSort(); //vo前细欢华是对idUnpass(); intListCount(); //voidAverage(); voidDisplay() { for(Student*p=Head->Next;p!=End;p=p->Next) p->Show(); cout<<"输入任意字符!继续……"; getch(); } voidAddItem() { End->Input(); End->Next=newStudent; End=End->Next; cout<<"添加成功!"< cout<<"输入任意字符!继续……"; getch(); } private: Student*Head,*End; ifstreamin; ofstreamout; Student*FindItem(char*name) { for(Student*p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p->Next->name,name))returnp; returnNULL; } Student*FindID(char*Id) { for(Student*p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p->Next->Id,Id))returnp; returnNULL; } }; //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ Studentmassage::Studentmassage() { Head=newStudent; Head->Next=newStudent; End=Head->Next; ***.open("sort.txt"); if(!in) cout<<"这是一个新系统,无学生信息。请先输入。"< else { while(!in.eof()) { End->ReadFile(in); if(End->name[0]=='\0')break; End->Next=newStudent; End=End->Next; } in.close(); cout<<"\t\t读取学生信息成功!"< } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ Studentmassage::~Studentmassage() { Save(); for(Student*temp;Head->Next!=End;) { temp=Head->Next; Head->Next=Head->Next->Next; deletetemp; } deleteHead,End; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidStudentmassage::ShowMenu() { cout<<"********************************************************************************"< cout<<"〓〓〓〓〓〓〓〓〓〓☆学生成绩管理系统☆〓〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓★★★★★★★★★★★★★★★★★〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆1.增加学生成绩☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆2.显示学生成绩☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆3.排序统计成绩☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆4.查找学生成绩☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆5.删除学生成绩☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆6.修改学生信息☆★〓〓〓〓〓〓〓〓〓"< cout<<"〓〓〓〓〓〓〓〓〓★☆0.安全退出系统☆★〓〓〓〓〓〓〓〓〓"< cout<<"\n\t\t\n\t\t请选择:"; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidStudentmassage::Find() { charname[20],Id[10]; intx; Student*p=NULL; cout<<"\n\t\t*********************************\n"; cout<<"\t\t※1.按学生的姓名查找\n\t\t※2.按学生学号查找"; cout<<"\n\t\t*********************************\n请选择:"; cin>>x; switch(x) { case1:{cout<<"\t\t请输入要查找的学生的姓名:";cin>>name; if(p=FindItem(name)) { p->Next->Show(); cout<<"输入任意字符!继续……"; getch(); } else { cout<<"\t\t没有找到该姓名的学生!"<<'\n'< cout<<"输入任意字符!继续……"; getch(); } }break; case2: { cout<<"\t\t请输入要查找的学生的学号:";cin>>Id; if(p=FindID(Id)) { p->Next->Show(); cout<<"输入任意字符!继续……"; getch(); } else { cout<<"\t\t没有找到该学好的学生!"<<'\n'< cout<<"输入任意字符!继续……"; getch(); } }break; } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidStudentmassage::ModifyItem()//修改信息 { charname[20]; Student*p=NULL; cout<<"\t\t请输入要修改的人的姓名:";cin>>name; if(p=FindItem(name)) { cout<<"\t\t已找到学生的信息,请输入新的信息!"< p->Next->Input(); cout<<"修改成功!"< cout<<"输入任意字符!继续……"; getch(); } else { cout<<"\t\t没有找到!"< cout<<"输入任意字符!继续……"; getch(); } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidStudentmassage::RemoveItem()//删除信息 { charname[20]; Student*p=NULL,*temp=NULL; cout<<"\t\t请输入要删除的学生的姓名:"< if(p=FindItem(name)) { temp=p->Next; p->Next=p->Next->Next; deletetemp; cout<<"\t\t删除成功!"< cout<<"输入任意字符!继续……"; getch(); } else { cout<<"\t\t没有找到!"< cout<<"输入任意字符!继续……"; getch(); } } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidStudentmassage::Swap(Student*p1,Student*p2)//交换两个combox变量的数据域 { Student*temp=newStudent; strcpy(temp->name,p1->name); strcpy(temp->Id,p1->Id); temp->Cnum=p1->Cnum; temp->Mnum=p1->Mnum; temp->Enum=p1->Enum; temp->sum=p1->sum; strcpy(p1->name,p2->name); strcpy(p1->Id,p2->Id); p1->Cnum=p2->Cnum; p1->Mnum=p2->Mnum; p1->Enum=p2->Enum; p1->sum=p2->sum; strcpy(p2->name,temp->name); strcpy(p2->Id,temp->Id); p2->Cnum=temp->Cnum; p2->Mnum=temp->Mnum; p2->Enum=temp->Enum; p2->sum=temp->sum; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ intStudentmassage::ListCount()//统计当前链表的记录总数,返回一个整数 { if(!Head) return0; intn=0; for(Student*p=Head->Next;p!=End;p=p->Next) { n++; } returnn; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidStudentmassage::Sort()//对当前链表进行排序 { cout<<"Sorting..."< Student*p=NULL,*p1=NULL,*k=NULL; intn=Studentmassage::ListCount(); if(n<2) return; for(p=Head->Next;p!=End;p=p->Next) for(k=p->Next;k!=End;k=k->Next) { if(p->sum>k->sum) { Studentmassage::Swap(p,k); } } cout<<"排序完成!"< getch(); return; } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ voidStudentmassage::Save() { ***.open("sort.txt"); for(Student*p=Head->Next;p!=End;p=p->Next) out< < out.close(); } //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌ intmain() { intx,i=0; boolquit=false; cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"< for(i=0;i<3;i++) cout<<"\t\t◎\t\t\t\t\t\t◎"< cout<<"\t\t◎★★★★【欢迎进入学生成绩管理系统】★★★★◎"< for(i=0;i<3;i++) cout<<"\t\t◎\t\t\t\t\t\t◎"< cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"< StudentmassageGrade; cout<<"按任意键开始……"; getch(); while(!quit) { system("cls"); Grade.ShowMenu(); cin>>x; switch(x) { case0:quit=true;break; case1:Grade.AddItem();break; case2:Grade.Display();break; case3:Grade.Sort();break; case4:Grade.Find();break; case5:Grade.RemoveItem();break; case6:Grade.ModifyItem();break; } } return0; }