学生成绩管理系统(c++)(共33页)_第1页
学生成绩管理系统(c++)(共33页)_第2页
学生成绩管理系统(c++)(共33页)_第3页
学生成绩管理系统(c++)(共33页)_第4页
学生成绩管理系统(c++)(共33页)_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上学生成绩管理系统(仅源代码)#include<iostream>#include<iomanip>#include<fstream>#include<string>#define MAX_NUM 10/对象数组最大容纳人数 using namespace std;int pupil_num = 0;int mid_stu_num = 0;int univ_stu_num = 0;class Student public:friend class BaseOperate;protected:string no;string

2、 name;string sex;int age;int class_infor2;/分别存储年级和班级 int total_grade; class Pupil:public Student public:friend class BaseOperate;protected:int english_grade;int math_grade;int chinese_grade; class MiddleSchoolStudent:public Pupil public:friend class BaseOperate;private:int geography_grade;int histor

3、y_grade; ;class UniversityStudent:public Student public:friend class BaseOperate;private:int major_grade;int english_grade;int higher_math_grade;int programming_grade;Pupil pupilMAX_NUM;MiddleSchoolStudent mid_stuMAX_NUM;UniversityStudent univ_stuMAX_NUM;class BaseOperate public:bool query();/查询 boo

4、l addRecordInPupil(string no);bool addRecordInMid(string no);bool addRecordInUniv(string no);bool deleteRecordInPupil(string no);bool deleteRecordInMid(string no); bool deleteRecordInUniv(string no);bool modifyInforInPupil(string no);bool modifyInforInMid(string no);bool modifyInforInUniv(string no)

5、;void show();/输出所有学生信息 void tally();/统计 (能统计学生人数、总分、单科的平均分等)void sort();/排序 (可按总分和单科成绩排名次)void save();void read();bool BaseOperate:query() string no; cout << "请输入学号:" << endl;cin >> no;cout << endl;cout.setf(std:ios:left);/在小学生中查找 for (int i = 0; i < pupil_num; i

6、+) if (no = pupili.no) cout << "学生类型:小学生" << endl << endl;cout << "学号 姓名 性别 年龄 班级 语文 数学 英语" << endl;cout << setw(6) << pupili.no << setw(8) << << setw(8) << pupili.sex << setw(6) << pupili.a

7、ge << setw(3) << (pupili.class_infor)0 << "0" << setw(3) << (pupili.class_infor)1 << setw(7) << pupili.chinese_grade << setw(7) << pupili.math_grade << setw(7) << pupili.english_grade << endl << endl; return true

8、; for (int i = 0; i < mid_stu_num; i+) if (no = mid_stui.no) cout << "学生类型:中学生" << endl << endl;cout << "学号 姓名 性别 年龄 班级 语文 数学 英语 地理 历史" << endl;cout << setw(6) << mid_stui.no << setw(8) << mid_ << setw(8) <

9、;< mid_stui.sex << setw(6) << mid_stui.age << setw(3) << (mid_stui.class_infor)0 << "0" << setw(3) << (mid_stui.class_infor)1 << setw(7) << mid_stui.chinese_grade << setw(7) << mid_stui.math_grade << setw(7) <<

10、; mid_stui.english_grade << setw(7) << mid_stui.geography_grade << setw(7) << mid_stui.history_grade << endl << endl;return true;for (int i = 0; i < univ_stu_num; i+) if (no = univ_stui.no) cout << "学生类型:大学生" << endl << endl;cout <

11、;< "学号 姓名 性别 年龄 班级 专业 高数 英语 编程" << endl;cout << setw(6) << univ_stui.no << setw(8) << univ_ << setw(8) << univ_stui.sex << setw(6) << univ_stui.age << setw(3) << (univ_stui.class_infor)0 << "0" &l

12、t;< setw(3) << (univ_stui.class_infor)1 << setw(7) << univ_stui.major_grade << setw(7) << univ_stui.higher_math_grade << setw(7) << univ_stui.english_grade << setw(7) << univ_gramming_grade << endl << endl;return true;cout

13、<< "没有找到该学生" << endl; return false;bool BaseOperate:addRecordInPupil(string no) for (int i = 0; i < pupil_num; i+) if (pupili.no = no) return false;pupilpupil_num.no = no;cout << "姓名:" cin >> pupilpupil_;cout << "性别:" cin >>

14、; pupilpupil_num.sex;cout << "年龄:" cin >> pupilpupil_num.age;cout << "年级:" cin >> pupilpupil_num.class_infor0;cout << "班级:" cin >> pupilpupil_num.class_infor1; cout << "语文成绩:" cin >> pupilpupil_num.chinese_grade;

15、cout << "数学成绩:" cin >> pupilpupil_num.math_grade;cout << "英语成绩:" cin >> pupilpupil_num.english_grade;pupilpupil_num.total_grade = pupilpupil_num.chinese_grade + pupilpupil_num.math_grade + pupilpupil_num.english_grade;pupil_num+;return true; bool BaseOpera

16、te:addRecordInMid(string no) for (int i = 0; i < mid_stu_num; i+) if (mid_stui.no = no) return false;mid_stumid_stu_num.no = no;cout << "姓名:" cin >> mid_stumid_stu_;cout << "性别:" cin >> mid_stumid_stu_num.sex;cout << "年龄:" cin &g

17、t;> mid_stumid_stu_num.age;cout << "年级:" cin >> mid_stumid_stu_num.class_infor0;cout << "班级:" cin >> mid_stumid_stu_num.class_infor1; cout << "语文成绩:" cin >> mid_stumid_stu_num.chinese_grade;cout << "数学成绩:" cin >&

18、gt; mid_stumid_stu_num.math_grade;cout << "英语成绩:" cin >> mid_stumid_stu_num.english_grade;cout << "地理成绩:" cin >> mid_stumid_stu_num.geography_grade;cout << "历史成绩:" cin >> mid_stumid_stu_num.history_grade;mid_stumid_stu_num.total_grade

19、 = mid_stumid_stu_num.chinese_grade + mid_stumid_stu_num.math_grade + mid_stumid_stu_num.english_grade + mid_stumid_stu_num.geography_grade + mid_stumid_stu_num.history_grade;mid_stu_num+; return true; bool BaseOperate:addRecordInUniv(string no) for (int i = 0; i < univ_stu_num; i+) if (univ_stui

20、.no = no) return false;univ_stuuniv_stu_num.no = no;cout << "姓名:" cin >> univ_stuuniv_stu_;cout << "性别:" cin >> univ_stuuniv_stu_num.sex;cout << "年龄:" cin >> univ_stuuniv_stu_num.age;cout << "年级:" cin >>

21、univ_stuuniv_stu_num.class_infor0;cout << "班级:" cin >> univ_stuuniv_stu_num.class_infor1; cout << "专业成绩:" cin >> univ_stuuniv_stu_num.major_grade;cout << "英语成绩:" cin >> univ_stuuniv_stu_num.english_grade;cout << "高数成绩:"

22、; cin >> univ_stuuniv_stu_num.higher_math_grade;cout << "编程成绩:" cin >> univ_stuuniv_stu_gramming_grade;univ_stuuniv_stu_num.total_grade = univ_stuuniv_stu_num.major_grade + univ_stuuniv_stu_num.english_grade + univ_stuuniv_stu_num.higher_math_grade + univ_stuuniv_s

23、tu_gramming_grade;univ_stu_num+;return true; bool BaseOperate:deleteRecordInPupil(string no) int index = -1;for (int i = 0; i < pupil_num; i+) if (no = pupili.no) index = i;break;if (index = -1)return false; while (index < pupil_num) if (index + 1 >= pupil_num) break;pupilindex.no =

24、pupilindex + 1.no; = pupilindex + 1.name;pupilindex.age = pupilindex + 1.age;pupilindex.sex = pupilindex + 1.sex;(pupilindex.class_infor)0 = (pupilindex + 1.class_infor)0;(pupilindex.class_infor)1 = (pupilindex + 1.class_infor)1;pupilindex.chinese_grade = pupilindex + 1.chinese_grade;

25、pupilindex.math_grade = pupilindex + 1.math_grade;pupilindex.english_grade = pupilindex + 1.english_grade;index+;pupil_num-;return true;bool BaseOperate:deleteRecordInMid(string no) int index = -1;for (int i = 0; i < mid_stu_num; i+) if (no = mid_stui.no) index = i;break;if (index = -1)return fal

26、se; while (index < mid_stu_num) if (index + 1 >= mid_stu_num) break;mid_stuindex.no = mid_stuindex + 1.no;mid_ = mid_stuindex + 1.name;mid_stuindex.age = mid_stuindex + 1.age;mid_stuindex.sex = mid_stuindex + 1.sex;(mid_stuindex.class_infor)0 = (mid_stuindex + 1.class_infor)0;(mid

27、_stuindex.class_infor)1 = (mid_stuindex + 1.class_infor)1;mid_stuindex.chinese_grade = mid_stuindex + 1.chinese_grade;mid_stuindex.math_grade = mid_stuindex + 1.math_grade;mid_stuindex.english_grade = mid_stuindex + 1.english_grade;mid_stuindex.geography_grade = mid_stuindex + 1.geography_grade;mid_

28、stuindex.history_grade = mid_stuindex + 1.history_grade;index+;mid_stu_num-;return true;bool BaseOperate:deleteRecordInUniv(string no) int index = -1;for (int i = 0; i < univ_stu_num; i+) if (no = univ_stui.no) index = i;break;if (index = -1)return false; while (index < univ_stu_num) if (index

29、 + 1 >= univ_stu_num) break;univ_stuindex.no = univ_stuindex + 1.no;univ_ = univ_stuindex + 1.name;univ_stuindex.age = univ_stuindex + 1.age;univ_stuindex.sex = univ_stuindex + 1.sex;(univ_stuindex.class_infor)0 = (univ_stuindex + 1.class_infor)0;(univ_stuindex.class_infor)1 = (univ_

30、stuindex + 1.class_infor)1;univ_stuindex.major_grade = univ_stuindex + 1.major_grade;univ_gramming_grade = univ_stuindex + 1.programming_grade;univ_stuindex.higher_math_grade = univ_stuindex + 1.higher_math_grade;univ_stuindex.english_grade = univ_stuindex + 1.english_grade;index+;univ_s

31、tu_num-;return true;bool BaseOperate:modifyInforInPupil(string no) for (int i = 0; i < pupil_num; i+) if (no = pupili.no) cout << "年龄:" cin >> pupili.age;cout << "年级:" cin >> pupili.class_infor0;cout << "班级:" cin >> pupili.class_in

32、for1; cout << "语文成绩:" cin >> pupili.chinese_grade;cout << "数学成绩:" cin >> pupili.math_grade;cout << "英语成绩:" cin >> pupili.english_grade;pupili.total_grade = pupili.chinese_grade + pupili.math_grade + pupili.english_grade;return true; r

33、eturn false;bool BaseOperate:modifyInforInMid(string no) for (int i = 0; i < mid_stu_num; i+) if (no = mid_stui.no) cout << "年龄:" cin >> mid_stui.age;cout << "年级:" cin >> mid_stui.class_infor0;cout << "班级:" cin >> mid_stui.class_in

34、for1; cout << "语文成绩:" cin >> mid_stui.chinese_grade;cout << "数学成绩:" cin >> mid_stui.math_grade;cout << "英语成绩:" cin >> mid_stui.english_grade;cout << "地理成绩:" cin >> mid_stui.geography_grade;cout << "历史成

35、绩:" cin >> mid_stui.history_grade;mid_stui.total_grade = mid_stui.chinese_grade + mid_stui.math_grade + mid_stui.english_grade + mid_stui.geography_grade + mid_stui.history_grade;return true; return false;bool BaseOperate:modifyInforInUniv(string no) for (int i = 0; i < univ_stu_num; i

36、+) if (no = univ_stui.no) cout << "年龄:" cin >> univ_stui.age;cout << "年级:" cin >> univ_stui.class_infor0;cout << "班级:" cin >> univ_stui.class_infor1; cout << "专业成绩:" cin >> univ_stui.major_grade;cout << &qu

37、ot;英语成绩:" cin >> univ_stui.english_grade;cout << "高数成绩:" cin >> univ_stui.higher_math_grade;cout << "编程成绩:" cin >> univ_gramming_grade; univ_stui.total_grade = univ_stui.major_grade + univ_stui.english_grade + univ_stui.higher_math_grade

38、 + univ_gramming_grade;return true; return false;void BaseOperate:show() cout << "小学生:" << endl << endl;if (pupil_num = 0) cout << "无" << endl << endl; else cout << "学号 姓名 性别 年龄 班级 语文 数学 英语" << endl;cout.setf(std:i

39、os:left);for (int i = 0; i < pupil_num; i+) cout << setw(6) << pupili.no << setw(8) << << setw(8) << pupili.sex << setw(6) << pupili.age << setw(3) << (pupili.class_infor)0 << "0" << setw(3) << (pu

40、pili.class_infor)1 << setw(7) << pupili.chinese_grade << setw(7) << pupili.math_grade << setw(7) << pupili.english_grade << endl << endl;cout << "中学生:" << endl << endl;if (mid_stu_num = 0) cout << "无" <<

41、; endl << endl; else cout << "学号 姓名 性别 年龄 班级 语文 数学 英语 地理 历史" << endl;for (int i = 0; i < mid_stu_num; i+) cout << setw(6) << mid_stui.no << setw(8) << mid_ << setw(8) << mid_stui.sex << setw(6) << mid_stui.age &l

42、t;< setw(3) << (mid_stui.class_infor)0 << "0" << setw(3) << (mid_stui.class_infor)1 << setw(7) << mid_stui.chinese_grade << setw(7) << mid_stui.math_grade << setw(7) << mid_stui.english_grade << setw(7) << mid_stui.

43、geography_grade << setw(7) << mid_stui.history_grade << endl << endl;cout << "大学生:" << endl << endl;if (univ_stu_num = 0) cout << "无" << endl << endl; else cout << "学号 姓名 性别 年龄 班级 专业 高数 英语 编程" << en

44、dl;for (int i = 0; i < univ_stu_num; i+) cout << setw(6) << univ_stui.no << setw(8) << univ_ << setw(8) << univ_stui.sex << setw(6) << univ_stui.age << setw(3) << (univ_stui.class_infor)0 << "0" << setw(3)

45、<< (univ_stui.class_infor)1 << setw(7) << univ_stui.major_grade << setw(7) << univ_stui.higher_math_grade << setw(7) << univ_stui.english_grade << setw(7) << univ_gramming_grade << endl << endl;void BaseOperate:tally() int sum

46、_chinese = 0;int sum_math = 0;int sum_english = 0;int sum_geography = 0;int sum_history = 0;int sum_higher_math = 0;int sum_major = 0;int sum_programming = 0;/小学生cout << "小学生:" << endl << endl;cout << "-" << endl;cout << "人数:" <<

47、; pupil_num << endl;cout << "-" << endl;if (pupil_num != 0) cout << "学号 姓名 总分" << endl;for (int i = 0; i < pupil_num; i+) cout << setw(6) << pupili.no << setw(8) << << setw(4) << pupili.total_grade &

48、lt;< endl;cout << endl;for (int i = 0; i < pupil_num; i+) sum_chinese += pupili.chinese_grade;sum_math += pupili.math_grade;sum_english += pupili.english_grade;cout << "语文平均分:" << (double)sum_chinese / pupil_num << endl;cout << "数学平均分:" <<

49、; (double)sum_math / pupil_num << endl;cout << "英语平均分:" << (double)sum_english / pupil_num << endl;cout << "-" << endl;/中学生cout << endl << "中学生:" << endl << endl;cout << "-" << endl;cout &

50、lt;< "人数:" << mid_stu_num << endl;cout << "-" << endl;if (mid_stu_num != 0) cout << "学号 姓名 总分" << endl;for (int i = 0; i < mid_stu_num; i+) cout << setw(6) << mid_stui.no << setw(8) << mid_ <&

51、lt; setw(4) << mid_stui.total_grade << endl;cout << endl;sum_chinese = 0;sum_math = 0;sum_english = 0;for (int i = 0; i < mid_stu_num; i+) sum_chinese += mid_stui.chinese_grade;sum_math += mid_stui.math_grade;sum_english += mid_stui.english_grade;sum_geography += mid_stui.geogra

52、phy_grade;sum_history += mid_stui.history_grade;cout << "语文平均分:" << (double)sum_chinese / mid_stu_num << endl;cout << "数学平均分:" << (double)sum_math / mid_stu_num << endl;cout << "英语平均分:" << (double)sum_english / mid_stu_num

53、 << endl;cout << "地理平均分:" << (double)sum_geography / mid_stu_num << endl;cout << "历史平均分:" << (double)sum_history / mid_stu_num << endl;cout << "-" << endl;/大学生:cout << endl << "大学生:" << en

54、dl << endl;cout << "-" << endl;cout << "人数:" << univ_stu_num << endl;cout << "-" << endl;if (univ_stu_num != 0) cout << "学号 姓名 总分" << endl;for (int i = 0; i < univ_stu_num; i+) cout << setw(6

55、) << univ_stui.no << setw(8) << univ_ << setw(4) << univ_stui.total_grade << endl;cout << endl;sum_english = 0;for (int i = 0; i < univ_stu_num; i+) sum_higher_math += univ_stui.higher_math_grade;sum_major += univ_stui.major_grade;sum_programming

56、 += univ_gramming_grade;sum_english += univ_stui.english_grade;cout << "专业平均分:" << (double)sum_major / univ_stu_num << endl;cout << "高数平均分:" << (double)sum_higher_math / univ_stu_num << endl;cout << "英语平均分:" << (do

57、uble)sum_english / univ_stu_num << endl;cout << "编程平均分:" << (double)sum_programming / univ_stu_num << endl;cout << "-" << endl;void BaseOperate:sort() /小学生(按总分排序)Pupil temp_p;for (int i = 0; i < pupil_num; i+) for (int j = 1; j < pupil_nu

58、m - i; j+) if (pupilj - 1.total_grade < pupilj.total_grade) temp_p = pupilj - 1;pupilj - 1 = pupilj;pupilj = temp_p;/中学生 MiddleSchoolStudent temp_m;for (int i = 0; i < mid_stu_num; i+) for (int j = 1; j < mid_stu_num - i; j+) if (mid_stuj - 1.total_grade < mid_stuj.total_grade) temp_m =

59、mid_stuj - 1;mid_stuj - 1 = mid_stuj;mid_stuj = temp_m;/大学生 UniversityStudent temp_u;for (int i = 0; i < univ_stu_num; i+) for (int j = 1; j < univ_stu_num - i; j+) if (univ_stuj - 1.total_grade < univ_stuj.total_grade) temp_u = univ_stuj - 1;univ_stuj - 1 = univ_stuj;univ_stuj = temp_u;sho

60、w();void BaseOperate:save() /小学生 ofstream out("PupilInfor.txt", ios_base:binary);for (int i = 0; i < pupil_num; i+) out << pupili.no << " " << << " " << pupili.sex << " " << pupili.age << " &qu

61、ot; << (pupili.class_infor)0 << " " << (pupili.class_infor)1 << " " << pupili.chinese_grade << " " << pupili.math_grade << " " << pupili.english_grade << " "out.close();/中学生out.open("MidStuInfor.txt", ios_base:binary);for (int i = 0; i < mid_stu_num; i+) out << mid_stui.no <

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论