学生成绩管理系统增量开发
-
概述
-
原项目代码展示
-
原项目运行演示
-
修改代码展示
-
运行结果演示
概述:
该作业目的为基于原项目学生成绩管理系统的增量改进,原项目实现了对学生成绩的增删改查以及排序的功能,从整体而言已经相对完善。本次改进主要从两个方面入手,一是对于主函数main中的选择进行优化,二是增加将添加的学生成绩保存入硬盘中的txt文件。
原项目代码展示:
1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #include <cstdlib> 5 #include <algorithm> 6 7 using namespace std; 8 9 class student{ 10 private: 11 int num; 12 char name[30]; 13 int score; 14 public: 15 void add(){ 16 cout << "学生学号:"; 17 cin >> num; 18 cout << "学生姓名:"; 19 cin >> name; 20 cout << "学生成绩:"; 21 cin >> score; 22 } 23 void find(){ 24 cout << "--------------------" << endl; 25 cout << "学号:" << num << " 姓名:" << name << " 成绩" << score << endl; 26 } 27 void update(){ 28 cout << "原姓名:" << name << " " << "原成绩:" << score << endl; 29 cout << "请输入学生姓名:"; 30 cin >> name; 31 cout << "请输入学生成绩:"; 32 cin >> score; 33 } 34 int get_num(){ 35 return num; 36 } 37 int get_score(){ 38 return score; 39 } 40 char *get_name(){ 41 return name; 42 } 43 }p[1005]; 44 45 int cnt = 0; 46 47 void login(){ 48 cout << "欢迎使用我的学生成绩管理系统,感谢您的信任" << endl; 49 cout << " 1.进入菜单" << endl; 50 cout << " 2.退出程序" << endl; 51 } 52 53 void menu(){ 54 55 cout<<" 请选择你要实现的功能 " << endl; 56 cout << " 1.添加成绩 " << endl; 57 cout << " 2.删除成绩 " << endl; 58 cout << " 3.修改成绩 " << endl; 59 cout << " 4.输出成绩 " << endl; 60 cout << " 5.排序成绩 " << endl; 61 cout << " 6.查询成绩 " << endl; 62 cout << " 0.退出程序 " << endl; 63 cout << " " << endl; 64 65 } 66 67 68 void tj(){ 69 int sum = 0; 70 int maxx = -1; 71 int minn = 1000; 72 int ave; 73 for(int i=0;i<cnt;i++){ 74 sum += p[i].get_score(); 75 if(p[i].get_score()>maxx){ 76 maxx = p[i].get_score(); 77 } 78 if(p[i].get_score()<minn){ 79 minn = p[i].get_score(); 80 } 81 } 82 ave = sum / cnt; 83 cout << "平均成绩=" << ave << endl; 84 cout << "最高分=" << maxx << endl; 85 cout << "最低分=" << minn << endl; 86 } 87 88 void del(){ 89 int x; 90 cout << "请输入要删除的学生学号:"; 91 cin >> x; 92 int ok = 0; 93 for(int i=0;i<cnt;i++){ 94 if(x==p[i].get_num()){ 95 ok = 1; 96 for(int j=i;j<cnt-1;j++){ 97 p[j] = p[j+1]; 98 } 99 cnt--; 100 } 101 } 102 if(ok) cout << "已删除" << endl; 103 else cout << "删除失败,不存在该学号" << endl; 104 } 105 106 void sort(){ 107 for(int i=0;i<cnt;i++){ 108 for(int j=0;j<cnt-i;j++){ 109 if(p[j].get_score()<p[j+1].get_score()); 110 student tmp; 111 tmp = p[i]; 112 p[i] = p[j]; 113 p[j] = tmp; 114 } 115 } 116 } 117 118 int main(){ 119 int x; 120 while(1){ 121 login(); 122 cin >> x; 123 if(x==1){ 124 system("pause"); 125 system("cls"); 126 int y; 127 while(1){ 128 menu(); 129 130 cin >> y; 131 system("pause"); 132 system("cls"); 133 if(y==1){ 134 p[cnt].add(); 135 cnt++; 136 system("pause"); 137 system("cls"); 138 } 139 if(y==2){ 140 del(); 141 system("pause"); 142 system("cls"); 143 } 144 if(y==3){ 145 int q; 146 cout << "请输入要修改的学号:"; 147 cin >> q; 148 for(int i=0;i<cnt;i++){ 149 if(p[i].get_num()==q){ 150 p[i].update(); 151 } 152 } 153 system("pause"); 154 system("cls"); 155 } 156 if(y==4){ 157 for(int i=0;i<cnt;i++){ 158 p[i].find(); 159 } 160 system("pause"); 161 system("cls"); 162 } 163 if(y==5){ 164 sort(); 165 for(int i=0;i<cnt;i++){ 166 p[i].find(); 167 } 168 system("pause"); 169 system("cls"); 170 } 171 if(y==6){ 172 tj(); 173 system("pause"); 174 system("cls"); 175 } 176 if(y==0){ 177 break; 178 } 179 } 180 181 } 182 if(x==2) break; 183 } 184 }
原项目运行演示:
进入:

菜单:

添加:


查询:

修改:

输出:

删除:


排序:

修改代码展示:
添加函数:
1 class student{ 2 private: 3 int num; 4 char name[30]; 5 int score; 6 public: 7 void add(){ 8 cout << "学生学号:"; 9 cin >> num; 10 cout << "学生姓名:"; 11 cin >> name; 12 cout << "学生成绩:"; 13 cin >> score; 14 15 ofstream studentmessage("message.txt", ios::app); 16 studentmessage << this->num << "\t" 17 << this->name << "\t" 18 << this->score << endl; 19 //关闭文件 20 studentmessage.close(); 21 } 22 void find(){ 23 cout << "--------------------" << endl; 24 cout << "学号:" << num << " 姓名:" << name << " 成绩" << score << endl; 25 } 26 void update(){ 27 cout << "原姓名:" << name << " " << "原成绩:" << score << endl; 28 cout << "请输入学生姓名:"; 29 cin >> name; 30 cout << "请输入学生成绩:"; 31 cin >> score; 32 } 33 int get_num(){ 34 return num; 35 } 36 int get_score(){ 37 return score; 38 } 39 char *get_name(){ 40 return name; 41 } 42 }p[1005];
主函数选择优化:
1 int main(){ 2 int x; 3 while(1){ 4 login(); 5 cin >> x; 6 if(x==1){ 7 system("pause"); 8 system("cls"); 9 int y; 10 while(1){ 11 menu(); 12 13 cin >> y; 14 system("pause"); 15 system("cls"); 16 switch (y) 17 { 18 case 1: 19 p[cnt].add(); 20 cnt++; 21 //按任意键清屏 22 system("pause"); 23 system("cls"); 24 break; 25 case 2: 26 del(); 27 //按任意键清屏 28 system("pause"); 29 system("cls"); 30 break; 31 case 3: 32 int q; 33 cout << "请输入要修改的学号:"; 34 cin >> q; 35 for(int i=0;i<cnt;i++){ 36 if(p[i].get_num()==q){ 37 p[i].update(); 38 } 39 } 40 //按任意键清屏 41 system("pause"); 42 system("cls"); 43 break; 44 case 4: 45 for(int i=0;i<cnt;i++){ 46 p[i].find(); 47 } 48 //按任意键清屏 49 system("pause"); 50 system("cls"); 51 break; 52 case 5: 53 sort(); 54 for(int i=0;i<cnt;i++){ 55 p[i].find(); 56 } 57 //按任意键清屏 58 system("pause"); 59 system("cls"); 60 break; 61 case 6: 62 tj(); 63 //按任意键清屏 64 system("pause"); 65 system("cls"); 66 break; 67 case 0: 68 cout << "欢迎下次使用" << endl; 69 system("pause"); 70 exit(0); 71 break; 72 default: 73 system("cls"); 74 break; 75 } 76 } 77 78 } 79 if(x==2) break; 80 } 81 }
运行结果演示:
添加:


结果:

2023-03-0716:51:29
浙公网安备 33010602011771号