1、课程设计设计题目学生管理系统课程设计学生姓名翟胜雨学 号 20111951专业班级 自动化 111指导教师谭琦 董学平2013 年 9 月 一。 设计任务a.学校的学生成绩信息管理是学校管理中的一项重要任务,以往的手工操作已经不能适应现在办公的需要.为了摆脱繁琐的劳动,提高工作效率,利用计算机进行信息处理成为必然。开发功能完善及安全可靠的管理系统可以大大提高学校资源的利用率,及时,准确地获取需要的信息,充分发挥人员的工作潜力。因此,不难想象,正是咨询业的迅速发展使得人们从过去的手工劳动中得以解脱.同时,编写一套完善的学生成绩管理系统的任务就显得尤为重要。b。设计四个类;学生类(描述学生基本信息
2、);学生管理类(对学生信息进行管理);学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入; c。能完成对学生成绩的录入,修改,能统计学生的成绩;求学生的总分及平均分;并能根据学生的平均或总成绩进行排序,能按学号或姓名查询学生成绩,能删除改学生成绩;能输出学生的成绩单。d.应用程序的文本界面设计美观、清洁,有简要的应用程序开发文档.二. 具体设计1.需求分析:a。能对学生各科成绩进行录入:。b。能显示学生输入的成绩c.能对学生的成绩进行增加。d.能对学生的成绩进行删除。e.能对学生的成绩进行修改.f.能对学生的成绩按学号,姓名,进行查询。g.能输出学生的所有数据.h。能进行成绩统
3、计i。能进行平均分查询排名.2.系统性能要求:a。系统安全、可靠;b。功能齐全;c。操作方便、界面友好;d易于维护和扩充。3。系统的功能分析:资料维护:系统维护包括对学生信息的录入操作及数据表中的信息进行浏览。系统功能:可以对数据表中的信息进行浏览。系统查询:可以对学生的信息进行查询.4.系统功能模块学生成绩查询系统有:成绩录入、显示、增加、删除、修改,数据查询,排序显示、输出构成。5。模块框架图主 函 数Student 类Studentmassage类显示信息添加信息查找信息修改信息删除信息退出系统三、程序功能的分析1。Student类的声明class Student public: cha
4、r name20; char Id20; int Cnum; /C+课程得分 int Mnum; /数学课程得分 int Enum; /英语课程得分 float aver; /平均分 Student * Next; void Input() cout”tt请输入学生的姓名:; cinname; coutId; cout”tt请输入C+课程的成绩:; cinCnum; coutMnum; coutEnum; aver=(Cnum+Mnum+Enum)/3。0; void ReadFile(istream in) innameIdCnumMnumEnumaver; void Show() cout
5、”姓名:”name”学号:”IdC+:”Cnum ”数学:Mnum英语:”Enum平均成绩:”averendl; ; 2。Studentmassage类的声明class Studentmassage public: Studentmassage(); Studentmassage(); void ShowMenu(); void Find(); void Save(); void ModifyItem(); void RemoveItem(); void Swap(Student ,Student ); void Sort(); /void Unpass(); int ListCount();
6、 /void Average(); void Display() for(Student p=HeadNext;p!=End;p=pNext) pShow(); cout输入任意字符!继续”; getch(); void AddItem() EndInput(); EndNext=new Student; End=EndNext; coutNext)/匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p-Nextname,name)return p; return NULL; Student FindID(char Id) for(Student * p=Head;pNext!=
7、End;p=pNext)/匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(pNextId,Id))return p; return NULL; ; 3.数据记录的添加 void Input() coutname; coutId; cout”tt请输入C+课程的成绩:”; cinCnum; couttt请输入数学的成绩:”; cinMnum; coutnameIdCnumMnumEnumaver; 4。数据记录的显示void Show() cout”姓名:name学号:”Id”C+:Cnum ”数学:”Mnum”英语:Enum”平均成绩:”averendl; ; 5数据记录的删除
8、void Studentmassage:RemoveItem() / 删除信息 char name20; Student * p=NULL,temp=NULL; cout请输入要删除的学生的姓名:”Next; pNext=pNextNext; delete temp; cout删除成功!”endl; cout输入任意字符!继续”; getch(); else cout没有找到!”endl; cout”输入任意字符!继续”; getch(); 6。数据记录的查找void Studentmassage:Find() char name20 ,Id10; int x; Student p=NULL;
9、 coutx; switch(x) case 1:cout”请输入要查找的学生的姓名:;cinname; if(p=FindItem(name) p-NextShow(); cout”输入任意字符!继续”; getch(); else cout”没有找到该姓名的学生!nendl; coutId; if(p=FindID(Id)) pNextShow(); cout”输入任意字符!继续”; getch(); else cout没有找到该学好的学生!”nId,p1-Id); tempCnum=p1Cnum; tempMnum=p1-Mnum; temp-Enum=p1-Enum; tempaver
10、=p1aver; strcpy(p1name,p2name); strcpy(p1Id,p2Id); p1Cnum=p2Cnum; p1-Mnum=p2Mnum; p1-Enum=p2-Enum; p1-aver=p2aver; strcpy(p2name,tempname); strcpy(p2Id,tempId); p2Cnum=temp-Cnum; p2Mnum=tempMnum; p2Enum=tempEnum; p2aver=tempaver; / int Studentmassage:ListCount()/统计当前链表的记录总数,返回一个整数 if(! Head) return
11、0; int n=0; for(Student * p=Head-Next;p!=End;p=pNext) n+; return n; / void Studentmassage:Sort()/对当前链表进行排序 cout ”Sorting.。.endl; Student p=NULL,*p1=NULL,*k=NULL; int n=Studentmassage:ListCount(); if(nNext;p!=End;p=p-Next) for(k=pNext;k!=End;k=k-Next) if(paverk-aver) Studentmassage:Swap(p,k); cout na
12、me”t”pId”t”pCnum”t” pMnum”t”Enumaver include fstream # include string。h include conio.h/用getch(); using namespace std; /Student类 class Student public: char name20; char Id20; int Cnum; /C+课程得分 int Mnum; /数学课程得分 int Enum; /英语课程得分 float aver; /平均分 Student Next; void Input() cout”tt请输入学生的姓名:”; cinname;
13、 coutCnum; cout”tt请输入数学的成绩:; cinMnum; coutEnum; aver=(Cnum+Mnum+Enum)/3.0; void ReadFile(istream in) innameIdCnumMnumEnumaver; void Show() cout”姓名:”name”学号:IdC+:”Cnum 数学:Mnum”英语:”Show(); coutNext=new Student; End=EndNext; cout添加成功!Next)/匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(pNextname,name)return p; return
14、 NULL; Student *FindID(char Id) for(Student p=Head;p-Next!=End;p=pNext)/匹配成功则返回上一个指针,不成功就返回空 if(!strcmp(p-NextId,Id)return p; return NULL; ; /构造函数 Studentmassage:Studentmassage() Head=new Student; HeadNext=new Student; End=Head-Next; in.open(”sort。txt”); if(!in) coutReadFile(in); if(Endname0=0)break
15、; EndNext=new Student; End=EndNext; in.close(); cout读取学生信息成功!Next!=End;) temp=HeadNext; Head-Next=Head-NextNext; delete temp; delete Head,End; /菜单 void Studentmassage::ShowMenu() cout” 学 生 成 绩 管 理 系 统 ”endl; cout 1。增加学生成绩 ”endl; cout 2。显示学生成绩 ”endl; cout” 3。排序统计成绩 endl; cout” 4。查找学生成绩 endl; cout” 5。
16、删除学生成绩 ”endl; cout 6。修改学生信息 endl; cout 0.安全退出系统 ”endl; cout请选择:”; /查找函数 void Studentmassage::Find() char name20 ,Id10; int x; Student * p=NULL; coutx; switch(x) case 1:coutNext-Show(); cout”输入任意字符!继续”; getch(); else cout”没有找到该姓名的学生!”nendl; cout输入任意字符!继续; getch(); break; case 2: coutId; if(p=FindID(I
17、d)) p-NextShow(); cout”输入任意字符!继续”; getch(); else cout没有找到该学好的学生!”nendl; cout”输入任意字符!继续; getch(); break; /修改信息 void Studentmassage:ModifyItem() /修改信息 char name20; Student p=NULL; couttt请输入要修改的人的姓名:;cinname; if(p=FindItem(name) couttt已找到学生的信息,请输入新的信息!”Input(); cout修改成功!”endl; cout”输入任意字符!继续; getch();
18、else couttt没有找到!”endl; cout输入任意字符!继续”; getch(); /删除信息 void Studentmassage:RemoveItem() / 删除信息 char name20; Student * p=NULL,temp=NULL; cout”请输入要删除的学生的姓名:”name; if(p=FindItem(name)) temp=pNext; pNext=pNextNext; delete temp; cout”删除成功!endl; cout输入任意字符!继续”; getch(); else cout”没有找到!”Enum=p1-Enum; tempav
19、er=p1aver; strcpy(p1-name,p2-name); strcpy(p1Id,p2Id); p1-Cnum=p2Cnum; p1Mnum=p2-Mnum; p1Enum=p2Enum; p1-aver=p2aver; strcpy(p2name,temp-name); strcpy(p2-Id,temp-Id); p2Cnum=temp-Cnum; p2Mnum=tempMnum; p2Enum=tempEnum; p2-aver=temp-aver; / int Studentmassage:ListCount()/统计当前链表的记录总数,返回一个整数 if(! Head) return 0; int n=0; for(Student p=HeadNext;p!=End;p=pNext) n+; return n; / void Studentmassage::Sort()/对当前链表进行排序 cout Next;p!=End;p=p