1 #include <cstdlib> 2 #include <iostream> 3 #include <string.h> 4 #include <stdio.h> 5 #include <conio.h> 6 using namespace std; 7 struct student 8 { 9 char num[20];//学号 10 char name[20];//姓名 11 int foxscore;//fox成绩 12 int cscore;//C语言成绩 13 int englishscore;//英语成绩 14 int sum; 15 struct student *next; 16 }; 17 struct st{ 18 student *head; 19 int length; 20 }; 21 22 void output_worker(struct student *p)//输出一个学生信息 23 {int n; 24 printf("%-13s|",p->num); 25 printf("%-13s|",p->name); 26 printf("%-13d|",p->foxscore); 27 printf("%-13d|",p->cscore); 28 printf("%-11d|",p->englishscore); 29 printf("%d",p->sum); 30 cout<<endl; 31 for(n=1;n<=80;n++) 32 cout<<"-"; 33 } 34 35 int Output_surface_two()//界面; 36 { system("cls"); 37 printf("\n%15s","*"); 38 cout<<"*************************************************"; 39 printf("\n%15s","*");cout<<"***************学生成绩管理系统******************\n"; 40 printf("\n%15s","(");cout<<"1) ";cout<<"信息输入(INPUT)\n"; 41 printf("\n%15s","(");cout<<"2) ";cout<<"总分统计(COUNT)\n"; 42 printf("\n%15s","(");cout<<"3) ";cout<<"总分排序(SORT)\n"; 43 printf("\n%15s","(");cout<<"4) ";cout<<"查询(QUERY)\n"; 44 printf("\n%15s","(");cout<<"5) ";cout<<"退出(EXIT)\n"; 45 printf("\n%15s","*"); 46 cout<<"请选择您要进行的操作并确认"; 47 int n; 48 cin>>n; 49 while(n<1||n>5) 50 {printf("\n%15s","*");cout<<"输入错误,请重新输入";cin>>n;} 51 system("cls");//清屏函数; 52 return n; 53 } 54 55 int insert_info(struct st &STU)//插入新员工信息; 56 {printf("\n%15s","*");cout<<"请依次输入学生信息\n"; 57 struct student *p,*p1; 58 p=(struct student *)malloc(sizeof(struct student)); 59 printf("\n%15s","*");cout<<"学号:"; 60 cin>>p->num; 61 p1=STU.head; 62 while(p1) 63 {if(strcmp(p1->num,p->num)==0) 64 {printf("\n%15s","*");cout<<"该学生已经存在";goto L;} 65 p1=p1->next; 66 } 67 printf("\n%15s","*");cout<<"姓名:"; 68 cin>>p->name; 69 printf("\n%15s","*");cout<<"fox成绩:"; 70 cin>>p->foxscore; 71 printf("\n%15s","*");cout<<"C语言成绩:"; 72 cin>>p->cscore; 73 printf("\n%15s","*");cout<<"英语成绩:"; 74 cin>>p->englishscore; 75 p->sum=0; 76 p->next=NULL; 77 p->next=STU.head; 78 STU.head=p; 79 system("cls"); 80 printf("\n%15s","*"); 81 cout<<"添加成功\n"; 82 83 printf("\n%15s","*"); 84 cout<<"您所添加的学生信息为:\n\n"; 85 STU.length++; 86 87 cout<<"学号 |姓名 |fox成绩 |C语言成绩 |英语成绩 |总分\n"; 88 int i; 89 for(i=1;i<=80;i++) 90 cout<<"-"; 91 output_worker(p); 92 L:; 93 printf("\n\n%15s","*");cout<<"按1键并确认返回,按2键将退出"; 94 int n; 95 cin>>n; 96 while(n<1||n>2) 97 {printf("\n%15s","*");cout<<"输入错误,请重新输入";cin>>n;} 98 int k; 99 if(n==1) 100 {k=Output_surface_two(); 101 return k; 102 } 103 else 104 return 5; 105 } 106 107 int score_sum(struct st &STU)//sum 108 { 109 struct student *p; 110 p=STU.head; 111 while(p) 112 { 113 p->sum=p->foxscore+p->cscore+p->englishscore; 114 p=p->next; 115 } 116 printf("\n\n%15s","*");cout<<"总分统计完毕"; 117 printf("\n\n%15s","*");cout<<"按1键并确认返回,按2键将退出"; 118 int n; 119 cin>>n; 120 while(n<1||n>2) 121 {printf("\n%15s","*");cout<<"输入错误,请重新输入";cin>>n;} 122 int k; 123 if(n==1) 124 {k=Output_surface_two(); 125 return k; 126 } 127 else 128 return 5; 129 } 130 131 132 133 134 135 int output_info(struct st STU)//输出所有员工信息; 136 {printf("\n%15s","*");cout<<"请选择每页要显示的信息数,最多15条"; 137 int n; 138 cin>>n; 139 while(n<1||n>15) 140 {printf("\n%15s","*");cout<<"输入错误,请重新输入";cin>>n;} 141 system("cls"); 142 if( STU.length==0) 143 {printf("\n%15s","*");cout<<"系统中没有信息"; 144 printf("\n\n%15s","*");cout<<"按1键并确认返回,按2键将退出"; 145 int nn; 146 cin>>nn; 147 while(nn<1||nn>2) 148 {printf("\n%15s","*");cout<<"输入错误,请重新输入";cin>>nn;} 149 int k; 150 if(nn==1) 151 {k=Output_surface_two(); 152 return k; 153 } 154 else 155 return 5; 156 } 157 158 struct student *p1;//信息的输出 159 p1=STU.head; 160 int count; 161 int i; 162 while(p1) 163 {system("cls"); 164 cout<<"学号 |姓名 |fox成绩 |C语言成绩 |英语成绩 |总分\n"; 165 for(i=1;i<=80;i++) 166 cout<<"-"; 167 count=n; 168 while((count--)&&(p1)) 169 {output_worker(p1);p1=p1->next;} 170 printf("\n%15s","*");cout<<"按确认键翻页"; getch(); 171 } 172 printf("\n\n%15s","*");cout<<"按1键并确认返回,按2键将退出"; 173 int nn; 174 cin>>nn; 175 while(nn<1||nn>2) 176 {printf("\n%15s","*");cout<<"输入错误,请重新输入";cin>>nn;} 177 int k; 178 if(nn==1) 179 {k=Output_surface_two(); 180 return k; 181 } 182 else 183 return 5; 184 } 185 186 187 188 189 190 191 192 int sort_info(struct st &STU)//对员工进行排序; 193 {system("cls"); 194 195 struct student *p1,*p2,*p3; 196 int i,j; 197 struct student p; 198 p1=p2=p3=STU.head; 199 for(i=1;i<STU.length;i++,p1=p1->next) 200 {p3=p1; 201 for(j=i+1,p2=p1->next;j<=STU.length;j++,p2=p2->next) 202 {if(p3->sum<p2->sum) 203 p3=p2; 204 } 205 if(p3!=p1) 206 {strcpy(p.num,p3->num);strcpy(p3->num,p1->num);strcpy(p1->num,p.num); 207 strcpy(p.name,p3->name);strcpy(p3->name,p1->name);strcpy(p1->name,p.name); 208 p.foxscore=p3->foxscore;p3->foxscore=p1->foxscore;p1->foxscore=p.foxscore; 209 p.cscore=p3->cscore;p3->cscore=p1->cscore;p1->cscore=p.cscore; 210 p.englishscore=p3->englishscore;p3->englishscore=p1->englishscore;p1->englishscore=p.englishscore; 211 p.sum=p3->sum;p3->sum=p1->sum;p1->sum=p.sum; 212 213 } 214 215 216 217 } 218 system("cls"); 219 printf("\n%15s","");cout<<"排序后输出\n"; 220 return 6; 221 } 222 223 int find_info(struct st STU)// 查询员工信息; 224 {system("cls"); 225 struct student *p1=(struct student *)malloc(sizeof(struct student)); 226 struct student *p2=STU.head; 227 printf("\n%15s","*"); cout<<"请输入学号"; 228 229 cin>>p1->num; 230 while(p2) 231 {if(strcmp(p1->num,p2->num)==0) 232 break; 233 p2=p2->next; 234 } 235 236 237 if(!p2) 238 {printf("\n%15s","*");cout<<"系统中没有员工信息"; 239 printf("\n\n%15s","*");cout<<"按1键并确认返回,按2键将退出"; 240 int n; 241 cin>>n; 242 while(n<1||n>2) 243 {printf("\n%15s","*");cout<<"输入错误,请重新输入";cin>>n;} 244 int k; 245 if(n==1) 246 {k=Output_surface_two(); 247 return k; 248 } 249 else 250 return 5; 251 } 252 else 253 {system("cls"); 254 printf("\n%15s","*");cout<<" 您所查询的员工信息 *\n\n"; 255 cout<<"学号 |姓名 |fox成绩 |C语言成绩 |英语成绩 |总分\n"; 256 int i; 257 for(i=1;i<=80;i++) 258 cout<<"-"; 259 output_worker(p2); 260 printf("\n\n%15s","*");cout<<"按1键并确认返回,按2键将退出"; 261 int n; 262 cin>>n; 263 while(n<1||n>2) 264 {printf("\n%15s","*");cout<<"输入错误,请重新输入";cin>>n;} 265 int k; 266 if(n==1) 267 {k=Output_surface_two(); 268 return k; 269 } 270 else 271 return 5; 272 } 273 } 274 275 276 277 278 279 280 int main(int argc, char *argv[]) 281 {struct st STU; 282 int n=Output_surface_two(); 283 STU.head=NULL; 284 STU.length=0; 285 while(1) 286 { 287 switch(n) 288 {case 1:n=insert_info(STU);break; 289 case 2:n=score_sum(STU);break; 290 case 3:n=sort_info(STU);break; 291 case 4:n=find_info(STU);break; 292 case 5:exit(1);break; 293 case 6:n=output_info(STU);break; 294 } 295 } 296 297 298 299 return EXIT_SUCCESS; 300 }
转载于:https://www.cnblogs.com/zjushuiping/archive/2012/05/30/2527003.html