C語言學(xué)生成績管理系統(tǒng)設(shè)計(jì)
本文實(shí)例為大家分享了C語言學(xué)生成績管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
Ps:后加了個(gè)鏈表排序,用冒泡寫的。
/* Title : Student's score management system Author: nyist_xiaod Date : 2012.5.8 */ #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h> #define Print_Head_Num puts("班級 姓名 語文 數(shù)學(xué) 英語 總成績") #define Print_Head_Cla puts("學(xué)號 姓名 語文 數(shù)學(xué) 英語 總成績") #define Print_Head_All puts("班級 學(xué)號 姓名 語文 數(shù)學(xué) 英語 總成績") typedef struct Node Node; struct Score { int chinese,math,english,sum; }; struct Node { char name[20],classs[20],number[20]; struct Score score; struct Node* next; }*head,*u,*p,*q; int n,C,M,E,Cj,Cy,Mj,My,Ej,Ey; char num[20]; void Welcome() { printf("\t\t %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c\n",4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4); printf("\t\t %c 歡迎您使用學(xué)生成績管理系統(tǒng) %c\n",4,4); printf("\t\t %c %c\n",4,4); printf("\t\t %c 1.讀取文件 %c\n",4,4); printf("\t\t %c %c\n",4,4); printf("\t\t %c 2.保存文件 %c\n",4,4); printf("\t\t %c %c\n",4,4); printf("\t\t %c 3.添加學(xué)生成績 %c\n",4,4); printf("\t\t %c %c\n",4,4); printf("\t\t %c 4.修改學(xué)生成績 %c\n",4,4); printf("\t\t %c %c\n",4,4); printf("\t\t %c 5.刪除學(xué)生成績 %c\n",4,4); printf("\t\t %c %c\n",4,4); printf("\t\t %c 6.查詢本人成績 %c\n",4,4); printf("\t\t %c %c\n",4,4); printf("\t\t %c 7.查詢本班成績 %c\n",4,4); printf("\t\t %c %c\n",4,4); printf("\t\t %c 8.查詢?nèi)3煽?%c\n",4,4); printf("\t\t %c %c\n",4,4); printf("\t\t %c 9.退出管理系統(tǒng) %c\n",4,4); printf("\t\t %c %c\n",4,4); printf("\t\t %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c\n\n",4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4); printf("\t\t 請輸入指令:(1-9) "); } Node* new_node(Node* uu) { uu = (Node*)malloc(sizeof(Node)); uu->next = NULL; return uu; } void Add() { u = new_node(u); printf("\n請輸入您要加入的學(xué)生的信息:\n"); printf("\n姓名: "); scanf("%s",u->name); printf("\n班級: "); scanf("%s",u->classs); printf("\n學(xué)號: "); scanf("%s",u->number); printf("\n語文、數(shù)學(xué)、英語成績: "); scanf("%d%d%d",&u->score.chinese,&u->score.math,&u->score.english); u->score.sum = u->score.chinese + u->score.math + u->score.english; u->next = head->next; head->next = u; printf("\n--->添加成功!\n"); } void Mod() { n = 0; printf("\n請輸入您要修改的學(xué)號: "); scanf("%s",num); for(u = head; u != NULL;u = u->next) { if(strcmp(u->number,num) == 0) { n = 1; printf("\n請輸入新的語文、數(shù)學(xué)、英語成績: "); scanf("%d%d%d",&u->score.chinese,&u->score.math,&u->score.english); u->score.sum = u->score.chinese + u->score.math + u->score.english; printf("\n--->修改成功!\n"); break; } } if(!n) printf("\n--->沒有這個(gè)學(xué)生的信息!\n"); } void Del() { n = 0; printf("\n請輸入您要?jiǎng)h除的學(xué)生的學(xué)號: "); scanf("%s",num); for(u = head; u != NULL;u = u->next) { if(strcmp(u->number,num) == 0) { n = 1; p->next = u->next; free(u); printf("\n--->刪除成功!\n"); break; } p = u; } if(!n) printf("\n--->沒有這個(gè)學(xué)生的信息!\n"); } void Sort() { int i,j; n = 0; for(u = head->next; u != NULL;u = u->next) n++; for(i=1;i<=n;i++) { u = head; for(j=0;j<n-i;j++) { p = u->next; q = p->next; if(strcmp(p->classs,q->classs) > 0 || strcmp(p->classs,q->classs) == 0 && p->score.sum < q->score.sum) { u->next = q; p->next = q->next; q->next = p; } u = u->next; } } } void Que_One() { n = 0; printf("\n請輸入您要查詢的學(xué)生的學(xué)號: "); scanf("%s",num); for(u = head->next; u != NULL;u = u->next) { if(strcmp(u->number,num) == 0) { n = 1; printf("\n"); Print_Head_Num; printf("%-11s%-15s",u->classs,u->name); printf("%-6d%-6d%-6d%-6d\n",u->score.chinese,u->score.math,u->score.english,u->score.sum); break; } } if(!n) printf("\n--->沒有這個(gè)學(xué)生的信息!\n"); } void Analyze_Sco(Node *uu) { C += uu->score.chinese; M += uu->score.math; E += uu->score.english; if(uu->score.chinese >= 60) Cj++; if(uu->score.chinese >= 90) Cy++; if(uu->score.math >= 60) Mj++; if(uu->score.math >= 90) My++; if(uu->score.english >= 60) Ej++; if(uu->score.english >= 90) Ey++; } void Print_Sco() { printf("語文平均成績: %-6.2f, 及格率: %%%-6.2f , 優(yōu)秀率: %%%-6.2f.\n\n",(float)C/n,(float)100*Cj/n,(float)100*Cy/n); printf("數(shù)學(xué)平均成績: %-6.2f, 及格率: %%%-6.2f , 優(yōu)秀率: %%%-6.2f.\n\n",(float)M/n,(float)100*Mj/n,(float)100*My/n); printf("英語平均成績: %-6.2f, 及格率: %%%-6.2f , 優(yōu)秀率: %%%-6.2f.\n\n",(float)E/n,(float)100*Ej/n,(float)100*Ey/n); } void Que_Cla() { Sort(); n = C = M = E = Cj = Cy = Mj = My = Ej = Ey = 0; printf("\n請輸入您要查詢的班級: "); scanf("%s",num); printf("\n"); for(u = head->next; u != NULL;u = u->next) { if(strcmp(u->classs,num)) continue; if(!n) Print_Head_Cla; n++; printf("%-11s%-15s",u->number,u->name); printf("%-6d%-6d%-6d%-d\n",u->score.chinese,u->score.math,u->score.english,u->score.sum); Analyze_Sco(u); } if(!n) { printf("沒有這個(gè)班級的學(xué)生信息!\n"); return ; } printf("\n該班共有學(xué)生 %d 人.\n\n",n); Print_Sco(); } void Que_All() { Sort(); n = C = M = E = Cj = Cy = Mj = My = Ej = Ey = 0; printf("\n"); if(head->next == NULL) { printf("--->沒有學(xué)生信息!\n"); return ; } Print_Head_All; for(u = head->next; u != NULL;u = u->next) { n++; printf("%-12s%-12s%-15s",u->classs,u->number,u->name); printf("%-6d%-6d%-6d%-d\n",u->score.chinese,u->score.math,u->score.english,u->score.sum); Analyze_Sco(u); } printf("\n全校共有學(xué)生 %d 人.\n\n",n); Print_Sco(); } void Save() { char c; printf("\n確認(rèn)保存?(Y/N): "); scanf("%*c%c",&c); if(c == 'N') return ; FILE *fp; if((fp=fopen("C:\\data.txt","w"))==NULL) { printf("\n--->無法打開文件\n"); return ; } fputs("班級 學(xué)號 姓名 語文 數(shù)學(xué) 英語 總成績",fp); if(head->next != NULL) fputs("\n",fp); for(u = head->next; u != NULL;u = u->next) { fprintf(fp,"%-11s%-11s%-15s",u->classs,u->number,u->name); fprintf(fp,"%-6d%-6d%-6d%-d",u->score.chinese,u->score.math,u->score.english,u->score.sum); if(u->next != NULL) fprintf(fp,"\n"); } fclose(fp); printf("\n--->成績成功存入C:\\\\data.txt中\(zhòng)n"); } void Open() { printf("\n請把數(shù)據(jù)放到目錄C:\\\\data.txt中,按任意鍵確認(rèn).\n"); getch(); FILE *fp; if((fp=fopen("C:\\data.txt","r"))==NULL) { printf("\n--->沒有找到文件!\n"); return ; } char tmp[100]; fgets(tmp,66,fp); while(!feof(fp)) { u = new_node(u); fscanf(fp,"%s%s%s",u->classs,u->number,u->name); fscanf(fp,"%d%d%d%d",&u->score.chinese,&u->score.math,&u->score.english,&u->score.sum); u->next = head->next; head->next = u; } printf("\n--->成績讀入成功!\n"); fclose(fp); } void Exi() { char c; printf("\n確定退出?(Y/N): "); scanf("%*c%c",&c); if(c == 'N') return ; system("cls"); printf("\n\n"); printf("\t\t\t %c %c %c %c %c %c %c %c %c\n",4,4,4,4,4,4,4,4,4); printf("\t\t\t %c Made by Xiaod %c\n",4,4); printf("\t\t\t %c %c %c %c %c %c %c %c %c\n",4,4,4,4,4,4,4,4,4); printf("\t\t\t Thank you!\n\n\n"); exit(0); } int main() { int orz; system("color 0B"); head = new_node(head); while(1) { Welcome(); scanf("%d",&orz); system("cls"); switch(orz) { case 1:Open();break; case 2:Save();break; case 3:Add();break; case 4:Mod();break; case 5:Del();break; case 6:Que_One();break; case 7:Que_Cla();break; case 8:Que_All();break; case 9:Exi();break; default :printf("\n--->無效的指令!\n"); } printf("\n"); system("pause"); system("cls"); } return 0; }
更多學(xué)習(xí)資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語言編寫學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)C語言代碼實(shí)現(xiàn)
- C語言利用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)
- C語言學(xué)生成績管理系統(tǒng)源代碼
- C語言實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)實(shí)戰(zhàn)教學(xué)
- C語言實(shí)現(xiàn)簡單學(xué)生成績管理系統(tǒng)
- C語言結(jié)構(gòu)體版學(xué)生成績管理系統(tǒng)
- C語言實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)
- C語言學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)
- C語言學(xué)生成績管理系統(tǒng)源碼
相關(guān)文章
c++中?isupper()和islower()函數(shù)詳解
在C++中,islower()和isupper()是C++標(biāo)準(zhǔn)庫中提供的兩個(gè)字符判斷函數(shù),這兩個(gè)函數(shù)用于判斷一個(gè)字符是否為小寫字母或大寫字母,這篇文章主要介紹了c++?isupper()?islower()的相關(guān)資料,需要的朋友可以參考下2024-05-05關(guān)于C++ string和c類型字符數(shù)組的對比
下面小編就為大家?guī)硪黄P(guān)于C++ string和c類型字符數(shù)組的對比。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07C語言實(shí)現(xiàn)線性動態(tài)(單向)鏈表的示例代碼
本文主要介紹了C語言實(shí)現(xiàn)線性動態(tài)(單向)鏈表的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05C/C++使用API實(shí)現(xiàn)數(shù)據(jù)的壓縮與解壓縮
在Windows編程中,經(jīng)常會遇到需要對數(shù)據(jù)進(jìn)行壓縮和解壓縮的情況,本文將深入探討使用Windows API進(jìn)行數(shù)據(jù)壓縮與解壓縮的過程,感興趣的小伙伴可以了解下2023-11-11C++實(shí)現(xiàn)Dijkstra(迪杰斯特拉)算法
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)Dijkstra(迪杰斯特拉)算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05Linux下控制(統(tǒng)計(jì))文件的生成的C代碼實(shí)現(xiàn)
這篇文章主要介紹了Linux下控制(統(tǒng)計(jì))文件的生成的C代碼實(shí)現(xiàn),感興趣的小伙伴們可以參考一下2016-01-01