用c語(yǔ)言編寫學(xué)生成績(jī)管理系統(tǒng).doc
《用c語(yǔ)言編寫學(xué)生成績(jī)管理系統(tǒng).doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《用c語(yǔ)言編寫學(xué)生成績(jī)管理系統(tǒng).doc(12頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
_#include /編譯預(yù)處理指令#include /定義處理字符串函數(shù)#include /宏指令的聲明#include /定義通過控制臺(tái)進(jìn)行數(shù)據(jù)輸入以及輸出#define N 2000 /最多的人數(shù)人#define M 3 /統(tǒng)計(jì)成績(jī)typedef struct student /定義類型char number10; /保存所有人的學(xué)號(hào)char name20; /保存學(xué)生姓名 char sex10; /保存性別float scoreM; /保存所有課程成績(jī)float aver; /保存每個(gè)人的平均成績(jī)float total; /總計(jì)成績(jī)STU;STU stuN;int n;void inputscore(void); /學(xué)生成績(jī)新建void savescore(void); /學(xué)生成績(jī)保存void avergescore(void); /學(xué)生平均成績(jī)void total(void); /學(xué)生成績(jī)總計(jì)void modifyscore(void); /學(xué)生成績(jī)修改void lookscore(void); /學(xué)生成績(jī)查看 void searchscore(void); /學(xué)生成績(jī)查詢void statistic(void); /學(xué)生成績(jī)統(tǒng)計(jì)void add(void); /學(xué)生成績(jī)添加void modify(void); /學(xué)生成績(jī)修改void delscore(void); /學(xué)生成績(jī)刪除void menu(void); /學(xué)生成績(jī)菜單void main()short int flag=0;menu();doflag=1;switch(getch()case 1 : inputscore();break; /在菜單界面輸入1,調(diào)用i函數(shù)nputscore()實(shí)現(xiàn)輸入學(xué)生成績(jī)信息功能case 2 : lookscore();break; /在菜單界面輸入2,調(diào)用函數(shù)lookscore()實(shí)現(xiàn)學(xué)生成績(jī)按平均分高低排序輸出,同時(shí)lookscore()函數(shù)調(diào)用avregescore()函數(shù)實(shí)現(xiàn)各個(gè)學(xué)生的平均分計(jì)算case 3 : searchscore();break; /在菜單界面輸入3,調(diào)用searchscore()函數(shù)實(shí)現(xiàn)通過學(xué)號(hào)查找學(xué)生成績(jī)信息功能case 4 : statistic();break; /在菜單界面輸入4,調(diào)用statistic()函數(shù)輸出每一門課程的最高分,平均分以及不及格人員case 5 : modify();break; /在菜單界面輸入5,調(diào)用modify()函數(shù)實(shí)現(xiàn)通過學(xué)號(hào)修改學(xué)生成績(jī)的功能case 6 : add();break; /在菜單界面輸入6,調(diào)用add()函數(shù)實(shí)現(xiàn)添加學(xué)生成績(jī)case 7 : delscore();break; /在菜單界面輸入7,調(diào)用delscore()函數(shù)實(shí)現(xiàn)刪除指定學(xué)生的成績(jī)case 8 : savescore();break; /在菜單界面輸入8,調(diào)用savescore()函數(shù)將學(xué)生成績(jī)信息保存case 9 :exit(0);break; /在菜單界面輸入9,退出成績(jī)管理系統(tǒng)default : printf(輸入有誤n);printf(按任意鍵繼續(xù)n);getch(); /按任意鍵繼續(xù),起到暫停的作用,函數(shù)頭文件conio.h已經(jīng)定義過menu(); / 菜單while (flag=1);void menu(void)system(cls); /清屏printf(n);printf( 歡迎進(jìn)入學(xué)生成績(jī)管理系統(tǒng)n);printf( 菜單 n);printf( 輸入成績(jī)-1n);printf( 查看成績(jī)及成績(jī)排序-2n);printf( 查詢學(xué)生成績(jī)-3n);printf( 成績(jī)統(tǒng)計(jì)-4n);printf( 修改成績(jī)-5n);printf( 添加成績(jī)-6n);printf( 刪除成績(jī)-7n); printf( 保存成績(jī)-8n);printf( 退出系統(tǒng)-9n);printf( n);printf( 請(qǐng)輸入您的選擇(19)n);/*輸入各個(gè)同學(xué)的學(xué)生信息*/void inputscore(void) /輸入成績(jī)int i,j;system(cls); /清屏專用,以下出現(xiàn)位置作用相同printf( 已經(jīng)轉(zhuǎn)到輸入成績(jī)菜單n);printf(請(qǐng)輸入學(xué)生總數(shù):n);scanf(%d,&n); printf(提示:輸入學(xué)號(hào)時(shí)請(qǐng)輸入9位學(xué)生編號(hào):圖書借閱證上的學(xué)號(hào)n);/因二維表上下需對(duì)正故有此要求for(i=0;in;i+) printf(n);printf(請(qǐng)輸入第%d位學(xué)生的學(xué)號(hào):n,i+1); scanf(%s,stui.number); /輸入學(xué)生學(xué)號(hào)printf(姓名:n);scanf(%s,stui.name); /輸入學(xué)生名字printf(請(qǐng)輸入該學(xué)生性別n);scanf(%s,stui.sex); /輸入性別printf(請(qǐng)輸入學(xué)生成績(jī):n);printf(高數(shù)分t英語(yǔ)分tC語(yǔ)言分n);for(j=0;jM;j+)scanf(%f,&stui.scorej); /輸入高數(shù)、英語(yǔ)、C語(yǔ)言的成績(jī)printf( 成功輸入(按任意鍵繼續(xù)后請(qǐng)輸入8進(jìn)行保存)n);/*計(jì)算各個(gè)同學(xué)的總分*/void total(void)int i,j; /定義變量i,j;i用來表示學(xué)生個(gè)數(shù),j則用來表示學(xué)生每門課的分?jǐn)?shù)for(i=0;in;i+)stui.total=0;for(j=0;jM;j+) /M表示科目在頭文件出已經(jīng)定義stui.total+=stui.scorej;/*計(jì)算各個(gè)同學(xué)的平均分*/void avergescore(void)int i,j; /定義變量i,j;i用來表示學(xué)生個(gè)數(shù),j則用來表示學(xué)生每門課的分?jǐn)?shù)for(i=0;in;i+)stui.aver=0;for(j=0;jM;j+) /M表示科目在頭文件出已經(jīng)定義stui.aver+=stui.scorej;stui.aver=stui.aver/M; /計(jì)算平均分/*查看學(xué)生成績(jī)及根據(jù)平均分對(duì)學(xué)生進(jìn)行排序*/void lookscore(void)int i,j,k; / i,j,k都表示學(xué)生成績(jī)比較用來調(diào)換順序STU t;total(); / 此處用來對(duì)調(diào)用函數(shù)的聲明avergescore();system(cls); / 清屏專用printf( 已經(jīng)轉(zhuǎn)到查看成績(jī)及成績(jī)排序菜單n);for(i=0;in-1;i+)for(k=i,j=i+1;jstuk.aver)k=j;if(k!=j)t=stuk;stuk=stui;stui=t;printf(名次t學(xué)號(hào)tt姓名t性別t高數(shù)分t英語(yǔ)分tC語(yǔ)言分t總分t平均分n);for(i=0;in;i+)printf(%dt%st%st%st,i+1,stui.number,stui.name,stui.sex);for(j=0;jM;j+)printf(%4.2ft,stui.scorej);printf(%4.2ft,stui.total);printf(%4.2f,stui.aver);printf(n);/*通過輸入學(xué)號(hào)查找學(xué)生成績(jī)*/void searchscore(void)char a10; /定義數(shù)組a的類型可輸入數(shù)字,字母或字符int i,j;system(cls); /清屏 printf( 已經(jīng)轉(zhuǎn)到查詢學(xué)生成績(jī)菜單n);printf(請(qǐng)輸入需查詢的學(xué)生學(xué)號(hào)n);scanf(%s,a);for(i=0;in;i+)if(strcmp(a,stui.number)=0) /如果輸入的學(xué)號(hào)為真則輸出相關(guān)信息printf(名次t學(xué)號(hào)tt姓名t性別t高數(shù)分t英語(yǔ)分tC語(yǔ)言分t總分t平均分n);printf(%dt%st%st%st,i+1,stui.number,stui.name,stui.sex);for(j=0;jM;j+)printf(%4.2ft,stui.scorej);printf(%4.2ft,stui.total);printf(%4.2f,stui.aver);printf(n);break; /找到該學(xué)生成績(jī)信息后跳出for循環(huán)elseprintf(未找到該學(xué)生信息n);/*統(tǒng)計(jì)學(xué)生成績(jī)信息,計(jì)算出每一門課的最高分*/ void statistic() int i,j=0,k=0,c1; char str2; float averageM,sum=0; printf(沒有可被查找的記錄n); / system(cls); if(M=0) /如果沒有輸入成績(jī)則輸出沒有可查找的記錄 printf(沒有可被查找的記錄n); else while(1) printf(下面將統(tǒng)計(jì)考試成績(jī)n); printf(請(qǐng)選擇你要統(tǒng)計(jì)哪科的成績(jī) 1.高數(shù)t2.英語(yǔ)t3.C語(yǔ)言n); scanf(%d,&c1); printf(t一共有%d個(gè)記錄n,M); /*總共記錄數(shù)*/ switch(c1) case 1: /用來判斷高數(shù)的最高分,平均分,輸出不及格人員名單 for(i=0;istui.score0) k=i; if(stuj.score0stui.score0) j=i; average0=sum/M; printf(t高數(shù)的最高分:n); printf(tt學(xué)號(hào):%s 姓名:%s 分?jǐn)?shù):%.2fn,stuj.number,stuj.name,stuj.score0); printf(t高數(shù)的最低分是:n); printf(tt學(xué)號(hào):%s 姓名:%s 分?jǐn)?shù):%.2fn,stuk.number,stuk.name,stuk.score0); printf(t高數(shù)的平均分是 %5.2fn,average0); printf(平均分低于60分的學(xué)生成員名單n); for(i=0;iM;i+)if(stui.score060) printf(%sn,stui.name); break; case 2: / 用來判斷英語(yǔ)的最高分,平均分,輸出不及格人員名單 for(i=0;istui.score1) k=i; if(stuj.score1stui.score1) j=i; average1=sum/M; printf(t英語(yǔ)的最高分:n); printf(tt學(xué)號(hào):%s 姓名:%s 分?jǐn)?shù):%.2fn,stuj.number,stuj.name,stuj.score1); printf(t英語(yǔ)的最低分是:n); printf(tt學(xué)號(hào):%s 姓名:%s 分?jǐn)?shù):%.2fn,stuk.number,stuk.name,stuk.score1); printf(t英語(yǔ)的平均分是 %5.2fn,average1); printf(平均分低于60分的學(xué)生成員名單n);for(i=0;iM;i+)if(stui.score160) printf(%sn,stui.name); break; case 3: /用來判斷C語(yǔ)言的最高分,平均分,輸出不及格人員名單 for(i=0;istui.score2) k=i; if(stuj.score2stui.score2) j=i; average2=sum/M; printf(tC語(yǔ)言的最高分:n); /*最高分*/ printf(tt學(xué)號(hào):%s 姓名:%s 分?jǐn)?shù):%.2fn,stuj.number,stuj.name,stuj.score2); printf(tC語(yǔ)言的最低分是:n); /*最低分*/ printf(tt學(xué)號(hào):%s 姓名:%s 分?jǐn)?shù):%.2fn,stuk.number,stuk.name,stuk.score2); printf(tC語(yǔ)言的平均分是 %5.2fn,average2); printf(平均分低于60分的學(xué)生成員名單n);for(i=0;iM;i+)if(stui.score260) printf(%sn,stui.name); break; default: /如果輸入的數(shù)字不符合要求則顯示錯(cuò)誤信息printf(輸入錯(cuò)誤!請(qǐng)輸入13之間的數(shù)n); sum=0; getchar(); printf(是否繼續(xù)進(jìn)行統(tǒng)計(jì)?(y/n); gets(str); if(str0=y|str0=Y) statistic(); else break; /*修改學(xué)生成績(jī)*/void modify(void) char a10;int i,j;system(cls); printf( 已經(jīng)轉(zhuǎn)到修改成績(jī)菜單n);printf(請(qǐng)輸入需要修改成績(jī)的學(xué)生學(xué)號(hào)n);scanf(%s,a);for(i=0;in;i+)if(strcmp(a,stui.number)=0)printf(名次t學(xué)號(hào)tt姓名t性別t高數(shù)分t英語(yǔ)分tC語(yǔ)言分t總分t平均分n);printf(%dt%st%st%st,i+1,stui.number,stui.name,stui.sex);for(j=0;jM;j+)printf(%4.2ft,stui.scorej);printf(%4.2f,stui.total);printf(%4.2f,stui.aver);printf(n);printf(請(qǐng)重新輸入該學(xué)生的姓名:n);scanf(%s,stui.number);printf(n);scanf(%s,stui.name);printf(請(qǐng)輸入該學(xué)生性別n);scanf(%s,stui.sex);printf(請(qǐng)重新輸入該學(xué)生成績(jī):n);printf(高數(shù)分t英語(yǔ)分tC語(yǔ)言分n);for(j=0;jM;j+)scanf(%f,&stui.scorej); printf(修改成功n);break; /找到該學(xué)生成績(jī)后進(jìn)行修改,跳出for循環(huán)elseprintf(請(qǐng)確認(rèn)該學(xué)生是否為該校學(xué)生!n);/*添加學(xué)生成績(jī)*/void add(void)int a,i,j; /i定義為學(xué)生,j為學(xué)生分?jǐn)?shù),a代表加入學(xué)生的數(shù)量system(cls);printf( 已經(jīng)轉(zhuǎn)到添加成績(jī)菜單n);printf(請(qǐng)輸入新增加的學(xué)生人數(shù):n);scanf(%d,&a);n=n+a;for(i=n-a;in;i+) printf(n);printf(請(qǐng)輸入第%d位學(xué)生的學(xué)號(hào):n,i+1); scanf(%s,stui.number);printf(姓名:n);scanf(%s,stui.name);printf(輸入該學(xué)生性別n);scanf(%s,stui.sex);printf(請(qǐng)輸入學(xué)生成績(jī):n);printf(高數(shù)分t英語(yǔ)分tC語(yǔ)言分n);for(j=0;jM;j+)scanf(%f,&stui.scorej);printf(添加成功n);/*刪除學(xué)生成績(jī)*/void delscore(void)int i,j,c;char m,a10; /m用來存放后面輸入刪除的字母y或nsystem(cls);printf( 已經(jīng)轉(zhuǎn)到刪除成績(jī)菜單n);printf(請(qǐng)輸入學(xué)生學(xué)號(hào)n);scanf(%s,a);for(i=0;in;i+)if(strcmp(a,stui.number)=0)printf(名次t學(xué)號(hào)tt姓名t性別t高數(shù)分t英語(yǔ)分tC語(yǔ)言分t總分t平均分n);printf(%dt%st%st%st,i+1,stui.number,stui.name,stui.sex);for(j=0;jM;j+)printf(%4.2ft,stui.scorej);printf(%4.2ft,stui.total);printf(%4.2f,stui.aver);printf(n);c=i;break;elseprintf(未找到該學(xué)生信息n);printf(是否刪除該學(xué)生成績(jī)(y/n)n);scanf(%s,&m);if(m=y)for(i=c;in-1;i+)stui=stui+1; /結(jié)構(gòu)體整體賦值將后一位學(xué)生成績(jī)信息拷貝進(jìn)入前一位學(xué)生信息的存儲(chǔ)位置n=n-1; /刪除該學(xué)生信息后學(xué)生總數(shù)減一printf(刪除成績(jī)成功n);elseprintf(刪除成績(jī)失敗n);/*保存學(xué)生成績(jī)*/void savescore(void)FILE *fp; /定義指針int i,flag=1;char m;system(cls);printf( 已經(jīng)轉(zhuǎn)到保存成績(jī)菜單n);puts(是否保存學(xué)生成績(jī)(y/n);scanf(%s,&m);if(m=y)if(fp=fopen(score.dat,wb)=NULL) /從文件score中打開printf(文件打開失敗n);return;for(i=0;in;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1) /學(xué)生成績(jī)寫入printf(保存失敗n);flag=0;if(flag=1)printf(保存成功!n);fclose(fp); /界面關(guān)閉elsereturn; THANKS !致力為企業(yè)和個(gè)人提供合同協(xié)議,策劃案計(jì)劃書,學(xué)習(xí)課件等等打造全網(wǎng)一站式需求歡迎您的下載,資料僅供參考-可編輯修改-- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
32 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 語(yǔ)言 編寫 學(xué)生 成績(jī)管理系統(tǒng)
鏈接地址:http://www.szxfmmzy.com/p-1564506.html