最新C++大作业:学生信息管理系统(附代码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生信息管理系统(附代码)
题目要求:
设计一个类CStudent,类中包含一个学生的基本数据如下:
编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。
如:1 LiPing m 18 89 98 94
请采用binary文件形式,并使用随机读写处理方式,对自定义CStudent类的对象数据进行存储与读写处理(即是说,总按具有连续编码的编号num为“序”来对文件中的各对象数据进行随机读写处理)。并设计该类的成员函数,而且对输出运算符“<<”进行重载,使该运算符能够完成将一个学生的信息输出到屏幕上。
要求成员函数完成以下功能:
(1)从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。
(2)按编号对学生信息进行检索并将检索结果显示在屏幕上。
(3)按姓名对学生信息进行检索并将检索结果显示在屏幕上。
(4)计算某编号学生的总成绩与平均成绩。
(5)列出所有总成绩超过n分的性别为s同学的有关信息(n,s由用户从键盘输入)。Code:
1. /****************************************
2. *名称: student.cpp *
3. *描述: 学生管理程序*
4. *功能: 添加,修改,按条件查询学生信息*
5. *环境: Fedora Linux 11 & GCC & x86 *
6. *备注: davelv第一次Class于2010-01-10 *
7. *更新: 新建了可复用的搜索模板searchframe *
8. ****************************************/
9.
10. #include
11. #include
12. #include
13. #include
14. #include
15.
16. using namespace std;
17. #define CIN_LEN 1024//缓冲区长度
18. #define FILENAME "data"//数据文件名
19. /////////////////////////////////////
20. // 结构和类//
21. ///////////////////////////////////
22. struct data//学生个人信息
23. {
24. int id;//学号
25. char name[20];//名字
26. char major[20];//专业
27. char sex;//性别
28. double ch,en,ma;//成绩
29. int grade;//年级
30. };
31.
32. class CStudent
33. {
34. protected:
35. bool altered;//是否修改
36. data info;//学生信息
37. public:
38. static int nowid ;//新学生自增id
39. static void displayhead();//显示表头
40. static void displayshorthead();//显示短表头
41. CStudent();//构造
42. void displayinfo();//显示全部学生信息
43. void displayshortinfo();//显示学生短信息
44. double getsum();//取总成绩
45. double getave();//取得平均分
46. double getch();//取语文成绩
47. double geten();//取外语成绩
48. double getma();//取数学成绩
49. int set(bool isnew);//设置学生信息
50. int getgrade();//取年级
51. int getid();//取学号
52. bool isaltered();//取是否修改
53. char getsex();//取性别
54. char* getname();//取姓名
55. char* getmajor();//取专业
56. data* getinfo();//取学生全部信息
57. //定义友元函数以便重载运算符
58. friend ostream& operator<<(ostream&,const CStudent&);
59. friend istream& operator>>(istream&,CStudent&);
60.
61. };
62.
63. int CStudent::nowid = 1;//初始化类静态成员
64.
65. CStudent::CStudent()//基类构造
66. {
67. info.id=CStudent::nowid++;//子增id
68. strcpy(,"None");//名字
69. info.ch=0;//语文成绩
70. info.en=0;//外语成绩
71. info.ma=0;//数学成绩
72. info.grade=1;//年级
73. altered=false;//未被修改
74. }
75.
76. int CStudent::getgrade()
77. {
78. return info.grade;
79. }
80.
81. double CStudent::getsum()
82. {
83. return info.ch+info.en+info.ma;
84. }
85. double CStudent::getave()
86. {
87. return (info.ch+info.en+info.ma)/3;
88. }
89. double CStudent::getch()
90. {
91. return info.ch;
92. }
93.
94. double CStudent::geten()
95. {
96. return info.en;
97. }
98.
99. double CStudent::getma()
100. {