


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C語言課程設(shè)計(jì)設(shè)計(jì)報(bào)告制作人:學(xué)號(hào):指導(dǎo)老師: 時(shí)間:一、設(shè)計(jì)內(nèi)容和設(shè)計(jì)要求 1 、設(shè)計(jì)內(nèi)容題目:學(xué)生成績管理系統(tǒng)設(shè)計(jì)該系統(tǒng)包含 20 個(gè)學(xué)生姓名和成績信息,可對(duì)成績進(jìn)行排序, 并實(shí)現(xiàn)由姓名查找成績及由成績查找姓名。2、設(shè)計(jì)要求1 )由鍵盤輸入 20 個(gè)學(xué)生(姓名)的某門課程的學(xué)習(xí)成 績 6099 分。2 )將分?jǐn)?shù)由低到高排序(用直接排序法和冒泡法) ,并顯示學(xué) 生姓名和對(duì)應(yīng)的分?jǐn)?shù)。3) 用線性搜索法檢索某個(gè)學(xué)生的成績 (輸入姓名,顯示成績)。4 )* 對(duì)分搜索法檢索某個(gè)學(xué)生的成績(輸入成績,顯示姓名)二、設(shè)計(jì)思路首先是要建立 20 個(gè)學(xué)生信息,即學(xué)生姓名和學(xué)生成績, 使用子函數(shù) input
2、輸入,學(xué)生成績使用一維數(shù)組,學(xué)生姓名 使用二維數(shù)組。然后分別定義四個(gè)子函數(shù),即直接排序法、 冒泡排序法和線性查找法、對(duì)分查找法。在兩個(gè)排序法中, 用字符串拷貝函數(shù)來實(shí)現(xiàn)姓名的交換,另外,在用成績查找 姓名時(shí),可以用直接查找,也可以用對(duì)分查找法,在這里我 兩種方法都使用了。最后在主函數(shù)中來設(shè)計(jì)人機(jī)界面,用 switch函數(shù)來實(shí)現(xiàn)操作選擇,對(duì)應(yīng)的情況中就調(diào)用之前定義 的子函數(shù)來完成排序或查找。三、程序設(shè)計(jì)流程圖1、程序總體流程開始輸入學(xué)生姓名和成績主菜單排序退出直接排序查找姓名將i賦給min將 j 判斷 scorejvscoremin?丫與實(shí)現(xiàn)N,繼續(xù)執(zhí)行判斷是否交換全部比較完畢,子程序結(jié)束外層開
3、始內(nèi)層開始 判斷scorej>scorej+1?與實(shí)現(xiàn)N,繼續(xù)執(zhí)行判斷是否交換全部比較完 畢,子程序結(jié)束輸入姓名字符chFor循環(huán)檢索namei y n賦o值,m賦下標(biāo)最大值(n+m)/2賦給輸入成績k的大k<scorei賦給i+1賦給子程序結(jié)束i+1賦給i從0j從0i kscore minn amej交 換 scorej+1namej交換與小冒泡排序scorej同時(shí) strcpscorej同時(shí) strcp判斷 namei=ch?輸出學(xué) 生姓名和成績判斷scorei關(guān)系 k>scorei i -1 n查找查找成績交換與n amemi nNY丫 交換與 namej+1N丫N不存
4、在此學(xué)生k=scorei找到,輸出學(xué)生成m績和姓名對(duì)分查找、直接排序法流程圖 2子程序入口3、冒泡排序法流程圖子程序入口4、線性搜索法子程序入口子程序結(jié)5、對(duì)分搜索法子程序入口四、程序設(shè)計(jì)中遇到的問題和解決方案swap函數(shù)來最開始編程時(shí),直接排序和冒泡排序法中都是通過 實(shí)現(xiàn)成績交換和姓名交換, 以達(dá)到排序目的, 但在主函數(shù)中調(diào)用 時(shí)卻調(diào)用不了, 程序在排序時(shí)就不能正常運(yùn)行, 我的解決方案就 是去掉swap函數(shù),因?yàn)橛锌赡苡行┖瘮?shù)的調(diào)用有限制條件,這樣改變之后,就不存在限制問題,可以正常排序。另外一個(gè)問題就是姓名數(shù)組的交換問題, 這個(gè)之前是用中間變量 的方式實(shí)現(xiàn)交換, 結(jié)果調(diào)試時(shí)顯示非法, 于是
5、經(jīng)過多次改變和嘗 試,發(fā)現(xiàn)姓名用二維數(shù)組更不容易出現(xiàn)問題, 于是就將姓名設(shè)置 為二維數(shù)組, 然后用字符串拷貝函數(shù)來實(shí)現(xiàn)交換, 以達(dá)到最終排 序的目的。 這樣解決之后, 一方面可以使姓名不至于限制在一個(gè) 字符內(nèi),另外一個(gè)好處就是解決了排序過程中姓名交換的問題。五、源程序(含注釋)及運(yùn)行界面1、源程序#include<stdio.h>#include<string.h>#include<stdlib.h>#define NUM 20void input(int a,char b30) /* 子函數(shù) input 輸入 20 個(gè)學(xué)生姓名 */ int i;for(i
6、=0;i<NUM;i+)抽湩晴尨請(qǐng)輸入第 d個(gè)學(xué)生的姓名:,i+1);scanf(%s,bi);抽湩晴尨請(qǐng)輸入第 d個(gè)學(xué)生的成績:,i+1);scanf(%d,&ai);if(ai>99|ai<60)printf(error!n);/*成績大于 99 或小于 60 則顯示錯(cuò)誤 */i=i-1;void zhijie(int a,char b30)int i,j,min,temp;char temp130;for(i=0;i<NUM-1;i+)min=i;for(j=i+1;j<NUM;j+)if(aj<amin)temp=aj;aj=amin;ami
7、n=temp;strcpy(temp1,bj); /*strcpy(bj,bmin);strcpy(bmin,temp1);/*直接排序法 */字符串拷貝函數(shù)進(jìn)行字符數(shù)組交換 */牰湩晴尨排序后的學(xué)生姓名和成績?yōu)?:n);for(i=0;i<NUM;i+)printf(%s,%dn,bi,ai);void maopao(int a,char b30) /* 冒泡排序法 */int i,j,temp;char temp130;for(i=0;i<NUM-1;i+)for(j=0;j<NUM-i-1;j+)if(aj>aj+1)temp=aj;aj=aj+1;aj+1=te
8、mp;strcpy(temp1,bj);strcpy(bj,bj+1);strcpy(bj+1,temp1);?牰湩晴尨排序后的學(xué)生姓名和成績?yōu)?n);for(i=0;i<=NUM-1;i+)printf(%s,%dn,bi,ai);void xian1(int a,char b30) /* 線性查找,由姓名查找成績 */ char ch30;int i,flag=0; scanf(%s,ch); for(i=0;i<NUM;i+) if(strcmp(ch,bi)=0) %dn,ai); 牰湩晴尨該學(xué)生成績?yōu)?flag=1;break;if(flag=0)printf(No fo
9、und!n);*/ 由成績查找姓名 void xian2(int a,char b30)/*int i,flag=0;int k;:); 牰湩晴尨請(qǐng)輸入成績 scanf(%d,&k);for(i=0;i<NUM;i+)if(k=ai)抽湩晴尨該學(xué)生姓名為%s成績?yōu)閐n,bi,ai);flag=1;break;if(flag=0)printf(NO found!n);(排序void duifen(int a,char b30)/*對(duì)分查找,由成績查找姓名后)*/int i,n,m,k;牰湩晴尨對(duì)分查找,請(qǐng)輸入成績 :);scanf(%d,&k);n=0;m=NUM-1;if
10、(k<a0)|(k>aNUM-1)printf(error!n);while(n<=m)i=(n+m)/2;if(k=ai) 牰湩晴尨學(xué)生姓名為 :%s, 成績?yōu)?:%dn,bi,ai); break;elseif(k>ai)n=i+1;elsem=i-1; if(ai!=k)|(n>m) printf(NO found!n);主函數(shù)及界面 */void main() /*int x,t,scoreNUM;char nameNUM30;printf(*printf( 歡迎來到學(xué)生成績管理系統(tǒng)n);printf(*牰湩晴尨請(qǐng)輸入 20 個(gè)學(xué)生的姓名和成績 n);in
11、put(score,name);牰湩晴尨輸入的學(xué)生姓名和成績分別為: n);for(x=0;x<NUM;x+)printf(%s,%dt,namex,scorex);printf(scanf(%d,&t);switch(t)/*);printf(* printf(* printf(* printf( while(1)成績排序直接法請(qǐng)按 0 成績排序冒泡法請(qǐng)按 1*n); 姓名查找方法一請(qǐng)按 2 成績查找方法二請(qǐng)按 3*n); 退出系統(tǒng)請(qǐng)按 4 *n); 請(qǐng)選擇 :t);printf(*學(xué)生成績管理系統(tǒng)*n);操作選擇 */case 0: zhijie(score ,n ame);
12、duife n( score ,n ame);break;case 1: maopao(score ,n ame);duife n( score ,n ame);break;?慣敳?抽湩晴尨請(qǐng)輸入學(xué)生姓名:n);xia n1(score ,n ame);break;case 3: xia n2(score ,n ame); break;退出系統(tǒng)*/case 4: exit(O);/*break;?敤慦泠?瀠楲瑮?請(qǐng)?jiān)?到4之間選擇!n);2、運(yùn)行界面輸入學(xué)生信息主菜單直接排序排序后的學(xué)生姓名和成績?yōu)椋篴, 60s &1d,62f F63制£4h,65k, 67KBw70e 7
13、1r,72t 73y,74u,75i,76i,770.78p.7?冒泡排序排序后歯當(dāng)坪舛名和成績?yōu)椋焊?6訶s ,.&1d 62fw,70e,71r,72t734 46 7JB鼻 卻yj,&6 i,76k.67i,771,68o,78Qyt? p,7?線性查找請(qǐng)輸入學(xué)生姓名: 翟學(xué)生成績?yōu)楸Ⅲw會(huì)及收獲1、關(guān)于體會(huì)這次 C 語言課程設(shè)計(jì)給我最大的體會(huì)是充分調(diào)用了我們已有的 C 語言知識(shí)儲(chǔ)備,我想,難度就在于這里,要求我們對(duì) 每一個(gè)知識(shí)點(diǎn),每一個(gè)內(nèi)容板塊都了如指掌。如果有哪里不 清楚,編程時(shí)就會(huì)頻繁出錯(cuò),或者是達(dá)不到想要的結(jié)果,比 如像循環(huán)語句、條件語句、選擇語句這些常用的就必須爛熟 于心。如遇到問題,嘗試獨(dú)立思考,若還沒有解決就再翻書 或找找資料,自行琢磨,不斷嘗試用新的方法解決問題也是 給我的一個(gè)很深的體會(huì)。2、關(guān)于收獲這次有以下幾方面收獲:1 )再次溫習(xí)了所學(xué)的 C 語言知識(shí),加深了理解,同時(shí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2026學(xué)年開封市通許縣三年級(jí)數(shù)學(xué)第一學(xué)期期末試題含解析
- 2025-2026學(xué)年江蘇省南通市海安市白甸鎮(zhèn)數(shù)學(xué)三上期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 2024年湖南省衡陽市數(shù)學(xué)三上期末達(dá)標(biāo)檢測(cè)試題含解析
- 自考行政管理基本知識(shí)試題及答案
- 行政法學(xué)的現(xiàn)實(shí)意義探討試題及答案
- 執(zhí)業(yè)護(hù)士考試變革適應(yīng)能力試題及答案
- 護(hù)理溝通技巧試題及答案分類
- 護(hù)士職業(yè)發(fā)展試題及答案建議
- 行政決策中的數(shù)據(jù)化應(yīng)用實(shí)例的試題及答案
- 自考行政管理多元化管理試題及答案
- 大排檔創(chuàng)業(yè)項(xiàng)目策劃
- 外賣平臺(tái)的商家入駐合作協(xié)議
- 煤礦面試筆試試題及答案
- 2025民法典婚姻家庭編司法解釋二解讀
- 殯葬考試面試題及答案
- 2025年鉗工(技師)職業(yè)技能鑒定理論考試題庫(含答案)
- 二年級(jí)數(shù)學(xué)北師大版下冊(cè)第七單元《淘氣的作息時(shí)間》教學(xué)設(shè)計(jì)教案1
- 項(xiàng)目進(jìn)度跟進(jìn)及完成情況匯報(bào)總結(jié)報(bào)告
- DBJ50- T-445-2023建筑邊坡工程監(jiān)測(cè)技術(shù)標(biāo)準(zhǔn)
- 藥店稅務(wù)合規(guī)管理制度
- DB61-T+1801-2023水工隧洞外水壓力確定與應(yīng)對(duì)技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論