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