C語言課程設(shè)計_第1頁
C語言課程設(shè)計_第2頁
C語言課程設(shè)計_第3頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、中國地質(zhì)大學(xué)本科生課程論文封面課程名 稱 C 語言課程設(shè)計教師姓名本科生姓名本科生學(xué)號本科生專業(yè)所在院系類別:日期:2013年12月31日課程設(shè)計評語對課程論文的評語平時成績:課程論文成績:總成績:評閱人簽名:注:1無評閱人簽名成績無效;2、必須用鋼筆或圓珠筆批閱,用鉛筆閱卷無效;3、如有平時成績,必須在上面評分表中標出,并計算入總成績。目錄課程設(shè)計評語 2目錄 31 課程論文題目 錯誤!未定義書簽。2 程序設(shè)計思路 錯誤!未定義書簽。3 功能模塊圖 錯誤!未定義書簽。4 數(shù)據(jù)結(jié)構(gòu)設(shè)計 錯誤!未定義書簽。5 算法設(shè)計 錯誤!未定義書簽。6 .程序代碼 107.程序運行結(jié)果 18&編程中遇到的困

2、難及解決方法 229.總結(jié)心得及良好建議 2210 致謝 23-、課程論文題目:學(xué)生成績管理系統(tǒng)1:題目要求請設(shè)計學(xué)生成績管理系統(tǒng),實現(xiàn)學(xué)生信息的錄入,顯示,查找,添加,保 存,刪除,插入等功能模塊。要求功能選擇用菜單實現(xiàn),數(shù)據(jù)輸入和結(jié)果輸出要 求有文件存放。原始數(shù)據(jù)文件格式:學(xué)號姓名英語C語言高等數(shù)學(xué)平均成績01 張三 7585808002 李四2:需求分析根據(jù)題目要求,由于學(xué)生信息總是存放在文件中,所以應(yīng)提供文件的輸入, 輸出等操作;在程序中需要瀏覽學(xué)生的信息,應(yīng)提供顯示,查找,排序等操作; 另外還應(yīng)提供鍵盤式選擇菜單實現(xiàn)功能選擇。3:總體設(shè)計根據(jù)上面的需求分析,可以將這個系統(tǒng)的設(shè)計分為:

3、數(shù)據(jù)輸入模塊、數(shù)據(jù)顯示 模塊、數(shù)據(jù)查找模塊、數(shù)據(jù)插入模塊、成績排序模塊和成績保存模塊等。二、程序設(shè)計思路這次是初次要自主 設(shè)計一個程序系統(tǒng)。系統(tǒng)要求實現(xiàn)學(xué)生信息的錄入、顯示、查找、添加以及成績排序等功能。對于幾 個功能,可分別設(shè)置7個部分。根據(jù)需求分析,可以將這個系統(tǒng)分為以下模塊:輸 入模塊,錄入模塊,修改模塊,保存模塊,查詢功能模塊,刪除功能模塊,以及排序 模塊.1、用戶輸入模塊在此模塊中用戶根據(jù)自己的需求輸入數(shù)字 17中的任意一個數(shù)字,實現(xiàn)相 應(yīng)的功能。2、信息錄入功能模塊此模塊可以讓用戶輸入每個學(xué)生的信息: 學(xué)號、姓名、英語成績、C語言成 績、高等數(shù)學(xué)成績、平均成績。用戶可以連續(xù)輸入學(xué)生

4、的信息,或者刪除或者 查詢,也可以保存當(dāng)前已錄入的信息。3、修改學(xué)生成績模塊用戶可以根據(jù)實際情況的變化修改已錄入的學(xué)生成績的信息,跟實際同步。4、文件保存模塊用戶可以在確定已錄入的信息無誤之后將學(xué)生的信息存為一個數(shù)據(jù)文件。 已保存的信息可以再文件中查看也可以在程序中進行查看。用戶輸入的學(xué)生信息可以隨時保存。5、查詢功能模塊在此模塊里,用戶可以根據(jù)提示輸入所想要查詢的學(xué)生的學(xué)號以查詢學(xué)生的 信息。6、刪除功能模塊、在此模塊里,用戶可以根據(jù)自己的需求選擇想要刪除的學(xué)生信息,選擇之 后程序會再次確認,以防誤刪。7、排序功能模塊在此模塊中,程序會將用戶已錄入的信息按平均成績由低到高進行排序。功能模塊圖

5、:四、數(shù)據(jù)結(jié)構(gòu)設(shè)計struct xueshe ngche ngji/*char xuehao10;/*char name10;/*float cyuya n;/*cfloat math;/*float en glish;/*float average; /*聲明學(xué)生成績數(shù)據(jù)結(jié)構(gòu)體學(xué)生學(xué)號*/學(xué)生姓名*/語言成績*/高數(shù)成績*/英語成績*/平均成績*/;聲明記錄學(xué)生成績情況的100個struct xueshe ngche ngji che ngji100,*p=che ngji; /*元素的結(jié)構(gòu)體數(shù)組*/五、算法設(shè)計1、添加模塊void add()printf (t請輸入學(xué)生學(xué)號:);fflus

6、h(stdin);/*清除鍵盤緩沖區(qū)*/gets(che ngji+n.xuehao);prin tf(tttt請輸入學(xué)生姓名:”);gets(che ngji n. name);prin tf(tttt請輸入該學(xué)生的英語成績:);sca nf(%f, &che ngji n.cyuya n);prin tf(tttt請輸入該學(xué)生的C語言成績:”);scan f(%f, &che ngji n.math);prin tf(tttt請輸入該學(xué)生的高等數(shù)學(xué)成績:);scan f(%f, &chen gji n.e nglish);/*計算總成績*/che ngji n.average=(che n

7、gji n.cyuya n+che ngji n.math+che ngji n.e nglish)/3;/* 輸出內(nèi)容*/ prin tf(ntttt prin tf(nntttt getch();2、修改模塊該學(xué)生成績?yōu)?%f,chengjin.average); 按任意鍵返回.);void modify ()char xuehao10; /* int i;/*if (n=-1)/*接收學(xué)生學(xué)號字符數(shù)組*/循環(huán)變量*/人數(shù)為0說明成績記錄尚未添加*/prin tf(nntt當(dāng)前還沒有學(xué)生成績記錄,按任意鍵返回主菜單);getch(); return;printf(t請輸入學(xué)生學(xué)號:);ge

8、ts(xuehao);/*for (i=0;i=n ;i+)/*/*提示信息*/從鍵盤讀取字符串*/在學(xué)生總數(shù)范圍內(nèi)循環(huán)查找*/比較并找到*/if(strcmp(che ngjii.xuehao,xuehao)=0)/*/*顯示該學(xué)生成績情況*/prin tf(nttt該學(xué)生成績情況如下:”);prin tf(nttt=nn);printf(學(xué)號姓名平均成績);printf(英語C語言高等數(shù)學(xué));prin tf(%-6s%-6s,che ngjii.xuehao,che ngjii. name);prin tf(%9.2f%9.2f%9.2f%9.2f,che ngjii.cyuya n,ch

9、e ngjii.math,che ngjii.e ngli sh,che ngjii.average);/*接受該學(xué)生新的成績情況*/prin tf(ntt請輸入該學(xué)生新的英語成績:);scanf (%f,&che ngjii.cyuya n);printf(ntt請輸入該學(xué)生新的C語言成績:);scanf (%f,&chen gjii.math);prin tf(ntt請輸入該學(xué)生新的高等數(shù)學(xué)成績:”);scanf (%f,&chen gjii.e nglish);3、查詢模塊開始/*查詢學(xué)生成績(依據(jù)學(xué)號)*/void fin d()輸入要查詢 的學(xué)生學(xué)號char xuehao10; /*

10、接收學(xué)生學(xué)號字符數(shù)組 */int i; /*循環(huán)變量*/if(n=-1)/*人數(shù)為0說明成績記錄尚未添加*/輸出學(xué)生信息prin tf(nntt當(dāng)前還沒有學(xué)生成績,按任意鍵返回主菜單 );getch();return;結(jié)束printf(t請輸入學(xué)生學(xué)號:);/*提示信息*/gets(xuehao); /*從鍵盤讀取字符串*/for(i=0;i=n;i+)/*在職工總數(shù)范圍內(nèi)循環(huán)查找*/if(strcmp(che ngjii.xuehao,xuehao)=0) /*比較并找到*/prin tf(n該學(xué)生成績情況如下:”);prin tf(n=nn);printf(學(xué)號姓名);printf(”英語

11、 C 語言 高等數(shù)學(xué) 平均成績”);prin tf(%-6s%-6s%,che ngjii.xuehao,che ngjii. name);prin tf(%9.2f%9.2f%9.2f%9.2f,che ngjii.cyuya n,che ngjii.math,che ngjii.e n glish,che ngjii.average);prin tf(n按任意鍵返回主菜單);getch();break;if(i=n+1)prin tf(ntt您所輸入的學(xué)生學(xué)號有誤或不存在!);printf(”按任意鍵返回主菜單.);getch();return;4、刪除模塊void del()char x

12、uehao10;int i,j;char d;prin tf(t請輸入待刪除學(xué)生學(xué)號:”);gets(xuehao);for(i=0;i=n ;i+)if(strcmp(che ngjii.xuehao,xuehao)=0)printf(ntt你確認要刪除s號學(xué)生成績信息么(y/n)?,chengjii.xuehao);d=getche();if(d=y|d=Y)if(i=n)n-;elsefor(j=i;j=n;j+)strcpy(che ngjij.xuehao,che ngjij+1.xuehao); strcpy(che ngjij. name,che ngjij+1. name);

13、che ngjij.e nglish=che ngjij+1.e nglish;che ngjij.math=che ngjij+1.math;che ngjij.cyuya n=che ngjij+1.cyuya n;n-;prin tf(nntt該學(xué)生記錄成功刪除,按任意鍵返回主菜單 );getch();break;elseprin tf(nntt你選擇了不刪除該學(xué)生記錄,按任意鍵返回主菜單);getch();return;if(i = n+1)prin tf(ntt本班級無此學(xué)號,按任意鍵返回主菜單getch();5、排序模塊void ran k()int i,j;prin tf(t按平

14、均成績排序如下n);for (i=0;i n ;i+)for(j=i+1;jche ngji j.average) *p=che ngjij;che ngjij=che ngjii;che ngjii=*p; printf(%-6s%-6s, 學(xué)號,姓名););prin tf(%-12s%-6s%12s%-9sn,英語,C語言,高等數(shù)學(xué),平均成績);for(i=0;i=n ;i+)prin tf(%-6s%-6s,che ngjii.xuehao,che ngjii. name);prin tf(%9.2f%9.2f%9.2f%9.2fn,che ngjii.cyuya n,che ngjii

15、.math,che ngjii.e ng lish,che ngjii.average);printf(nntttt按任意鍵返回);getch();六、程序代碼nclude /*基本的輸入輸出函數(shù) */#include /*getch()及 getche()函數(shù)包含在此 */#include /*字符串相關(guān)函數(shù) */#i nclude #defi ne TRUE 1/*以下函數(shù)為自定義函數(shù)聲明語句void read();void write();void fin d();/*/*/*void modify(); /*void add();void del(); void ran k();/*/

16、*/*struct xueshe ngche ngji /* char xuehao10; /* char name10; /* float cyuya n; /*c float math; /* float en glish; /* float average; /*;*/從數(shù)據(jù)文件中讀取學(xué)生成績數(shù)據(jù) 從學(xué)生成績數(shù)據(jù)文件寫入記錄 查詢學(xué)生成績數(shù)據(jù)記錄*/ 修改學(xué)生成績數(shù)據(jù)記錄*/ 向?qū)W生成績數(shù)據(jù)文件中增加記錄 從學(xué)生成績數(shù)據(jù)文件中刪除記錄 排列學(xué)生成績*/聲明學(xué)生成績數(shù)據(jù)結(jié)構(gòu)體學(xué)生學(xué)號*/ 學(xué)生姓名*/ 語言成績*/ 高數(shù)成績*/英語成績*/平均成績*/*/*/*/*/*/聲明記錄學(xué)生成績情

17、況的100個元struct xueshe ngche ngji che ngji100,*p=che ngji; /*素的結(jié)構(gòu)體數(shù)組*/int n = -1; /*聲明統(tǒng)計學(xué)生人數(shù)的變量*/void mai n() char ch;read(); /*從數(shù)據(jù)文件中讀取學(xué)生成績數(shù)據(jù)并初始化學(xué)生成績結(jié)構(gòu)體數(shù)組*/while(TRUE) system(cls); /*清屏命令 */printf(tt 請選擇(1-7) :n);prin tf(tt=n);printf(ttt 1.查詢學(xué)生成績記錄n);prin tf(ttt 2.修改學(xué)生成績記錄n);prin tf(ttt 3.添加學(xué)生成績記錄n);

18、prin tf(ttt 4.刪除學(xué)生成績記錄n);prin tf(ttt 5.保存學(xué)生成績記錄n);prin tf(ttt 6.成績排序n);prin tf(ttt 7. prin tf(tt退出n);prin tf(ntt);ch=getch();switch(ch) case 1: fin d();break; /* 查詢 */ case 2:modify(); break; /* 修改 */ case 3:add(); break; /* 添加 */ case 4:del(); break; /* 刪除 */ case 5:write(); break; /* 保存 */ case 6:

19、ran k(); break; /* 排序 */ case 7:return; /* 退出 */default:prin tf(tt n);getch();return;/*從數(shù)據(jù)文件cj.dat中讀取學(xué)生成績數(shù)據(jù)到數(shù)據(jù)組chengji中*/void read()FILE * file; /*聲明文件指針*/if(file=fope n( cj.dat,rb)=NULL)/*以二進制方式打開學(xué)生成績數(shù)據(jù)文件,并判斷是否失敗*/ prin tf(nnt學(xué)生成績數(shù)據(jù)文件無法打開,或為空!”);prin tf(nnt按任意鍵進入主菜單 );getch();return;else /*文件打開成功時*

20、/n+; /*計算結(jié)構(gòu)體數(shù)組下標*/while(fread(&che ngji n,sizeof(che ngji n),1,file) = 1)n+;fclose(file); /*關(guān)閉文件指針*/prin tf(nnt學(xué)生成績數(shù)據(jù)讀取完畢n, n);n-; /*計算學(xué)生記錄總數(shù)*/*向?qū)W生成績數(shù)據(jù)文件中寫入記錄*/void write()FILE *file; /* 聲明文件指針*/if(n = -1) /*學(xué)生人數(shù)為0時*/prin tf(沒有數(shù)據(jù)可存!按任意鍵返回主菜單 n);getch();return;if(file=fope n( cj.dat,wb)!=NULL)/*以二進制方

21、式打開學(xué)生成績數(shù)據(jù)文件,并判斷是否失敗*/fwrite(&chengji0,sizeof(chengjiO),n+1,file);/* 所有記錄一次寫入文件*/fclose(file); /*關(guān)閉文件指針*/prin tf(nntt%d條學(xué)生記錄保存完畢!n ”, n+1);else /*文件打開不成功時*/prin tf(tt無法打開學(xué)生成績數(shù)據(jù)文件!n);prin tf(ntt 按任意鍵返回主菜單 );getch();/*查詢學(xué)生成績(依據(jù)學(xué)號)*/void fin d()char xuehao10; /*接收學(xué)生學(xué)號字符數(shù)組*/int i; /*循環(huán)變量*/if(n=-1)/*人數(shù)為0說

22、明成績記錄尚未添加*/prin tf(nntt當(dāng)前還沒有學(xué)生成績,按任意鍵返回主菜單 );getch();return;printf(t 請輸入學(xué)生學(xué)號:”);/*提示信息*/gets(xuehao); /*從鍵盤讀取字符串*/for(i=0;i=n ;i+)/*在學(xué)生總數(shù)范圍內(nèi)循環(huán)查找*/if(strcmp(chengjii.xuehao,xuehao)=0) /*比較并找到 */ prin tf(n該學(xué)生成績情況如下:);prin tf(n=nn);printf(學(xué)號姓名);printf(”英語C語言高等數(shù)學(xué) 平均成績n);prin tf(%6s%6s,che ngjii.xuehao,c

23、he ngjii. name);prin tf(%9.2f%9.2f%9.2f%9.2f,che ngjii.cyuya n,che ngjii.math,che ngjii.e n glish,che ngjii.average);prin tf(n按任意鍵返回主菜單);getch();break;if(i=n+1)prin tf(ntt您所輸入的學(xué)生學(xué)號有誤或不存在!);printf(”按任意鍵返回主菜單);getch();return;void list()int i;system(cls);prin tf(nnttt全體學(xué)生成績情況如下n);prin tf(ttt=nn);prin t

24、f( 學(xué)號 姓名);printf(”英語 C語言高等數(shù)學(xué)平均成績);for(i=0;i=n ;i+)prin tf(%6s%6s%9s,che ngjii.xuehao,che ngjii. name,che ngjii.average);prin tf(%9.2f%9.2f%9.2f,che ngjii.e nglish,che ngjii.math); void modify ()char xuehao10; /*接收學(xué)生學(xué)號字符數(shù)組*/int i; /*循環(huán)變量*/if (n=-1) /*人數(shù)為0說明成績記錄尚未添加*/prin tf(nntt當(dāng)前還沒有學(xué)生成績記錄,按任意鍵返回主菜單

25、);getch();return;printf(t請輸入學(xué)生學(xué)號:);/*提示信息*/gets(xuehao); /*從鍵盤讀取字符串*/for (i=0;i=n;i+)/*在學(xué)生總數(shù)范圍內(nèi)循環(huán)查找*/if(strcmp(chengjii.xuehao,xuehao)=0) /*比較并找到 */*顯示該學(xué)生成績情況*/prin tf(nttt該學(xué)生成績情況如下:”);prin tf(nttt=nn);printf(學(xué)號姓名);printf(”英語C語言高等數(shù)學(xué)平均成績n);prin tf(%6s%6s,che ngjii.xuehao,che ngjii. name);prin tf(%9.2

26、f%9.2f%9.2f%9.2f,che ngjii.cyuya n,che ngjii.math,che ngjii.en glish,che ngjii.average);/*接受該學(xué)生新的成績情況*/prin tf(ntt請輸入該學(xué)生新的英語成績:);scanf (%f,&che ngjii.cyuya n);printf(ntt請輸入該學(xué)生新的C語言成績:);scanf (%f,&chen gjii.math);prin tf(ntt請輸入該學(xué)生新的高等數(shù)學(xué)成績:”);scanf (%f,&chen gjii.e nglish);/*計算總成績*/che ngjii.average=(

27、che ngjii.cyuya n+che ngjii.math+che ngjii.e nglish)/3;/*同屏顯示計算結(jié)果*/printf(nttt該學(xué)生成績是:f,chengjii.average);printf(nntt該學(xué)生成績數(shù)據(jù)修改成功!按任意鍵返回主菜單.);getch();return ;prin tf(ntt您所輸入的學(xué)生學(xué)號有誤或不存在?。?printf( 按任意鍵返回主菜單.);getch();return;/*向?qū)W生管理系統(tǒng)中則增加記錄*/void add()printf (t請輸入學(xué)生學(xué)號:);fflush(stdin); /* 清除鍵盤緩沖區(qū)*/ gets(c

28、he ngji+n.xuehao);prin tf(tttt請輸入學(xué)生姓名:”);gets(che ngji n. name);prin tf(tttt請輸入該學(xué)生的英語成績:);sca nf(%f, &che ngji n.cyuya n);prin tf(tttt請輸入該學(xué)生的C語言成績:”);scan f(%f, &che ngji n.math);prin tf(tttt請輸入該學(xué)生的高等數(shù)學(xué)成績:);scan f(%f, &chen gji n.e nglish);/*計算總成績*/che ngji n.average=(che ngji n.cyuya n+che ngji n.m

29、ath+che ngji n.e nglish)/3;/*輸出內(nèi)容*/printf(ntttt該學(xué)生成績?yōu)椋篺,chengjin.average);printf(nntttt按任意鍵返回);getch();/*從學(xué)生成績數(shù)據(jù)文件中刪除記錄*/void del()char xuehao10; /*接收學(xué)生學(xué)號字符數(shù)組*/int i,j; /* 循環(huán)變量*/char d; /*接收確認刪除字符:y/n*/prin tf(t請輸入待刪除學(xué)生學(xué)號:”);gets(xuehao);for(i=0;i=n;i+)/*在學(xué)生總數(shù)范圍內(nèi)循環(huán)查找*/ if(strcmp(chengjii.xuehao,xueh

30、ao)=0) /*比較并找到 */prin tf(ntt你確認 要刪除 %s 號學(xué) 生成績(y/n) ?,che ngjii.xuehao );d=getche();if(d=y|d=Y) /*確認刪除 */if(i=n) /* 如果是最后一條記錄*/n-;else /*不是最后一條記錄*/*/);for(j=i;j=n;j+) /*從該記錄開始后續(xù)記錄更新前一條記錄strcpy(che ngjij.xuehao,che ngjij+1.xuehao);strcpy(che ngjij. name,che ngjij+1. name);che ngjij.e nglish=che ngjij+

31、1.e nglish;che ngjij.math=che ngjij+1.math;che ngjij.cyuya n=che ngjij+1.cyuya n;n-;prin tf(nntt該學(xué)生記錄成功刪除,按任意鍵返回主菜單getch();break;else /*未確認刪除記錄*/prin tf(nntt你選擇了不刪除該學(xué)生記錄,按任意鍵返回主菜單”);getch();return;if(i = n+1) /*未找到指定學(xué)號或未刪除記錄*/ prin tf(ntt本班級無此學(xué)號,按任意鍵返回主菜單 );getch();/*排列學(xué)生的成績*/void ran k()int i,j; /* 循環(huán)變量*/prin tf(t按平均成績排序如下n);for (i=0;i n ;i+)for(j=i+1;jche ngji j.average)*p=che ngjij;che ngjij=che ngjii;che ngjii=*p;printf(%-6s%-6s,學(xué)號,姓名);printf(%-12s%-6s%12s%-9sn,英語,” C 語言,高等數(shù)學(xué),平均成績);for(i=0;i=n ;i+)prin tf(%-6s%-6s,che ngjii.xuehao,che ngjii. name);prin tf(%9.2f%9.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論