大学生成绩管理系统(C语言)
生活随笔
收集整理的這篇文章主要介紹了
大学生成绩管理系统(C语言)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
功能:成績管理系統包含了學生的全部信息,每個學生是一個記錄,包括學號,姓名,性別,班級,各科成績(語數外)。
系統功能:
1.信息錄入——錄入學生信息;
2.信息輸出——顯示所有信息;
3.信息查詢——查詢單個學生信息(按學號或按姓名),按性別,班級查詢;
4.信息排序——分別按各科成績,平均成績,學號,姓名,總分排名;
5.信息插入——插入一學生信息(中間插入和最后插入);
6.信息刪除——刪除一學生信息;(先打出學生信息然后確認刪除);
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #define MAXSIZE 1000 5 typedef struct 6 { 7 int no; 8 char name[11]; 9 char sex[9]; 10 char cla[11]; 11 int Chinese,math,Eng,sum,average; 12 }Datatype; 13 14 typedef struct 15 { 16 Datatype data[MAXSIZE]; 17 int len; 18 }SeqList; 19 20 /*錄入學生信息*/ 21 void input(SeqList *L) 22 { 23 int i; 24 printf("請輸入學生的人數:"); 25 scanf("%d",&L->len); 26 printf("請輸入學生的學號、姓名、性別、班級、語數英成績:\n"); 27 printf("(之間用Tab鍵隔開)\n\n"); 28 printf("學號 姓名 性別 班級 語文 數學 英語\n"); 29 for(i=1;i<=L->len;i++) 30 { 31 scanf("%d%s%s%s%d%d%d",&L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,&L->data[i].Chinese,&L->data[i].math,&L->data[i].Eng); 32 L->data[i].sum=L->data[i].Chinese+L->data[i].math+L->data[i].Eng; 33 L->data[i].average=(int)L->data[i].sum/3; 34 } 35 } 36 37 /*瀏覽學生信息*/ 38 void display(SeqList *L) 39 { 40 int i; 41 printf("學號 姓名 性別 班級 語文 數學 英語 總分 平均分\n"); 42 for(i=1;i<=L->len;i++) 43 { 44 printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average); 45 } 46 } 47 48 /*按學號查找學生信息*/ 49 int search_no(SeqList *L,Datatype x) 50 { 51 int i=1; 52 while(i<=L->len&&L->data[i].no!=x.no) 53 { 54 i++; 55 } 56 if(i>L->len) 57 { 58 return 0; 59 } 60 else 61 { 62 return i; 63 } 64 65 } 66 67 /*按姓名查找學生信息*/ 68 int search_name(SeqList *L,Datatype x) 69 { 70 int i=1; 71 while(i<=L->len&&strcmp(L->data[i].name,x.name)!=0) 72 { 73 i++; 74 } 75 if(i>L->len) 76 { 77 return 0; 78 } 79 else 80 { 81 return i; 82 } 83 } 84 85 /*按性別查找學生信息*/ 86 void search_sex(SeqList *L,Datatype x) 87 { 88 int i; 89 for(i=1;i<=L->len;i++) 90 { 91 if(i<=L->len&&strcmp(L->data[i].sex,x.sex)==0) 92 { 93 printf("學號 姓名 性別 班級 語文 數學 英語 總分 平均分\n"); 94 printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average); 95 } 96 } 97 } 98 99 /*按班級查找學生信息*/ 100 void search_cla(SeqList *L,Datatype x) 101 { 102 int i; 103 for(i=1;i<=L->len;i++) 104 { 105 if(i<=L->len&&strcmp(L->data[i].cla,x.cla)==0) 106 { 107 printf("學號 姓名 性別 班級 語文 數學 英語 總分 平均分\n"); 108 printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average); 109 } 110 } 111 } 112 113 /*按語文成績排序*/ 114 void sort_Chinese(SeqList *L) 115 { 116 Datatype hold; 117 int pass,i; 118 for(pass=0;pass<((L->len)-1);pass++) 119 { 120 for(i=1;i<L->len;i++) 121 { 122 if(L->data[i].Chinese<L->data[i+1].Chinese) 123 { 124 hold=L->data[i]; 125 L->data[i]=L->data[i+1]; 126 L->data[i+1]=hold; 127 } 128 } 129 } 130 } 131 132 /*按數學成績排序*/ 133 void sort_math(SeqList *L) 134 { 135 Datatype hold; 136 int pass,i; 137 for(pass=0;pass<((L->len)-1);pass++) 138 { 139 for(i=1;i<L->len;i++) 140 { 141 if(L->data[i].math<L->data[i+1].math) 142 { 143 hold=L->data[i]; 144 L->data[i]=L->data[i+1]; 145 L->data[i+1]=hold; 146 } 147 } 148 } 149 } 150 151 /*按英語成績排序*/ 152 void sort_Eng(SeqList *L) 153 { 154 Datatype hold; 155 int pass,i; 156 for(pass=0;pass<((L->len)-1);pass++) 157 { 158 for(i=1;i<L->len;i++) 159 { 160 if(L->data[i].Eng<L->data[i+1].Eng) 161 { 162 hold=L->data[i]; 163 L->data[i]=L->data[i+1]; 164 L->data[i+1]=hold; 165 } 166 } 167 } 168 } 169 170 /*按平均分成績排序*/ 171 void sort_average(SeqList *L) 172 { 173 Datatype hold; 174 int pass,i; 175 for(pass=0;pass<((L->len)-1);pass++) 176 { 177 for(i=1;i<L->len;i++) 178 { 179 if(L->data[i].average<L->data[i+1].average) 180 { 181 hold=L->data[i]; 182 L->data[i]=L->data[i+1]; 183 L->data[i+1]=hold; 184 } 185 } 186 } 187 } 188 189 /*按學號排序*/ 190 void sort_no(SeqList *L) 191 { 192 Datatype hold; 193 int pass,i; 194 for(pass=0;pass<((L->len)-1);pass++) 195 { 196 for(i=1;i<L->len;i++) 197 { 198 if(L->data[i].no>L->data[i+1].no) 199 { 200 hold=L->data[i]; 201 L->data[i]=L->data[i+1]; 202 L->data[i+1]=hold; 203 } 204 } 205 } 206 } 207 208 /*按姓名排序*/ 209 void sort_name(SeqList *L) 210 { 211 Datatype hold; 212 int pass,i; 213 for(pass=0;pass<((L->len)-1);pass++) 214 { 215 for(i=1;i<L->len;i++) 216 { 217 if(strcmp(L->data[i].name,L->data[i+1].name)>0) 218 { 219 hold=L->data[i]; 220 L->data[i]=L->data[i+1]; 221 L->data[i+1]=hold; 222 } 223 } 224 } 225 } 226 227 /*按總分排序*/ 228 void sort_sum(SeqList *L) 229 { 230 Datatype hold; 231 int pass,i; 232 for(pass=0;pass<((L->len)-1);pass++) 233 { 234 for(i=1;i<L->len;i++) 235 { 236 if(L->data[i].sum<L->data[i+1].sum) 237 { 238 hold=L->data[i]; 239 L->data[i]=L->data[i+1]; 240 L->data[i+1]=hold; 241 } 242 } 243 } 244 } 245 246 /*插入學生信息*/ 247 void insert(SeqList *L,Datatype x) 248 { 249 int i=1,j; 250 while(i<=L->len&&(L->data[i].no<x.no)) 251 { 252 i++; 253 } 254 if(L->len==MAXSIZE-1) 255 { 256 printf("系統存儲空間已滿,無法增加學生信息!!"); 257 } 258 else 259 { 260 for(j=L->len;j>=i;j--) 261 { 262 L->data[j+1]=L->data[j]; 263 } 264 L->data[i]=x; 265 L->len++; 266 } 267 } 268 269 /*刪除學生信息*/ 270 void del(SeqList *L,Datatype x) 271 { 272 int i,j; 273 i=search_no(L,x); 274 if(i==0) 275 { 276 printf("學號有誤!!\n"); 277 } 278 else 279 { 280 for(j=i+1;j<=(L->len);j++) 281 { 282 L->data[j-1]=L->data[j]; 283 } 284 L->len--; 285 } 286 } 287 void menu() 288 { 289 printf("*************************************\n"); 290 printf("* 大學生成績管理系統 *\n"); 291 printf("*1----------------------錄入學生信息*\n"); 292 printf("*2----------------------瀏覽學生信息*\n"); 293 printf("*3----------------------查找學生信息*\n"); 294 printf("*4------------------------------排序*\n"); 295 printf("*5----------------------插入學生信息*\n"); 296 printf("*6----------------------刪除學生信息*\n"); 297 printf("*0----------------------退出管理系統*\n"); 298 printf("*************************************\n"); 299 } 300 301 int main() 302 { 303 Datatype x; 304 SeqList *L; 305 int sel,k,s,i; 306 L=(SeqList *)malloc(sizeof(SeqList)); 307 L->len=0; 308 printf(" 歡迎使用大學生成績管理系統 \n"); 309 do 310 { 311 menu(); 312 printf("\n請輸入你的選擇:"); 313 scanf("%d",&sel); 314 switch(sel) 315 { 316 case 1:printf("\n你選擇了錄入學生信息:\n\n"); 317 input(L); 318 break; 319 case 2:printf("\n你選擇了瀏覽學生信息:\n\n"); 320 display(L); 321 break; 322 case 3:printf("\n你選擇了查找學生信息:\n\n"); 323 printf("**************************************\n"); 324 printf("*按<學號>查找請按1,按<姓名>查找請按2*\n"); 325 printf("*按<性別>查找請按3,按<班級>查找請按4*\n"); 326 printf("**************************************\n"); 327 scanf("%d",&s); 328 if(s==1) 329 { 330 printf("請輸入要查找的學生的學號:"); 331 scanf("%d",&x.no); 332 k=search_no(L,x); 333 if(k==0) 334 { 335 printf("學號有誤!!\n"); 336 } 337 else 338 { 339 printf("學號 姓名 性別 班級 語文 數學 英語 總分 平均分\n"); 340 printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[k].no,L->data[k].name,L->data[k].sex,L->data[k].cla,L->data[k].Chinese,L->data[k].math,L->data[k].Eng,L->data[k].sum,L->data[k].average); 341 } 342 } 343 else if(s==2) 344 { 345 printf("請輸入要查找的學生的姓名:"); 346 scanf("%s",x.name); 347 k=search_name(L,x); 348 if(k==0) 349 { 350 printf("姓名有誤!!\n"); 351 } 352 else 353 { 354 printf("學號 姓名 性別 班級 語文 數學 英語 總分 平均分\n"); 355 printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[k].no,L->data[k].name,L->data[k].sex,L->data[k].cla,L->data[k].Chinese,L->data[k].math,L->data[k].Eng,L->data[k].sum,L->data[k].average); 356 } 357 } 358 else if(s==3) 359 { 360 printf("請輸入性別(男或女):\n"); 361 scanf("%s",x.sex); 362 search_sex(L,x); 363 } 364 else 365 { 366 printf("請輸入班級:\n"); 367 scanf("%s",x.cla); 368 search_cla(L,x); 369 } 370 break; 371 case 4:printf("\n你選擇了排序:\n\n"); 372 printf("*********************************************\n"); 373 printf("*按<語文成績>排序請按1,按<數學成績>排序請按2*\n"); 374 printf("*按<英語成績>排序請按3,按<平均成績>排序請按4*\n"); 375 printf("* 按<學號>排序請按5,按<姓名>排序請按6 *\n"); 376 printf("* 按<總分>排序請按7 *\n"); 377 printf("*********************************************\n"); 378 scanf("%d",&s); 379 if(s==1) 380 { 381 sort_Chinese(L); 382 printf("按語文成績排序:\n"); 383 printf("學號 姓名 性別 班級 語文 數學 英語 總分 平均分\n"); 384 for(i=1;i<=L->len;i++) 385 { 386 printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average); 387 } 388 } 389 if(s==2) 390 { 391 sort_math(L); 392 printf("按數學成績排序:\n"); 393 printf("學號 姓名 性別 班級 語文 數學 英語 總分 平均分\n"); 394 for(i=1;i<=L->len;i++) 395 { 396 printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average); 397 } 398 } 399 if(s==3) 400 { 401 sort_Eng(L); 402 printf("按英語成績排序:\n"); 403 printf("學號 姓名 性別 班級 語文 數學 英語 總分 平均分\n"); 404 for(i=1;i<=L->len;i++) 405 { 406 printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average); 407 } 408 } 409 if(s==4) 410 { 411 sort_average(L); 412 printf("按平均分排序:\n"); 413 printf("學號 姓名 性別 班級 語文 數學 英語 總分 平均分\n"); 414 for(i=1;i<=L->len;i++) 415 { 416 printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average); 417 } 418 } 419 if(s==5) 420 { 421 sort_no(L); 422 printf("按學號排序:\n"); 423 printf("學號 姓名 性別 班級 語文 數學 英語 總分 平均分\n"); 424 for(i=1;i<=L->len;i++) 425 { 426 printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average); 427 } 428 } 429 if(s==6) 430 { 431 sort_name(L); 432 printf("按姓名排序:\n"); 433 printf("學號 姓名 性別 班級 語文 數學 英語 總分 平均分\n"); 434 for(i=1;i<=L->len;i++) 435 { 436 printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average); 437 } 438 } 439 if(s==7) 440 { 441 sort_sum(L); 442 printf("按總分排序:\n"); 443 printf("學號 姓名 性別 班級 語文 數學 英語 總分 平均分\n"); 444 for(i=1;i<=L->len;i++) 445 { 446 printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[i].no,L->data[i].name,L->data[i].sex,L->data[i].cla,L->data[i].Chinese,L->data[i].math,L->data[i].Eng,L->data[i].sum,L->data[i].average); 447 } 448 } 449 break; 450 case 5:printf("\n你選擇了插入學生信息:\n\n"); 451 printf("請輸入要插入的學生的學號、姓名、性別、班級、語數英成績:\n"); 452 printf("學號 姓名 性別 班級 語文 數學 英語\n"); 453 scanf("%d%s%s%s%d%d%d",&x.no,x.name,x.sex,x.cla,&x.Chinese,&x.math,&x.Eng); 454 x.sum=x.Chinese+x.math+x.Eng; 455 x.average=(int)x.sum/3; 456 insert(L,x); 457 break; 458 case 6:printf("\n你選擇了刪除學生信息:\n\n"); 459 printf("請輸入要刪除的學生的學號:"); 460 scanf("%d",&x.no); 461 k=search_no(L,x); 462 if(k==0) 463 { 464 printf("學號有誤!!\n"); 465 } 466 else 467 { 468 printf("學號 姓名 性別 班級 語文 數學 英語 總分 平均分\n"); 469 printf("%3d%7s%7s%9s%8d%8d%8d%8d%8d\n",L->data[k].no,L->data[k].name,L->data[k].sex,L->data[k].cla,L->data[k].Chinese,L->data[k].math,L->data[k].Eng,L->data[k].sum,L->data[k].average); 470 printf("\n是否要刪除此學生的信息?\n"); 471 printf("(是請按1,否請按0)\n"); 472 printf("你的選擇是:"); 473 scanf("%d",&s); 474 if(s==1) 475 { 476 del(L,x); 477 } 478 } 479 break; 480 } 481 }while(sel!=0); 482 printf("謝謝使用此系統!!"); 483 return 0; 484 }?
轉載于:https://www.cnblogs.com/xautlmx/p/3441349.html
總結
以上是生活随笔為你收集整理的大学生成绩管理系统(C语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 记录(4) java 生成 U
- 下一篇: C#中ref与out区别