C++编写 学生成绩管理系统.docx
《C++编写 学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C++编写 学生成绩管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
![C++编写 学生成绩管理系统.docx](https://file1.bdocx.com/fileroot1/2023-2/1/29707d40-4b05-428b-b025-f96e8f0f3dfd/29707d40-4b05-428b-b025-f96e8f0f3dfd1.gif)
C++编写学生成绩管理系统
1.# include
2.# include
3.# include
4.#include //用getch();
5.using namespace std;
6.
7.//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
8.class Student
9.{
10.public:
11. char name[20];
12. char Id[20];
13. int Cnum; //C++课程得分
14. int Mnum; //汇编课程得分
15. int Enum; //嵌入式操作系统课程得分
16. int sum; //总分
17. Student * Next;
18. void Input()
19. {
20. cout<<"\t\t请输入学生的姓名:
"; cin>>name;
21. cout<<"\t\t请输入学生的学号:
"; cin>>Id;
22. cout<<"\t\t请输入C++课程的成绩:
"; cin>>Cnum;
23. cout<<"\t\t请输入汇编课程的成绩:
"; cin>>Mnum;
24. cout<<"\t\t请输入嵌入式操作系统课程的成绩:
"; cin>>Enum;
25. sum=Cnum+Mnum+Enum;
26. }
27. void ReadFile(istream & in)
28. {
29. in>>name>>Id>>Cnum>>Mnum>>Enum>>sum;
30. }
31. void Show()
32. {
33. cout<<"姓名:
"<"<"<34. <<"汇编:
"<"<"<35. }
36.};
37.
38.//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
39.class Studentmassage
40.{
41.public:
42. Studentmassage();
43. ~Studentmassage();
44. void ShowMenu();
45. void Find();
46. void Save();
47. void ModifyItem();
48. void RemoveItem();
49. void Swap(Student *,Student *);
50. void Sort();
51. //void Unpass();
52. int ListCount();
53. //void Average();
54. void Display()
55. {
56. for(Student * p=Head->Next;p!
=End;p=p->Next)
57. p->Show();
58. cout<<"输入任意字符!
继续……";
59. getch();
60. }
61. void AddItem()
62. {
63. End->Input();
64. End->Next=new Student;
65. End=End->Next;
66. cout<<"添加成功!
"<67. cout<<"输入任意字符!
继续……";
68. getch();
69. }
70.private:
71. Student * Head,* End;
72. ifstream in;
73. ofstream out;
74. Student *FindItem(char * name)
75. {
76. for(Student * p=Head;p->Next!
=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
77. if(!
strcmp(p->Next->name,name))return p;
78. return NULL;
79. }
80. Student *FindID(char * Id)
81. {
82. for(Student * p=Head;p->Next!
=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
83. if(!
strcmp(p->Next->Id,Id))return p;
84. return NULL;
85. }
86.};
87.
88.//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
89.Studentmassage:
:
Studentmassage()
90.{
91. Head=new Student;
92. Head->Next=new Student;
93. End=Head->Next;
94. in.open("sort.txt");
95. if(!
in)
96. cout<<"这是一个新系统,无学生信息。
请先输入。
"<97. else
98. {
99. while(!
in.eof())
100. {
101. End->ReadFile(in);
102. if(End->name[0]=='\0')break;
103. End->Next=new Student;
104. End=End->Next;
105. }
106. in.close();
107. cout<<"\t\t读取学生信息成功!
"<108. }
109.}
110.
111.//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
112.Studentmassage:
:
~Studentmassage()
113.{
114. Save();
115. for(Student * temp;Head->Next!
=End;)
116. {
117. temp=Head->Next;
118. Head->Next=Head->Next->Next;
119. delete temp;
120. }
121. delete Head,End;
122.}
123.
124.//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
125.void Studentmassage:
:
ShowMenu()
126.{
127. cout<<"********************************************************************************"<128. cout<<"〓〓〓〓〓〓〓〓〓〓 ☆ 学 生 成 绩 管 理 系 统 ☆ 〓〓〓〓〓〓〓〓〓〓"<129. cout<<"〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓〓"<130. cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<131. cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 2.显示学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<132. cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 3.排序统计成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<133. cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 4.查找学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<134. cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 5.删除学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<135. cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 6.修改学生信息 ☆ ★〓〓〓〓〓〓〓〓〓"<136. cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系统 ☆ ★〓〓〓〓〓〓〓〓〓"<137.
138. cout<<"\n\t\t\n\t\t请选择:
";
139.}
140.
141.//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
142.void Studentmassage:
:
Find()
143.{
144. char name[20] ,Id[10];
145. int x;
146. Student * p=NULL;
147. cout<<"\n\t\t*********************************\n";
148. cout<<"\t\t※ 1.按学生的姓名查找\n\t\t※ 2.按学生学号查找";
149. cout<<"\n\t\t*********************************\n请选择:
";
150. cin>>x;
151. switch(x)
152. {
153. case 1:
{cout<<"\t\t请输入要查找的学生的姓名:
";cin>>name;
154. if(p=FindItem(name))
155. {
156. p->Next->Show();
157. cout<<"输入任意字符!
继续……";
158. getch();
159. }
160. else
161. {
162. cout<<"\t\t没有找到该姓名的学生!
"<<'\n'<163. cout<<"输入任意字符!
继续……";
164. getch();
165. }
166. }break;
167. case 2:
168. {
169. cout<<"\t\t请输入要查找的学生的学号:
";cin>>Id;
170. if(p=FindID(Id))
171. {
172. p->Next->Show();
173. cout<<"输入任意字符!
继续……";
174. getch();
175. }
176. else
177. {
178. cout<<"\t\t没有找到该学好的学生!
"<<'\n'<179. cout<<"输入任意字符!
继续……";
180. getch();
181. }
182. }break;
183. }
184.
185.}
186.
187.//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
188.void Studentmassage:
:
ModifyItem() //修改信息
189.{
190. char name[20];
191. Student * p=NULL;
192. cout<<"\t\t请输入要修改的人的姓名:
";cin>>name;
193. if(p=FindItem(name))
194. {
195. cout<<"\t\t已找到学生的信息,请输入新的信息!
"<196. p->Next->Input();
197. cout<<"修改成功!
"<198. cout<<"输入任意字符!
继续……";
199. getch();
200. }
201. else
202. {
203. cout<<"\t\t没有找到!
"<204. cout<<"输入任意字符!
继续……";
205. getch();
206. }
207.}
208.
209.//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
210.void Studentmassage:
:
RemoveItem() // 删除信息
211.{
212. char name[20];
213. Student * p=NULL,*temp=NULL;
214. cout<<"\t\t请输入要删除的学生的姓名:
"<>name;
215. if(p=FindItem(name))
216. {
217. temp=p->Next;
218. p->Next=p->Next->Next;
219. delete temp;
220. cout<<"\t\t删除成功!
"<221. cout<<"输入任意字符!
继续……";
222. getch();
223. }
224. else
225. {
226. cout<<"\t\t没有找到!
"<227. cout<<"输入任意字符!
继续……";
228. getch();
229. }
230.}
231.
232.//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
233.void Studentmassage:
:
Swap(Student *p1, Student *p2)//交换两个combox变量的数据域
234.{
235. Student *temp=new Student;
236. strcpy(temp->name,p1->name);
237. strcpy(temp->Id,p1->Id);
238. temp->Cnum=p1->Cnum;
239. temp->Mnum=p1->Mnum;
240. temp->Enum=p1->Enum;
241. temp->sum=p1->sum;
242.
243. strcpy(p1->name,p2->name);
244. strcpy(p1->Id,p2->Id);
245. p1->Cnum=p2->Cnum;
246. p1->Mnum=p2->Mnum;
247. p1->Enum=p2->Enum;
248. p1->sum=p2->sum;
249.
250. strcpy(p2->name,temp->name);
251. strcpy(p2->Id,temp->Id);
252. p2->Cnum=temp->Cnum;
253. p2->Mnum=temp->Mnum;
254. p2->Enum=temp->Enum;
255. p2->sum=temp->sum;
256.}
257.
258.//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
259.int Studentmassage:
:
ListCount()//统计当前链表的记录总数,返回一个整数
260.{
261. if(!
Head)
262. return 0;
263. int n=0;
264. for(Student * p=Head->Next;p!
=End;p=p->Next)
265. {
266. n++;
267. }
268. return n;
269.}
270.
271.//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
272.void Studentmassage:
:
Sort()//对当前链表进行排序
273.{
274. cout <<"Sorting..."<275. Student *p=NULL,*p1=NULL,*k=NULL;
276. int n=Studentmassage:
:
ListCount();
277. if(n<2)
278. return;
279. for(p=Head->Next;p!
=End;p=p->Next)
280. for(k=p->Next;k!
=End;k=k->Next)
281. {
282. if(p->sum>k->sum)
283. {
284. Studentmassage:
:
Swap(p,k);
285. }
286. }
287. cout <<"排序完成!
"<288. getch();
289. return;
290.}
291.
292.//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
293.void Studentmassage:
:
Save()
294.{
295. out.open("sort.txt");
296. for(Student *p=Head->Next;p!
=End;p=p->Next)
297. out<name<<"\t"<Id<<"\t"<Cnum<<"\t"
298. <Mnum<<"\t"<Enum<<"\t"<sum<<'\n';
299. out.close();
300.}
301.
302.//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
303.int main()
304.{
305. int x,i=0;
306. bool quit=false;
307. cout<<"\t\t◎★★★★【 欢迎进入学生成绩管理系统 】★★★★◎"<308. Studentmassage Grade;
309. cout<<"按任意键开始……";
310. getch();
311. while(!
quit)
312. {
313. system("cls");
314. Grade.ShowMenu();
315. cin>>x;
316. switch(x)
317. {
318. case 0:
quit=true;break;
319. case 1:
Grade.AddItem();break;
320. case 2:
Grade.Display();break;
321. case 3:
Grade.Sort();break;
322. case 4:
Grade.Find();break;
323. case 5:
Grade.RemoveItem();break;
324. case 6:
Grade.ModifyItem();break;
325. }
326. }
327. return 0;
328.}
#include
#include
#include
#include//用getch();
usingnamespacestd;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
classStudent
{
public:
charname[20];
charId[20];
intCnum;//C++课程得分
intMnum;//汇编课程得分
intEnum;//嵌入式操作系统课程得分
intsum;//总分
Student*Next;
voidInput()
{
cout<<"\t\t请输入学生的姓名:
";cin>>name;
cout<<"\t\t请输入学生的学号:
";cin>>Id;
cout<<"\t\t请输入C++课程的成绩:
";cin>>Cnum;
cout<<"\t\t请输入汇编课程的成绩:
";cin>>Mnum;
cout<<"\t\t请输入嵌入式操作系统课程的成绩:
";cin>>Enum;
sum=Cnum+Mnum+Enum;
}
voidReadFile(istream&in)
{
in>>name>>Id>>Cnum>>Mnum>>Enum>>sum;
}
voidShow()
{
cout<<"姓名:
"<"<"<<<"汇编:
"<"<"<}
};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
classStudentmassage
{
public:
Studentmassage();
~Studentmassage();
voidShowMenu();
voidFind();
voidSave();
voidModifyItem();
voidRemoveItem();
voidSwap(Student*,Student*);
voidSort();
//voidUnpass();
intListCount();
//voidAverage();
voidDisplay()
{
for(Student*p=Head->Next;p!
=End;p=p->Next)
p->Show();
cout<<"输入任意字符!
继续……";