ImageVerifierCode 换一换
格式:DOCX , 页数:40 ,大小:212.50KB ,
资源ID:11895673      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11895673.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(某系学生成绩管理系统计算器程序论文.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

某系学生成绩管理系统计算器程序论文.docx

1、某系学生成绩管理系统计算器程序论文目 录 PART I1 需求分析 12 算法基本原理 13 类设计 24 详细设计 34.1 类的接口设计 44.2 类的实现 64.3 主函数设计 115 运行结果与分析 135.1 程序运行结果 135.2 运行结果分析 15PART II1 类设计16 2 详细设计 .233 运行结果31参考文献 31PART I1 需求分析(1)实现年级管理(4个年级)、班级管理及学生信息管理,可以实现班级的查询、添加、删除、修改,学生成绩的查询、添加、删除、修改等。程序使用类的包含方法实现。1)一个班最多30名学生,4门课程;2)班级信息、学生成绩存放在数据文件中;

2、3)内存中数据组织建议采用STL容器。设计班级类、学生类等,建立文件、输出文件内容、计算每个学生总分并进行总分排序、查找各科最低分和最高分。(2)设计一个Student类,包含学生的基本信息:姓名、学号、四门课程(大外、高数、模电、C+)的分数和总分数;StuList类用于实现学生成绩的查找、添加、删除、修改;Class类包含班级带的基本信息:年级、班级名称和所有学生;ClList类用于实现班级的查询、添加、删除、修改。(3)用list链表容器存放多个学生的信息和多个班级的信息。使用容器的sort()函数实现学生的总分排序。Max()和Min()分别实现查找各科的最高分和最低分。2 算法基本原

3、理一个年级包含多个班级,用list链表容器存放一个年级的所有班级,用Class类存放班级的所有学生,用ClList类的成员函数对班级进行查找、添加、删除、修改。 (2)一个班级有很多学生(不超过30个),用Student类存放学生信息,StuList类带的成员函数实现学生成绩的查找、添加、删除、修改,总分的排序,求各科的最高分和最低分。(3)学会STL标准模板库里德容器、迭代器、和算法的使用方法。本程序使用List链表容器存放学生信息并进行相应的操作,如用push_back()函数进行添加操作、用sort()函数进行排序,用erase()函数进行删除操作等。(4)用文件FILE读取和输出学生信

4、息和班级信息。3 类设计从上面的算法分析可以看到,本设计面临的计算问题的关键是学生信息和班级信息的处理。可以定义一个学生类Student显示学生的基本信息,然后定义一个学生链表类StuList实现学生成绩的相关操作;又定义一个班级类Class显示班级的基本信息,最后定义一个班级链表类ClList实现班级的一些相应操作等。从问题的需要来看,需要调用STL标准模板库里德一些函数如push_back()函数进行添加操作、用sort()函数进行排序,用erase()函数进行删除操作等。 学生类和班级类还有学生链表类和班级链表类之间的相互关系如图1所示。 StuList - list thestu +

5、Getthestu() : list + Add(Student stu) : void + Seek(char *num) : void + Show() : void + SorttoFile(char *filename) : void + Max() : void + Min() : void学生类和学生链表类的UML图的表示 Class - clgrade10 : char- clclass10 : char- cl : list + Class()+ Class(char *grade, char *cclass, list l)+ *Getclclass() : char+ CP

6、rint() : void ClList- thecl :list+ CAdd(Class cl) : void+ CSeek(char *cclass) : void+ CModify(char *cclass, Class &cl) : void+ CDelete(char *cclass) : void+ CShow() : void班级类和班级链表类的UML图形表示学生链表类需要访问学生类的私有成员,但是私有成员是不允许外部函数访问的,故在学生类当中定义了返回私有成员(stunum和stuscore)的成员函数,同理在班级类中也定义了返回(clclass)的成员函数。4 详细设计整个程

7、序一个文档,kese1.h文件中包括学生类Student、学生链表类StuList、班级类Class、班级链表类ClList的声明,kese1.Cpp文件中包含; 这四个类类的成员函数实现文件;main.cpp文件包括程序的主函数,主函数中定义了一个类StuList的对象,通过这个对象存放所有的学生并进行相关操作;比定义了ClList类的对象,通过这个对象对班级进行相关的操作。4.1 类的接口设计/kese1.h 文件,实现类的声明#include #include #include #include #include #include using namespace std;/student

8、.h学生类class Student;class StuList;ostream& operator(ostream& os, const Student& stu); /输出流文件声明class Studentprivate: char stuname20; /学生姓名 char stunum12; /学生学号 float stuscore4; /四门课程的成绩 float total; /总分数public: Student() /构造函数 Student(char *name, char *num, float s1, float s2, float s3, float s4);/构造函

9、数 void print(int n = -1); /输出函数 char *Getnum() /输出学号 return stunum; float *Getstuscore() /输出分数 return stuscore; friend ostream& operator(ostream& os, const Student& stu); /读出文件 bool operator(const Student& stu) /重载 stu.total;/ friend class StuList; /友元类;/StuList.h 学生信息的相关处理class StuListprivate: list

10、 thestu; /链表对象public: list Getthestu() /输出链表 return thestu; void Add(Student stu); /添加学生信息 void Seek(char *num); /查询学生信息,按学号查询,返回记录号,-1表示没有找到 void Show(); /遍历列表显示 void SorttoFile(char *filename); /按学生总成绩从高到低排序并写到文件中 void Max(); /各科的最高分 void Min(); /各科的最低分;/Class.h班级类class Classprivate: char clgrade1

11、0; /一共四个年级,其中的一个年级 char clclass10; /班级名称 list cl; /链表对象,一个班最多30个学生public: Class() /构造函数 Class(char *grade, char *cclass, list l) /构造函数 strncpy(clgrade, grade, 10); strncpy(clclass , cclass, 10); cl = l; char *Getclclass() /输出学号 return clclass; void CPrint(); /输出学生信息 friend ostream& operator(ostream&

12、 os, const Class& cl); /读出文件;/ClList.h班级链表类class ClListprivate: list thecl;public: void CAdd(Class cl); /添加班级信息 void CSeek(char *cclass); /查询班级信息,按班级名称查询 void CModify(char *cclass, Class &cl); /修改班级信息 void CDelete(char *cclass); /删除班级信息 void CShow(); /遍历列表显示;以上四个类已经能够显示学生信息,比不过可通过一些成员函数实现学生和班级的一些添加、

13、修改、删除、查找等操作。4.2 类的实现#include stdafx.h#include #include #include #include #include #include #include using namespace std;/Student.cppStudent:Student(char *name, char *num, float s1, float s2, float s3, float s4)/构造函数 strncpy(stuname, name, 20); strncpy(stunum , num, 12); stuscore0 = s1; stuscore1 = s

14、2; stuscore2 = s3; stuscore3 = s4; total = stuscore0 + stuscore1 + stuscore2 + stuscore3;void Student:print(int n)/输出函数 static bool stuHead = false; if(!stuHead) if(n 0) coutsetw(3)序号; coutsetw(10)姓名setw(20)学号 setw(6)大外setw(6)高数 setw(6)模电setw(10)面向对象 setw(10)总分 0) coutsetw(3)n; coutsetw(10)stunamese

15、tw(20)stunum setw(6)stuscore0setw(6)stuscore1 setw(6)stuscore2setw(10)stuscore3 setw(10)totalendl;ostream& operator(ostream& os, const Student& stu)/读出文件 os.write(stu.stuname, 20); os.write(stu.stunum, 12); os.write(char*)stu.stuscore, sizeof(stu.stuscore); os.write(char*)&stu.total, sizeof(float);

16、return os;/StuList.cppvoid StuList:Add(Student stu) /添加学生信息的函数 thestu.push_back(stu);void StuList:Seek(char *num) /按学号查找 int sign = -1, i = 0; list:iterator it = thestu.begin(); /定义迭代器指针 Student stu; while(it != thestu.end() stu = *it; if(strcmp(stu.Getnum(), num) = 0) sign = i; break; it+; i+; if(s

17、ign = 0) cout找到的结果为endl; stu.print(sign + 1); else cout没有找到!endl;void StuList:Show() /遍历列表显示 list:iterator it = thestu.begin(); /定义迭代器指针 int i = 0; while(it != thestu.end() it-print(+i); it+; void StuList:SorttoFile(char * filename) /按学生总成绩进行排序 thestu.sort(); Show(); /排序后的内容保存到文件中 ofstream out(filen

18、ame); copy(thestu.begin(), thestu.end(), ostream_iterator(out); void StuList:Max() /各科的最高分 float max4 = 0, 0, 0, 0; for(int i=0; i4; i+) list:iterator it = thestu.begin(); /定义迭代器指针 Student stu; while(it != thestu.end() stu = *it; if(maxi stu.stuscorei) maxi = stu.stuscorei; it+; cout各科的最高分 :大外max0高数

19、max1模电max2面向对象max3endl;void StuList:Min() /各科的最低分 float min4 = 100, 100, 100, 100; for(int i=0; i4; i+) list:iterator it = thestu.begin(); /定义迭代器指针 Student stu; while(it != thestu.end() stu = *it; if(mini stu.stuscorei) mini = stu.stuscorei; it+; cout各科的最低分 :大外min0高数min1模电min2面向对象min3endl;/Class.cpp

20、void Class:CPrint() /输出班级信息 coutsetw(3)年级setw(10)班级endl; coutsetw(3)clgradesetw(10)clclassendl; coutsetw(3)序号; coutsetw(10)姓名setw(20)学号 setw(6)大外setw(6)高数 setw(6)模电setw(10)面向对象 setw(10)总分endl; list:iterator it = cl.begin();/定义迭代器指针 int i = 0; while(it != cl.end() it-print(+i); it+; /ClList.cppvoid C

21、lList:CAdd(Class cl) /增加班级信息 thecl.push_back(cl);void ClList:CSeek(char *cclass) /查询班级信息 int sign = -1; list:iterator it = thecl.begin(); /定义迭代器指针 Class cl; while(it != thecl.end() cl = *it; if(strcmp(cl.Getclclass(), cclass) = 0) sign = 1; break; it+; if(sign 0) cout查找的结果为endl; cl.CPrint(); else co

22、ut没有查找到!endl;void ClList:CModify(char *cclass, Class &cl) /修改班级信息 list:iterator it = thecl.begin(); /定义迭代器指针 while(it != thecl.end() if(strcmp(*it).Getclclass(), cclass) = 0) *it = cl; / sign = 1; break; it+; cout修改的结果为endl; cl.CPrint();void ClList:CDelete(char *cclass) /班级的删除 list:iterator it = the

23、cl.begin();/定义迭代器指针 while(it != thecl.end() if(strcmp(*it).Getclclass(), cclass) = 0) thecl.erase(it); break; it+; cout删除成功endl;void ClList:CShow() /年级中所有班级的显示 list:iterator it = thecl.begin(); /定义迭代器指针 Class cl; while(it != thecl.end() cl = *it; cl.CPrint(); it+; 4.3 主函数设计/kese1.cppint main() /主函数

24、StuList thestu; /存放所有学生 Student stu1(ma, 0803070201, 88, 90, 69, 52.6f); Student stu2(li, 0803070202, 52, 96, 74, 56); Student stu3(wang, 0803070101, 85, 25, 95, 79); Student stu4(yang, 0803070102, 82, 78, 84, 95); Student stu5(ding, 0803070301, 76, 85.6f, 94, 83); thestu.Add(stu1); thestu.Add(stu2)

25、; thestu.Add(stu3); thestu.Add(stu4); thestu.Add(stu5); thestu.Show(); thestu.Seek(0803070201); /查找学号为0803070201的同学 cout排序的结果endl; thestu.SorttoFile(student.dat); /按总分排序 thestu.Max(); thestu.Min(); StuList s1; StuList s2; StuList s3; s1.Add(stu3); s1.Add(stu4); s3.Add(stu5); s2.Add(stu1); s2.Add(stu

26、2); ClList thecl; Class cl1(二年级, 08030701,s1.Getthestu(); Class cl2(二年级, 08030702,s2.Getthestu(); Class cl3(二年级, 08030703,s3.Getthestu(); thecl.CAdd(cl1); thecl.CAdd(cl2); thecl.CShow(); thecl.CSeek(08030702); /查找班级为08030702的班级 thecl.CAdd(cl3); cout将08030702修改为08030703endl; thecl.CModify(08030702, cl3); /修改班级 cout删除08030701班endl; thecl.CDelete(08030701); /删除08030701班 return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1