学生成绩管理系统增量开发


  • 概述 

  • 原项目代码展示

  • 原项目运行演示

  • 修改代码展示

  • 运行结果演示

 


 概述:

  该作业目的为基于原项目学生成绩管理系统的增量改进,原项目实现了对学生成绩的增删改查以及排序的功能,从整体而言已经相对完善。本次改进主要从两个方面入手,一是对于主函数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