学生成绩管理系统(C++代码)(10页).doc
-学生成绩管理系统(C+代码)-第 10 页 学生成绩管理系统 C+用C+编写一个学生成绩管理系统1、可以实现以下功能:cout<<" 1.增加学生成绩 "<<endl;cout<<" 2.显示学生成绩 "<<endl;cout<<" 3.排序统计成绩 "<<endl;cout<<" 4.查找学生成绩 "<<endl;cout<<" 5.删除学生成绩 "<<endl;cout<<" 6.修改学生信息 "<<endl;cout<<" 0.安全退出系统 "<<endl;2、用链表存储信息* 程序头部的注释结束*/cpp view plaincopyprint?1. <SPAN style="FONT-SIZE: 16px"># include <iostream> 2. # include <fstream> 3. # include <string.h> 4. #include <conio.h>/用getch(); 5. using namespace std; 6. /Student类 7. class Student 8. public: 9. char name20; 10. char Id20; 11. int Cnum; /C+课程得分 12. int Mnum; /汇编课程得分 13. int Enum; /嵌入式操作系统课程得分 14. int sum; /总分 15. Student * Next; 16. void Input() 17. cout<<"tt请输入学生的姓名:" cin>>name; 18. cout<<"tt请输入学生的学号:" cin>>Id; 19. cout<<"tt请输入C+课程的成绩:" cin>>Cnum; 20. cout<<"tt请输入汇编课程的成绩:" cin>>Mnum; 21. cout<<"tt请输入嵌入式操作系统课程的成绩:" cin>>Enum; 22. sum=Cnum+Mnum+Enum; 23. void ReadFile(istream & in) 24. in>>name>>Id>>Cnum>>Mnum>>Enum>>sum; 25. void Show() 26. cout<<"姓名:"<<name<<endl<<"学号:"<<Id<<endl<<"C+:"<<Cnum<<endl 27. <<"汇编:"<<Mnum<<endl<<"嵌入式操作系统:"<<Enum<<endl<<"总成绩:"<<sum<<endl<<endl<<endl; 28. /Studentmassage类 29. class Studentmassage 30. public: 31. Studentmassage(); 32. Studentmassage(); 33. void ShowMenu(); 34. void Find(); 35. void Save(); 36. void ModifyItem(); 37. void RemoveItem(); 38. void Swap(Student *,Student *); 39. void Sort(); 40. /void Unpass(); 41. int ListCount(); 42. /void Average(); 43. void Display() 44. for(Student * p=Head->Next;p!=End;p=p->Next) 45. p->Show(); 46. cout<<"输入任意字符!继续" 47. getch(); 48. void AddItem() 49. End->Input(); 50. End->Next=new Student; 51. End=End->Next; 52. cout<<"添加成功!"<<endl; 53. cout<<"输入任意字符!继续" 54. getch(); 55. private: 56. Student * Head,* End; 57. ifstream in; 58. ofstream out; 59. Student *FindItem(char * name) 60. for(Student * p=Head;p->Next!=End;p=p->Next)/匹配成功则返回上一个指针,不成功就返回空 61. if(!strcmp(p->Next->name,name)return p; 62. return NULL; 63. Student *FindID(char * Id) 64. for(Student * p=Head;p->Next!=End;p=p->Next)/匹配成功则返回上一个指针,不成功就返回空 65. if(!strcmp(p->Next->Id,Id)return p; 66. return NULL; 67. /构造函数 68. Studentmassage:Studentmassage() 69. Head=new Student; 70. Head->Next=new Student; 71. End=Head->Next; 72. in.open("sort.txt"); 73. if(!in) 74. cout<<"这是一个新系统,无学生信息。请先输入。"<<endl; 75. else 76. while(!in.eof() 77. End->ReadFile(in); 78. if(End->name0='0')break; 79. End->Next=new Student; 80. End=End->Next; 81. in.close(); 82. cout<<"tt读取学生信息成功!"<<endl; 83. /析构函数 84. Studentmassage:Studentmassage() 85. Save(); 86. for(Student * temp;Head->Next!=End;) 87. temp=Head->Next; 88. Head->Next=Head->Next->Next; 89. delete temp; 90. delete Head,End; 91. /菜单 92. void Studentmassage:ShowMenu() 93. cout<<"*"<<endl; 94. cout<<" 学 生 成 绩 管 理 系 统 "<<endl; 95. cout<<" "<<endl; 96. cout<<" 1.增加学生成绩 "<<endl; 97. cout<<" 2.显示学生成绩 "<<endl; 98. cout<<" 3.排序统计成绩 "<<endl; 99. cout<<" 4.查找学生成绩 "<<endl; 100. cout<<" 5.删除学生成绩 "<<endl; 101. cout<<" 6.修改学生信息 "<<endl; 102. cout<<" 0.安全退出系统 "<<endl; 103. cout<<"nttntt请选择:" 104. /查找函数 105. void Studentmassage:Find() 106. char name20 ,Id10; 107. int x; 108. Student * p=NULL; 109. cout<<"ntt*n" 110. cout<<"tt 1.按学生的姓名查找ntt 2.按学生学号查找" 111. cout<<"ntt*n请选择:" 112. cin>>x; 113. switch(x) 114. case 1:cout<<"tt请输入要查找的学生的姓名:"cin>>name; 115. if(p=FindItem(name) 116. p->Next->Show(); 117. cout<<"输入任意字符!继续" 118. getch(); 119. else 120. cout<<"tt没有找到该姓名的学生!"<<'n'<<endl; 121. cout<<"输入任意字符!继续" 122. getch(); 123. break; 124. case 2: 125. cout<<"tt请输入要查找的学生的学号:"cin>>Id; 126. if(p=FindID(Id) 127. p->Next->Show(); 128. cout<<"输入任意字符!继续" 129. getch(); 130. else 131. cout<<"tt没有找到该学好的学生!"<<'n'<<endl; 132. cout<<"输入任意字符!继续" 133. getch(); 134. break; 135. /修改信息 136. void Studentmassage:ModifyItem() /修改信息 137. char name20; 138. Student * p=NULL; 139. cout<<"tt请输入要修改的人的姓名:"cin>>name; 140. if(p=FindItem(name) 141. cout<<"tt已找到学生的信息,请输入新的信息!"<<endl; 142. p->Next->Input(); 143. cout<<"修改成功!"<<endl; 144. cout<<"输入任意字符!继续" 145. getch(); 146. else 147. cout<<"tt没有找到!"<<endl; 148. cout<<"输入任意字符!继续" 149. getch(); 150. /删除信息 151. void Studentmassage:RemoveItem() / 删除信息 152. char name20; 153. Student * p=NULL,*temp=NULL; 154. cout<<"tt请输入要删除的学生的姓名:"<<endl;cin>>name; 155. if(p=FindItem(name) 156. temp=p->Next; 157. p->Next=p->Next->Next; 158. delete temp; 159. cout<<"tt删除成功!"<<endl; 160. cout<<"输入任意字符!继续" 161. getch(); 162. else 163. cout<<"tt没有找到!"<<endl; 164. cout<<"输入任意字符!继续" 165. getch(); 166. void Studentmassage:Swap(Student *p1, Student *p2)/交换两个combox变量的数据域 167. Student *temp=new Student; 168. strcpy(temp->name,p1->name); 169. strcpy(temp->Id,p1->Id); 170. temp->Cnum=p1->Cnum; 171. temp->Mnum=p1->Mnum; 172. temp->Enum=p1->Enum; 173. temp->sum=p1->sum; 174. strcpy(p1->name,p2->name); 175. strcpy(p1->Id,p2->Id); 176. p1->Cnum=p2->Cnum; 177. p1->Mnum=p2->Mnum; 178. p1->Enum=p2->Enum; 179. p1->sum=p2->sum; 180. strcpy(p2->name,temp->name); 181. strcpy(p2->Id,temp->Id); 182. p2->Cnum=temp->Cnum; 183. p2->Mnum=temp->Mnum; 184. p2->Enum=temp->Enum; 185. p2->sum=temp->sum; 186. int Studentmassage:ListCount()/统计当前链表的记录总数,返回一个整数 187. if(! Head) 188. return 0; 189. int n=0; 190. for(Student * p=Head->Next;p!=End;p=p->Next) 191. n+; 192. return n; 193. void Studentmassage:Sort()/对当前链表进行排序 194. cout <<"Sorting."<<endl; 195. Student *p=NULL,*p1=NULL,*k=NULL; 196. int n=Studentmassage:ListCount(); 197. if(n<2) 198. return; 199. for(p=Head->Next;p!=End;p=p->Next) 200. for(k=p->Next;k!=End;k=k->Next) 201. if(p->sum>k->sum) 202. Studentmassage:Swap(p,k); 203. cout <<"排序完成!"<<endl; 204. getch(); 205. return; 206. /保存函数 207. void Studentmassage:Save() 208. out.open("sort.txt"); 209. for(Student *p=Head->Next;p!=End;p=p->Next) 210. out<<p->name<<"t"<<p->Id<<"t"<<p->Cnum<<"t" 211. <<p->Mnum<<"t"<<p->Enum<<"t"<<p->sum<<'n' 212. out.close(); 213. /主函数 214. int main() 215. int x,i=0; 216. bool quit=false; 217. cout<<"tt§§§§§§§§§§§§§§§§§§§§§§§§§§"<<endl; 218. for(i=0;i<3;i+) 219. cout<<"tttttttt "<<endl; 220. cout<<"tt【 欢迎进入学生成绩管理系统 】"<<endl; 221. for(i=0;i<3;i+) 222. cout<<"tttttttt "<<endl; 223. cout<<"tt§§§§§§§§§§§§§§§§§§§§§§§§§§n"<<endl; 224. Studentmassage Grade; 225. cout<<"按任意键开始" 226. getch(); 227. while(!quit) 228. system("cls"); 229. Grade.ShowMenu(); 230. cin>>x; 231. switch(x) 232. case 0:quit=true;break; 233. case 1:Grade.AddItem();break; 234. case 2:Grade.Display();break; 235. case 3:Grade.Sort();break; 236. case 4:Grade.Find();break; 237. case 5:Grade.RemoveItem();break; 238. case 6:Grade.ModifyItem();break; 239. return 0; 240. </SPAN>