




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 課 程 設(shè) 計 報 告課程名稱 C語言程序設(shè)計 課題名稱 學生綜合測評系統(tǒng) 專 業(yè) 班 級 學 號 姓 名 指導教師 2012年 1 月2 日湖南工程學院課 程 設(shè) 計 任 務 書課程名稱 C語言程序設(shè)計 課 題 學生綜合測評系統(tǒng) 專業(yè)班級 學生姓名 學 號 指導老師 審 批 任務書下達日期 2012年 12 月 25日任務完成日期 2013年 1 月 2 日一、設(shè)計內(nèi)容與設(shè)計要求1設(shè)計內(nèi)容:課題十: 學生綜合測評系統(tǒng)一、問題描述:每個學生的信息為:學號、姓名、性別、家庭住址、聯(lián)系電話、語文、數(shù)學、外語三門單科成績、考試平均成績、考試名次、同學互評分、品德成績、任課
2、教師評分、綜合測評總分、綜合測評名次??荚嚻骄煽?、同學互評分、品德成績、任課教師評分分別占綜合測評總分的60%,10%,10%,20%。二、功能描述: A、學生信息處理(1) 輸入學生信息、學號、姓名、性別、家庭住址、聯(lián)系電話,按學號以小到大的順序存入文件中。提示:學生信息可先輸入到數(shù)組中,排序后可寫到文件中。(2) 插入(修改)同學信息:提示:先輸入將插入的同學信息,然后再打開源文件并建立新文件,把源文件和輸入的信息合并到新文件中(保持按學號有序)若存在該同學則將新記錄內(nèi)容替換源內(nèi)容,(3) 刪除同學信息:提示:輸入將刪除同學號,讀出該同學信息,要求對此進行確認,以決定是否刪除將刪除后的信
3、息寫到文件中。(4) 瀏覽學生信息:提示:打開文件,顯示該文件的學生信息。B、學生數(shù)據(jù)處理:(1) 按考試科目錄入學生成績并且按公式:考試成績(語文+數(shù)學+外語)/3 計算考試成績,并計算考試名次,提示:先把學生信息讀入數(shù)組,然后按提示輸入每科成績,計算考試成績,求出名次,最后把學生記錄寫入一個文件中。(2) 學生測評數(shù)據(jù)輸入并計算綜合測評總分及名次。提示:綜合測評總分(考試成績)*0.6+(同學互評分)*0.1+品德成績*0.1+任課老師評分*0.2。(3) 學生數(shù)據(jù)管理提示:輸入學號,讀出并顯示該同學信息,輸入新數(shù)據(jù),將改后信息寫入文件(4) 學生數(shù)據(jù)查詢:提示:輸入學號或其他信息,即讀出
4、所有數(shù)據(jù)信息,并顯示出來。C、學生綜合信息輸出提示:輸出學生信息到屏幕。三、算法提示:1、數(shù)據(jù)結(jié)構(gòu):結(jié)構(gòu)體類型數(shù)組2、數(shù)據(jù)庫結(jié)構(gòu):下表構(gòu)成該系統(tǒng)的基本數(shù)據(jù)庫。 學號姓名考試成績評分CharCharstructint四、測試數(shù)據(jù):學生人數(shù):N=10 學生綜合測評系統(tǒng)1課程設(shè)計目的掌握結(jié)構(gòu)化程序設(shè)計的主體思想,以自頂向下逐步求精的方法編制程序解決一些實際的問題,為將來編寫軟件積累一些典型的案例處理經(jīng)驗。2課程設(shè)計主要任務一、問題描述: 的信息為:學號、姓名、性別、家庭住址、聯(lián)系電話、語文、數(shù)學、外語三門單科成績、考試平均成績、考試名次、同學互評分、品德成績、任課教師評分、綜合測評總分、綜合測評名次
5、。考試平均成績、同學互評分、品德成績、任課教師評分分別占綜合測評總分的60%,10%,10%,20%。二、功能描述: A學生信息處理(1) 輸入學生信息、學號、姓名、性別、家庭住址、聯(lián)系電話,按學號以小到大的順序存入文件中。(2) 插入(修改)同學信息:(3) 刪除同學信息:(4) 瀏覽學生信息:B、學生數(shù)據(jù)處理:(1) 按考試科目錄入學生成績并且按公式:考試成績(語文+數(shù)學+外語)/3 計算考試成績,并計算考試名次。(2) 學生測評數(shù)據(jù)輸入并計算綜合測評總分及名次。(3) 學生數(shù)據(jù)管理(4) 學生數(shù)據(jù)查詢:C、學生綜合信息輸出3設(shè)計環(huán)境1)硬件:PC機,檔次不低于CPU為PIII667,內(nèi)存
6、為128M,4G硬盤,其它硬件與此相配套。2)軟件:Windows XP,VC+6.0 4總體設(shè)計方案的選定本設(shè)計采用模塊化結(jié)構(gòu)設(shè)計,主要包括:主菜單(menu)下的學生信息處理系統(tǒng)(info_menu)、學生數(shù)據(jù)處理系統(tǒng)(data_menu)、學生綜合信息輸出(shuchu)、幫助信息(help)、退出系統(tǒng);學生信息處理系統(tǒng)(info_menu)下的輸入學生信息(info_input)、修改學生信息(xiugai)、刪除學生信息(info_del)、瀏覽學生信息(info_output)、返回主菜單;學生數(shù)據(jù)處理系統(tǒng)下的(data_menu)錄入成績數(shù)據(jù)(data_input)、修改學生數(shù)據(jù)
7、(data_xiugai)、學生數(shù)據(jù)查詢(data_chaxun)、返回主菜單。主菜單學生信息處理學生數(shù)據(jù)處理綜合信息輸出幫助信息退出系統(tǒng)學生數(shù)據(jù)處理系統(tǒng)修改學生數(shù)據(jù)學生數(shù)據(jù)查詢錄入成績數(shù)據(jù)返回主菜單學生信息處理系統(tǒng)刪除學生信息修改學生信息輸入學生信息瀏覽學生信息返回主菜單 學生綜合測評系統(tǒng)結(jié)構(gòu)框圖5源程序清單# include<stdio.h> /包含文件# include "stdlib.h" # include "string.h" int count;void info_daoru();void info_xieru();void i
8、nfo_del();void info_xiugai();void data_xieru();void data_daoru();void data_xiugai();void data_chaxun();void data_input();void shuchu();struct student /定義學生信息結(jié)構(gòu)數(shù)組double number;char name11;char sex4;char adds15;char phone14;p,info100,w=0," "," "," "," ",;struct
9、data /定義學生數(shù)據(jù)結(jié)構(gòu)數(shù)組 double number;char name11;char sex4;char adds15;char phone14;int chinese,math,english,stu,ksmc,pinde,teacher;float aver,ceping;data100;int main() /主函數(shù)system("color 9e");void data_menu();void info_menu();void help();void menu();printf("nnntt.歡迎使用學生綜合管理系統(tǒng).nn");prin
10、tf("tt tt本程序由宗幸幸借鑒陳偉的程序編寫nn");printf("nntt");system("pause"); menu();return 0;void help() /幫助信息system("cls"); /清屏printf(" * 歡迎使用本系統(tǒng)! *nn");printf(" 本系統(tǒng)可以存儲學生的基本信息和各科成績,并能計算考試平均成績,綜合測評成績和排名。n");printf(" 基本信息包括:學號、姓名、性別、家庭住址、聯(lián)系電話;n 各科成績包
11、括:語文、數(shù)學、外語成績;n");printf(" 其它包括:考試名次、同學互評分、品德成績、任課教師評分等。n");printf(" 說明:考試成績排名是按照考試成績計算的(考試成績=(語+數(shù)+外)/3);n");printf(" 綜合測評總分=(考試成績)*0.6+(同學互評分)*0.1+(品德成績)*0.1+(任課教師評分)*0.2)n");printf(" 其它請按照提示操作即可。nn");printf(" 如有疑問,請聯(lián)系:QQ:nn");printf("nntt&
12、quot;);system("pause");void info_daoru() /學生信息導出文件函數(shù)FILE *f_info;struct student p=NULL;printf("nnt正在導入.nn");if(f_info=fopen("info.txt","r")=NULL)printf("nt打開文件失敗!nn");return;count=0; while(!feof(f_info)fscanf(f_info,"%lf %s %s %s %s ",&
13、p.number,,p.sex,p.adds,p.phone);infocount=p;count+;printf("nt導入已完成!共導入 %d 條記錄!nnn",count);fclose(f_info);void info_input() /學生信息輸入函數(shù)int i,j; info_daoru();for( ; ; )printf("t請輸入學號(輸入0退出):");scanf("%lf",&p.number);if(p.number=0) return;for(i=0;i<=count;i+) /判
14、斷是否存在該學生if(p.number=infoi.number)printf("nnt該學號已存在!請重新輸入!nn");return;printf("t請輸入姓名: "); /輸入學生信息getchar();gets();printf("t請輸入性別: ");getchar();gets(p.sex);printf("t請輸入家庭住址: ");getchar();gets(p.adds);printf("t請輸入電話號碼: ");getchar();gets(p.phone);i
15、nfocount=p;for(i=0;i<count;i+) /按學號排序if(infoi.number>infocount.number) for(j=count;j>i;j-)infoj=infoj-1;infoi=p;break;count+;void info_output() /學生信息瀏覽FILE *f_info;int i;if(f_info=fopen("info.txt","r")=NULL) /判斷 printf("nt沒有學生信息!");printf("nntt"); sys
16、tem("pause");return;info_daoru();if(count=0) /判斷 printf("nt沒有學生信息!");printf("nntt"); system("pause"); return; elseprintf(" t學號t 姓名 t 性別t 家庭住址t 聯(lián)系電話n"); /輸出學生信息for(i=0;i<count;i+)printf(" %10.0lf",infoi.number);printf(" %10s",in
17、);printf(" %10s",infoi.sex);printf(" %15s",infoi.adds);printf(" %13snn",infoi.phone);printf("t請按任意鍵返回上級:");printf("nntt");system("pause");printf("nnnn");void info_menu() /學生信息菜單int choice;while(1)system("cls"); /
18、清屏 printf("nnnntt學生信息處理系統(tǒng)nn"); printf("ttt 1.輸入學生信息n"); printf("ttt 2.修改學生信息n"); printf("ttt 3.刪除學生信息n"); printf("ttt 4.瀏覽學生信息n"); printf("ttt 0.返回主菜單nn"); printf("tt請輸入序號選擇操作:"); scanf("%d",&choice); if(choice=0) br
19、eak; switch(choice) case 1: info_input(); info_xieru(); break; case 2: info_xiugai(); break; case 3: info_del(); break;case 4: info_output(); break; default: printf("nt輸入有誤!請重新輸入!nn"); break;void data_menu() /數(shù)據(jù)處理菜單int choice;printf("nt在進入學生數(shù)據(jù)管理前,請確認學生信息已全部完成!n");printf("nt是
20、否繼續(xù)?輸入數(shù)字選擇(0:返回;其它數(shù)字繼續(xù)。)n");scanf("%d",&choice);if(choice=0) return;while(1)system("cls"); /清屏 printf("nnnntt學生數(shù)據(jù)處理系統(tǒng)nn"); printf("ttt 1.錄入成績數(shù)據(jù)n"); printf("ttt 2.修改學生數(shù)據(jù)n"); printf("ttt 3.學生數(shù)據(jù)查詢n"); printf("ttt 0.返回主菜單nn")
21、; printf("tt請輸入序號選擇操作:"); scanf("%d",&choice); if(choice=0) break; switch(choice) case 1: data_input(); break; case 2: data_xiugai(); break; case 3: data_chaxun(); break; default: printf("nt輸入有誤!請重新輸入!nn"); break;void menu() /主菜單函數(shù)int choice;while(1)system("cls
22、"); printf("nnnntt- 主 - - - -菜- - - - 單 -nn"); printf("ttt 1.學生信息處理系統(tǒng)n"); printf("ttt 2.學生數(shù)據(jù)處理系統(tǒng)n"); printf("ttt 3.學生綜合信息輸出n"); printf("ttt 4.幫助信息n"); printf("ttt 0.退出系統(tǒng)nn"); printf("tt請輸入序號選擇操作:"); scanf("%d",&
23、choice);printf("n");if(choice=0)printf("tt你已經(jīng)退出,謝謝使用!nntt");break;switch(choice) case 1 : info_menu(); break; case 2 : data_menu(); break; case 4 : help(); break; case 3 : shuchu(); break; default: printf("nt輸入有誤!請重新輸入!nn"); break;void info_xieru() /學生信息寫入文件函數(shù)FILE *f;in
24、t i;if(f=fopen("info.txt","a")=NULL)printf("nt打開文件失敗!nn");exit(0); for(i=0;i<count;i+) /保存文件if(infoi.number=w.number) continue; else fprintf(f,"%.0lf %s %s %s %s",infoi.number,,infoi.sex,infoi.adds,infoi.phone);fclose(f);printf("nt保存成功!nn&quo
25、t;);printf("nntt");system("pause");return;void info_del() /學生信息刪除double pp;int i,j;info_daoru();printf("nt請輸入要刪除學生的學號:");scanf("%lf",&pp);printf("n");for(i=0;i<=count;i+) /判斷 if(infoi.number=pp) break;if(i>=count)printf("nt沒有找到該學生!n&qu
26、ot;); return;printf(" t學號t 姓名 t 性別 家庭住址t 聯(lián)系電話n"); /顯示刪除信息printf(" %10.0lf",infoi.number);printf(" %10s",);printf(" %10s",infoi.sex);printf(" %13snn",infoi.phone);printf("nt是否刪除?t 1.是 t 2.否 t ");while(1) scanf("%d",&j
27、); switch(j)case 1: infoi=w; printf("nt刪除成功!nn"); info_xieru(); return; case 2: return; default : printf("輸入錯誤!請重新輸入!");break;break;printf("nntt"); system("pause");void info_xiugai() /修改學生信息double pp;int i,j;info_daoru();printf("nt請輸入要修改學生的學號:"); /查找
28、scanf("%lf",&pp);printf("n");for(i=0;i<=count;i+) if(infoi.number=pp) break;printf("nt沒有找到該學生!n"); return;printf(" t學號t 姓名t 性別t 家庭住址t 聯(lián)系電話n"); /顯示printf(" %10.0lf",infoi.number);printf(" %10s",);printf(" %10s",inf
29、oi.sex);printf(" %15s",infoi.adds);printf(" %13snn",infoi.phone);printf("nt是否修改?t 1.是 t 2.否 t ");while(1) /修改 scanf("%d",&j); switch(j) case 1:printf("t學號為: %.0lfn",infoi.number);printf("t請輸入姓名::"); scanf("%s",); pri
30、ntf("t請輸入性別:"); scanf("%s",infoi.sex); printf("t請輸入家庭住址::");scanf("%s",infoi.adds); printf("t請輸入電話號碼:"); scanf("%s",infoi.phone);printf("nt修改成功!nn"); info_xieru(); return; /保存 case 2: return; default : printf("輸入錯誤!請重新輸入!&quo
31、t;);break;break;printf("nntt"); system("pause");void data_daoru() /學生數(shù)據(jù)導出 FILE *f_data;struct data p=NULL;printf("nnt正在導入.nn");if(f_data=fopen("data.txt","r")=NULL)printf("nt打開文件失敗!nn");return;count=0; while(!feof(f_data)fscanf(f_data,"
32、;%lf %s %s %s %s %d %d %d %d %f %d %d %d %f ",&p.number,,p.sex,p.adds,p.phone,&p.chinese,&p.math,&p.english,&p.stu,&p.aver,&p.ksmc,&p.pinde,&p.teacher,&p.ceping);datacount=p;/n na se ad p ch ma en su av ks pi te cecount+;printf("nt導入已完成!共導入 %d
33、條記錄!nnn",count);fclose(f_data); /關(guān)閉文件void data_xieru() /寫入文件函數(shù)FILE *f;int i;if(f=fopen("data.txt","w")=NULL)printf("nt打開文件失敗!nn");exit(0); for(i=0;i<count;i+) fprintf(f,"%.0lf %s %s %s %s %d %d %d %.1f %d %d %d %.1f",datai.number,,datai.sex,d
34、atai.adds,datai.phone,datai.chinese,datai.math,datai.english,datai.aver,datai.ksmc,datai.stu,datai.pinde,datai.teacher,datai.ceping);/ num nam s ad tel c m e ave ks stu t cep fclose(f);printf("nntt");system("pause");return;void data_input() /數(shù)據(jù)輸入FILE *f_info;int choice,i,k;struct
35、 data p=NULL; printf("nt警告!原有成績將被覆蓋!n");printf("nt是否繼續(xù)?輸入數(shù)字選擇(0.返回;其余數(shù)字繼續(xù))nn");scanf("%d",&choice);if(choice=0) return;printf("nnt正在導入.nn"); /判斷if(f_info=fopen("info.txt","r")=NULL)printf("nt打開文件失敗!nn");return;count=0; while(!
36、feof(f_info) /導出學生信息fscanf(f_info,"%lf %s %s %s %s ",&p.number,,p.sex,p.adds,p.phone);datacount=p;count+;printf("nt導入已完成!共導入 %d 條記錄!nnn",count);fclose(f_info);for(i=0;i<count;i+) /輸入學生數(shù)據(jù)printf("nt學號:%.0lf 姓名:%sn",datai.number,);printf("nt請輸入語
37、文成績:");scanf("%d",&datai.chinese);printf("t請輸入數(shù)學成績:");scanf("%d",&datai.math);printf("t請輸入英語成績:");scanf("%d",&datai.english);printf("t請輸入同學互評分:");scanf("%d",&datai.stu);printf("t請輸入品德成績:");scanf(&quo
38、t;%d",&datai.pinde);printf("t請輸入老師評分:");scanf("%d",&datai.teacher);datai.aver=(datai.chinese+datai.math+datai.english)/3.0;datai.ceping=(datai.aver*0.6+datai.stu*0.1+datai.pinde*0.1+datai.teacher*0.2);datai.ksmc=i+1;for(k=0;k<i;k+) /名次排序if(datai.aver>datak.aver
39、) datak.ksmc=datak.ksmc+1;if(datai.ksmc>datak.ksmc-1)datai.ksmc=datak.ksmc-1;printf("nnt輸入已完成!正在保存. n");data_xieru();void data_xiugai() /數(shù)據(jù)修改double pp;int i,j,k;data_daoru();printf("nt請輸入要修改學生的學號:");scanf("%lf",&pp);printf("n");for(i=0;i<=count;i+) i
40、f(datai.number=pp) break;printf("nt沒有找到該學生!n"); return;printf("nt學號:%.0lf 姓名:%s nnt語文:%d 數(shù)學:%d 英語:%d 同學互評分:%d 品德成績:%d 老師評分:%dnn",datai.number,,datai.chinese,datai.math,datai.english,datai.stu,datai.pinde,datai.teacher);printf("nt是否修改?t 1.是 t 2.否 t ");while(1)
41、/詢問 scanf("%d",&j); switch(j) case 1:for(k=0;k<=count;k+) /重新排名次if(datai.aver>datak.aver) datak.ksmc=datak.ksmc-1;printf("nt請輸入語文成績:");scanf("%d",&datai.chinese);printf("t請輸入數(shù)學成績:");scanf("%d",&datai.math);printf("t請輸入英語成績:&quo
42、t;);scanf("%d",&datai.english); printf("t請輸入同學互評分:"); scanf("%d",&datai.stu);printf("t請輸入品德成績:");scanf("%d",&datai.pinde);printf("t請輸入老師評分:");scanf("%d",&datai.teacher);datai.aver=(datai.chinese+datai.math+datai.en
43、glish)/3.0;datai.ceping=(datai.aver*0.6+datai.stu*0.1+datai.pinde*0.1+datai.teacher*0.2);datai.ksmc=count;for(k=0;k<count;k+) /重新排名次if(datai.aver>datak.aver) datak.ksmc=datak.ksmc+1; if(datai.ksmc>datak.ksmc-1)datai.ksmc=datak.ksmc-1;printf("nt修改成功!nn"); data_xieru(); return; /寫入文
44、件 case 2: return; default : printf("輸入錯誤!請重新輸入!");break; break;printf("nntt"); system("pause");void data_chaxun() /數(shù)據(jù)查詢 double pp;int i;data_daoru(); /導出文件數(shù)據(jù)printf("nt請輸入要查詢學生的學號:");scanf("%lf",&pp);printf("n");for(i=0;i<=count;i+) if(datai.number=pp) break;if(i>=count) printf("nt沒有找到該學生!n");return;printf("nt學號:%.0lf 姓名:%s 性別:%s nnt語文:%d 數(shù)學:%d 英語:%d 平均成績:%.1fnnt名次:%d 品德成績:%d 老師評分:%d 綜合成績:%.1fnn",datai.num
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨時家具租賃協(xié)議書
- 轉(zhuǎn)讓免責協(xié)議書模板
- 燃氣項目轉(zhuǎn)讓協(xié)議書
- 婆家出錢結(jié)婚協(xié)議書
- 終止合伙關(guān)系協(xié)議書
- 情侶房產(chǎn)分割協(xié)議書
- 朋友合伙購房協(xié)議書
- 施工安全協(xié)議書全部
- 領(lǐng)養(yǎng)寵物責任協(xié)議書
- 簽訂社保繳費協(xié)議書
- 2025年03月內(nèi)蒙古鄂爾多斯市東勝區(qū)事業(yè)單位引進高層次人才和緊缺專業(yè)人才50人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 勞務派遣勞務外包服務方案(技術(shù)方案)
- VDA6.3-2023版審核檢查表
- 反滲透理論及要求
- 氣道異物梗阻的急救ppt課件
- T∕CNTAC 22-2018 絨毛織物掉毛性的試驗方法
- 能源計量網(wǎng)絡圖范例二
- 歷代皇帝年號表
- 超星爾雅學習通《時間管理》章節(jié)測試含答案
- 二至六年級24點試題與部分答案
- 2016年江蘇開放大學-實踐性考核作業(yè)-建設(shè)工程施工管理1課件
評論
0/150
提交評論