c語(yǔ)言程序設(shè)計(jì)報(bào)告_第1頁(yè)
c語(yǔ)言程序設(shè)計(jì)報(bào)告_第2頁(yè)
c語(yǔ)言程序設(shè)計(jì)報(bào)告_第3頁(yè)
c語(yǔ)言程序設(shè)計(jì)報(bào)告_第4頁(yè)
c語(yǔ)言程序設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語(yǔ)言課程設(shè)計(jì)報(bào)告題目:成績(jī)管理系統(tǒng)專(zhuān)業(yè)年級(jí):自動(dòng)化一班學(xué)號(hào):姓名:指導(dǎo)教師:葉念渝2015年12月17日1)輸入功能:由鍵盤(pán)輸入 20 個(gè)學(xué)生(姓名)的某門(mén)課程 的學(xué)習(xí)成績(jī) 1099 分(也可超過(guò))。2)運(yùn)算功能:將分?jǐn)?shù)由低到高排序(用直接排序法和冒泡法) ,并 顯示學(xué)生姓名和對(duì)應(yīng)的分?jǐn)?shù)。3)檢索功能:用線性搜索法檢索某個(gè)學(xué)生的成績(jī)(輸入姓名,顯示成績(jī))。4)查詢功能:對(duì)分搜索法檢索某個(gè)學(xué)生的成績(jī)(輸入姓名,顯示成績(jī))。. 設(shè)計(jì)要求(1)可以輸入若干名學(xué)生信息(包括姓名 / 成績(jī)等);(2)在源代碼中將若干名同學(xué)的信息輸出;(3)在源代碼中能夠?qū)⑷舾擅瑢W(xué)的成績(jī)排序(升序 / 降序均可);(

2、4)可以根據(jù)不同的查詢條件 (線性 /對(duì)分搜索) 來(lái)查詢到相關(guān)學(xué)生的 信息;. 設(shè)計(jì)思路首先進(jìn)入軟件界面 ,以菜單為提示的成績(jī)管理系統(tǒng) . 分別建立輸 入學(xué)生信息函數(shù)輸入學(xué)生信息 ,建立排序函數(shù)實(shí)現(xiàn)排序功能 , 建立查 找函數(shù)實(shí)現(xiàn)查找功能 . 通過(guò)建立數(shù)組在函數(shù)運(yùn)行中進(jìn)行同步調(diào)換實(shí)現(xiàn)各信息間分聯(lián)系,達(dá)到信息相對(duì)應(yīng)的目的,在主函數(shù)中分別調(diào)用各功 能函數(shù)完成程序目的.四.程序設(shè)計(jì)流程圖1. 學(xué)生信息輸入函數(shù)重 新 輸 入輸入學(xué)生姓名Scorei>1>1輸入學(xué)生成績(jī)1、no子程序入口請(qǐng)重新輸yes2. 直接排序法流程圖輸入完畢退出子子程序入口Yi=0:I<N-1;I+may 二sc

3、oremax<s輸入完畢退出子max二jI輸出姓名和成績(jī)3. 冒泡排序法流程圖a!輸出姓名和成輸出“查無(wú)此人”N是否繼續(xù)輸入完畢退出子5.對(duì)分搜索法流程圖'子程序入口調(diào)用排序函數(shù)對(duì)a=0; b=n-1a<=bYi=(a+b)/2scorei查找的成績(jī)與J scorescoreia=i-1a=i+1scoreiN輸出查找的人的輸出“無(wú)此成績(jī)”輸入完畢退出子case(1-6)N進(jìn)入相應(yīng)的分函數(shù)界f主程序入口6.主程序T輸入完畢退出五.設(shè)計(jì)及調(diào)劑的過(guò)程中遇到的問(wèn)題和解決方法(1).輸入人的姓名時(shí)為什么要用二維數(shù)組?因?yàn)檩斎肓硕鄠€(gè)人的名字所以我們要建立一個(gè)名字的二維數(shù)組。2). 在

4、輸入函數(shù)中我開(kāi)始用的是 if 語(yǔ)句定義輸入范圍結(jié)果只提示一次錯(cuò)誤。后來(lái)我加了一個(gè) do-while 循環(huán),就可以一直執(zhí)行下去了。(3). 在冒泡排序法中沒(méi)有理解 strcpy 函數(shù)的用法把字符串復(fù)制到字符串中去 了,真正用法是將字符串復(fù)制的字符數(shù)組中去。4). 將直接排序法和冒泡排序法弄混了,平時(shí)直接習(xí)慣有冒泡法,后來(lái)只有 從書(shū)上一步一步的分析其數(shù)值的變化。 終于本質(zhì)上的理解了兩種排序的作用是如 何實(shí)現(xiàn)的。冒泡法是每比較一輪產(chǎn)生一個(gè)最小(大)的數(shù)放在第一個(gè)位置,而直 接排序法是找出數(shù)值最小(大)的小標(biāo)與第一個(gè)調(diào)換。(5) . 在設(shè)計(jì)主函數(shù)時(shí)我用的是 switch 函數(shù)調(diào)用分函數(shù), 在進(jìn)行搜索時(shí)

5、我沒(méi)加循 環(huán)結(jié)果只能查找一個(gè)人的不能進(jìn)行查多個(gè)人和判斷是否能查到此人。 后來(lái)我在搜 索法中加了個(gè) while 循環(huán)問(wèn)題就解決了。6). 在調(diào)試過(guò)程中我遇到的主要問(wèn)題是輸出姓名時(shí)第一個(gè)人的名字輸出不出 來(lái),后來(lái)我一句句的看源程序, 也不知道為什么。 我問(wèn)班上同學(xué)才知道我用的是gets(namei) ;輸入字符串占用了一個(gè)字符所以輸出第一姓名時(shí)名字?jǐn)?shù)輸不出 來(lái),我把它改成 scanf("%s",&namei); 就可以輸出了。從這件事中我明白了 要學(xué)會(huì)多思考即使你是參考書(shū)上的也要每一步弄懂, 不然一個(gè)小的細(xì)節(jié)就會(huì)導(dǎo)致 程序出問(wèn)題,我還是對(duì)這兩種輸入字符串函數(shù)沒(méi)有本質(zhì)的了

6、解。(7).程序有許多小問(wèn)題都是在自己一遍遍調(diào)試下更正了, 比如程序差東西、 有 問(wèn)題等,做好一個(gè)程序編程還是要自己慢慢探索,理解每一個(gè)函數(shù)語(yǔ)句。六心得體會(huì)與感受C 語(yǔ)言課程設(shè)計(jì)總有兩周時(shí)間,在第一次上課老師交給我們?nèi)蝿?wù)不知從何 下手到最后將整套學(xué)生管理系統(tǒng)的程序準(zhǔn)確無(wú)誤的編出來(lái), 對(duì)我來(lái)說(shuō)無(wú)疑又是一 大進(jìn)步,在這段時(shí)間里我遇到了不少的問(wèn)題。 產(chǎn)生了許多的疑問(wèn), 但是隨著自己 的追隨問(wèn)題的根源, 不斷的溫習(xí)書(shū)本上的知識(shí), 反復(fù)進(jìn)行上機(jī)的操作, 思路一步步的清晰起來(lái)了, 所遇到的一些問(wèn)題也逐漸得到就解決, 本不是那么情愿做的程序到因?yàn)榻鉀Q了一些問(wèn)題所產(chǎn)生的成就感反到激起了我興趣。 于是借著心中的

7、 那一股勁, 反復(fù)的程序進(jìn)行摸索, 把以前很多沒(méi)學(xué)好的地方都撿了起來(lái), 還學(xué)會(huì) 了很多新的知識(shí)。 這一切都源于老師對(duì)我們的嚴(yán)格要求, 還有自己的刻苦專(zhuān)研才 有了這樣的成果。 如果老師要求沒(méi)有那么嚴(yán)格, 或者是自己不去努力是做不出來(lái) 學(xué)生管理系統(tǒng)的。在設(shè)計(jì)的過(guò)程中,在我印象中最深刻的挺多的。 冒泡和直接排序法的比較, 在二維數(shù)組的比較時(shí)也遇到了一些問(wèn)題, 主要是對(duì)二維數(shù)組的概念不清楚, 性質(zhì) 不了解,所以在運(yùn)用時(shí)就有一些錯(cuò)誤。 當(dāng)然在設(shè)計(jì)過(guò)程中因?yàn)檩斎敕ǖ腻e(cuò)誤、 函 數(shù)層次不清晰變量名重復(fù)定義, 也花了很多時(shí)間去解決。 所以在這次編程過(guò)程中, 不僅僅只是完成作業(yè)而已, 更多的是要用一種肯專(zhuān)研的學(xué)

8、習(xí)態(tài)度, 養(yǎng)成一個(gè)良好 學(xué)習(xí)習(xí)慣。 作為一個(gè)合格的編程人員不僅僅要有專(zhuān)業(yè)知識(shí), 還要有一個(gè)良好的編 程習(xí)慣和一顆仔細(xì)的心,更需要一種負(fù)責(zé)認(rèn)真編程態(tài)度。七源程序 #include <stdio.h> #include <string.h>#define N 5 void input1(char nameN8,int score)/1. 輸入函數(shù)/學(xué)生信息輸入函數(shù)int i;for(i=0;i<N;i+)printf ("n請(qǐng)輸入第d個(gè)學(xué)生姓名:",i+1);scanf("%s",&namei);printf (&quo

9、t;n請(qǐng)輸入第個(gè)學(xué)生成績(jī):",i+1);scanf("%d",&scorei);do/do-while循環(huán)while(scorei<1|scorei>100) printf(" 輸入有誤 !n");printf(" 請(qǐng)重新輸入成績(jī) :");scanf("%d",&scorei);while(scorei<1|scorei>100);getchar();/字符輸入函數(shù)/2. 成績(jī)排序輸出(直接排序法)void sort1(char nameN8,int score)i

10、nt i,j,max,temp1;char temp2100;for(i=0;i<N-1;i+)max=i;for (j=i+1;j<N;j+) if(scoremax<scorej) max=j;temp1=scorei;scorei=scoremax;scoremax=temp1;strcpy(temp2,namei);/字符串復(fù)制函數(shù)strcpy()strcpy(namei,namemax);strcpy(namemax,temp2);for(i=0;i<N;i+) printf(" 姓名: %10s 成績(jī): %3dn",namei,score

11、i);/3. 成績(jī)排序輸出 ( 冒泡法)void sort2(char nameN8,int score)int i,j,t;char h100;for(j=0;j<N;j+)for(i=0;i<N-j;i+)if(scorei>scorei+1)t=scorei;scorei=scorei+1;scorei+1=t;strcpy(h,namei);strcpy(namei,namei+1);strcpy(namei+1,h);printf("The sorted result:n");for(i=0;i<N;i+) printf(" 姓名

12、: %10s 成績(jī): %3dn",namei,scorei);定義線性/4. 線性搜索法檢索學(xué)生的成績(jī)void search1(char nameN8,int score) /搜索法函數(shù)getchar();int a,i;char b;char str8;while(1)printf(" 請(qǐng)輸入學(xué)生的姓名 :");gets(str);/輸入一段字符串for(i=0;i<N;i+)a=strcmp(str,namei);/strcmp函數(shù)字符串比較函數(shù))if(a=0) break;if(a!=0)printf("查無(wú)此人 !");else

13、if(a=0)printf("姓名:%10s 成績(jī):3dn",namei,scorei);getchar();printf("繼續(xù)查詢嗎 Y/N:");b=getchar();getchar();if(b='y')|(b='Y')continue;elsebreak;/5. 對(duì)分搜索法檢索學(xué)生的成績(jī)void search2(int score,char nameN8)int a,b,c,i;char d;while(1)a=0;b=N-1;printf(" 請(qǐng)輸入學(xué)生成績(jī) :");getchar();w

14、hile(a<=b)i=(a+b)/2;if(scorei=c)break;if(scorei<c)a=i+1;if(scorei>c)b=i-1;if(scorei!=c)printf(" 無(wú)此成績(jī) n");elseprintf("姓名 :%10s 成績(jī): %3dn",namei,scorei);printf(" 繼續(xù)查詢嗎 Y/N:");d=getchar();if(d='y')|(d='Y')continue;elsebreak;void main() int scoreN;ch

15、ar nameN8;學(xué)生成績(jī)管理系int a,b;printf(" *n");printf("*1.輸入學(xué)生 信息*n");printf("*2.直接排序法*n");printf(" *3.冒泡排序法*n");printf(" 直 接 排序法n ");對(duì)分搜索法*n");printf(" * 5.*n");b=1;while(b=1)/while循環(huán)printf(" 請(qǐng)輸入序號(hào):");scanf("%d",&a);pr

16、intf("n");switch(a)/switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)case 1:printf(" 輸入學(xué)生信息 n ");input1(name,score);break;case 2:sort1(name,score);break;case 3:printf(" 冒 泡 排法n ");sort2(name,score);break;case 4:printf(" 線 性 搜法n ");search1(name,score);break;case 5:printf("對(duì)分搜索法n ");search2(score,name);break;case 6:while(0);break;default:printf("1繼續(xù)程序,2結(jié)束程序n");sea nf("%d

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論