版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、.C語言課程設(shè)計 設(shè) 計 報 告 制作人: 學號: 指導老師: 時間:.一、設(shè)計內(nèi)容和設(shè)計要求 1、設(shè)計內(nèi)容 題目:學生成績管理系統(tǒng)設(shè)計 該系統(tǒng)包含20個學生姓名和成績信息,可對成績進行排序, 并實現(xiàn)由姓名查找成績及由成績查找姓名。 2、設(shè)計要求 1)由鍵盤輸入20個學生(姓名)的某門課程的學習成 績6099分。 2)將分數(shù)由低到高排序(用直接排序法和冒泡法),并顯示學生姓名和對應(yīng)的分數(shù)。 3) 用線性搜索法檢索某個學生的成績(輸入姓名,顯示成績)。 4 )*對分搜索法檢索某個學生的成績(輸入成績,顯示姓名)。2、 設(shè)計思路 首先是要建立20個學生信息,即學生姓名和學生成績,使用子函數(shù)inpu
2、t輸入,學生成績使用一維數(shù)組,學生姓名使用二維數(shù)組。然后分別定義四個子函數(shù),即直接排序法、冒泡排序法和線性查找法、對分查找法。在兩個排序法中,用字符串拷貝函數(shù)來實現(xiàn)姓名的交換,另外,在用成績查找姓名時,可以用直接查找,也可以用對分查找法,在這里我兩種方法都使用了。最后在主函數(shù)中來設(shè)計人機界面,用switch函數(shù)來實現(xiàn)操作選擇,對應(yīng)的情況中就調(diào)用之前定義的子函數(shù)來完成排序或查找。3、 程序設(shè)計流程圖 1、程序總體流程 開始 輸入學生姓名和成績 主菜單 排序 退出 查找 直接排序 冒泡排序 查找成績 查找姓名 對分查找 2、直接排序法流程圖子程序入口將i賦給min將i+1賦給j scorej與sc
3、oremin交換同時strcp實現(xiàn)namej與namemin交換全部比較完畢,子程序結(jié)束判斷是否交換判斷scorejscorej+1?N,繼續(xù)執(zhí)行YNY4、 線性搜索法NY 子程序結(jié)束 不存在此學生輸出學生姓名和成績 For循環(huán)檢索namei 輸入姓名字符ch 子程序入口判斷namei=ch? 5、對分搜索法k=scoreikscorei (n+m)/2賦給in賦0值,m賦下標最大值 子程序入口 輸入成績k判斷k與scorei的大小關(guān)系子程序結(jié)束 找到,輸出學生成 績和姓名i-1賦給mi+1賦給n 4、 程序設(shè)計中遇到的問題和解決方案最開始編程時,直接排序和冒泡排序法中都是通過swap函數(shù)來實
4、現(xiàn)成績交換和姓名交換,以達到排序目的,但在主函數(shù)中調(diào)用時卻調(diào)用不了,程序在排序時就不能正常運行,我的解決方案就是去掉swap函數(shù),因為有可能有些函數(shù)的調(diào)用有限制條件,這樣改變之后,就不存在限制問題,可以正常排序。另外一個問題就是姓名數(shù)組的交換問題,這個之前是用中間變量的方式實現(xiàn)交換,結(jié)果調(diào)試時顯示非法,于是經(jīng)過多次改變和嘗試,發(fā)現(xiàn)姓名用二維數(shù)組更不容易出現(xiàn)問題,于是就將姓名設(shè)置為二維數(shù)組,然后用字符串拷貝函數(shù)來實現(xiàn)交換,以達到最終排序的目的。這樣解決之后,一方面可以使姓名不至于限制在一個字符內(nèi),另外一個好處就是解決了排序過程中姓名交換的問題。5、 源程序(含注釋)及運行界面1、源程序#incl
5、ude#include#include#define NUM 20void input(int a,char b30) /*子函數(shù)input輸入20個學生姓名*/int i;for(i=0;i99|ai60)printf(error!n); /*成績大于99或小于60則顯示錯誤*/i=i-1;void zhijie(int a,char b30) /*直接排序法*/int i,j,min,temp;char temp130;for(i=0;iNUM-1;i+) min=i; for(j=i+1;jNUM;j+)if(ajamin)temp=aj;aj=amin;amin=temp;strcpy
6、(temp1,bj); /*字符串拷貝函數(shù)進行字符數(shù)組交換*/strcpy(bj,bmin);strcpy(bmin,temp1);printf(排序后的學生姓名和成績?yōu)?n);for(i=0;iNUM;i+)printf(%s,%dn,bi,ai);void maopao(int a,char b30) /*冒泡排序法*/int i,j,temp;char temp130;for(i=0;iNUM-1;i+)for(j=0;jaj+1)temp=aj;aj=aj+1;aj+1=temp;strcpy(temp1,bj);strcpy(bj,bj+1);strcpy(bj+1,temp1);
7、printf(排序后的學生姓名和成績?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;iNUM;i+)if(strcmp(ch,bi)=0)printf(該學生成績?yōu)?dn,ai);flag=1;break;if(flag=0)printf(No found!n);void xian2(int a,char b30) /*由成績查找姓名*/int i,flag=0;int k;p
8、rintf(請輸入成績:);scanf(%d,&k);for(i=0;iNUM;i+)if(k=ai)printf(該學生姓名為%s,成績?yōu)?dn,bi,ai);flag=1;break;if(flag=0)printf(NO found!n);void duifen(int a,char b30) /*對分查找,由成績查找姓名(排序后)*/ int i,n,m,k;printf(對分查找,請輸入成績:);scanf(%d,&k);n=0;m=NUM-1;if(kaNUM-1)printf(error!n);while(nai)n=i+1;elsem=i-1;if(ai!=k)|(nm)pri
9、ntf(NO found!n);void main() /*主函數(shù)及界面*/int x,t,scoreNUM;char nameNUM30;printf(*n);printf( 歡迎來到學生成績管理系統(tǒng) n);printf(*n);printf(請輸入20個學生的姓名和成績n);input(score,name);printf(輸入的學生姓名和成績分別為:n);for(x=0;xNUM;x+)printf(%s,%dt,namex,scorex);printf(n);printf( *學生成績管理系統(tǒng)* n); printf(*成績排序直接法請按0 成績排序冒泡法請按1*n);printf(*
10、姓名查找方法一請按2 成績查找方法二請按3*n);printf(* 退出系統(tǒng)請按4 *n);printf( 請選擇:t);while(1)scanf(%d,&t);switch(t) /*操作選擇*/ case 0: zhijie(score,name); duifen(score,name);break; case 1: maopao(score,name); duifen(score,name);break; case 2: printf(請輸入學生姓名:n); xian1(score,name);break; case 3: xian2(score,name);break; case 4
11、: exit(0); /*退出系統(tǒng)*/ break; default: printf(請在0到4之間選擇!n);2、 運行界面 輸入學生信息 主菜單 直接排序 冒泡排序 線性查找 對分查找 6、 體會及收獲 1、關(guān)于體會這次C語言課程設(shè)計給我最大的體會是充分調(diào)用了 我們已有的C語言知識儲備,我想,難度就在于這里,要求我們對每一個知識點,每一個內(nèi)容板塊都了如指掌。如果有哪里不清楚,編程時就會頻繁出錯,或者是達不到想要的結(jié)果,比如像循環(huán)語句、條件語句、選擇語句這些常用的就必須爛熟于心。如遇到問題,嘗試獨立思考,若還沒有解決就再翻書或找找資料,自行琢磨,不斷嘗試用新的方法解決問題也是給我的一個很深的體會。2、 關(guān)于收獲 這次有以下幾方面收獲: 1)再次溫習了所學的C語言知識,加深了理解,同時之前沒有注意的一些細節(jié)問題引起了重視;2)遇到瓶頸時,
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)村租賃房屋租賃合同續(xù)簽補充協(xié)議
- 二零二五年度員工職務(wù)秘密及保密責任保險合同3篇
- 2025年度和公司簽訂的全新人力資源總監(jiān)勞動合同3篇
- 二零二五年度科技孵化器實驗室租賃合同3篇
- 二零二五年度子女對父母贍養(yǎng)與老年娛樂設(shè)施投資建設(shè)合同3篇
- 二零二五年度高端公寓租賃合同書(含健身房、游泳池)3篇
- 二零二五年度企業(yè)年會現(xiàn)場醫(yī)療服務(wù)及急救保障合同3篇
- 二零二五年度環(huán)保建筑材料研發(fā)與應(yīng)用供貨合同3篇
- 2025年度機井技術(shù)研發(fā)與升級承包合同2篇
- 2025年度消防設(shè)施遠程監(jiān)控與報警系統(tǒng)采購合同3篇
- 2023漢邦高科安防產(chǎn)品技術(shù)參數(shù)和檢測報告
- 急診課件:急性呼吸困難完整版
- 唐詩宋詞鑒賞(第二版)PPT完整全套教學課件
- 超聲診斷學-乳腺超聲診斷
- 管工初賽實操
- 門診病歷書寫模板全
- 2023年房屋租賃管理模板
- 液壓與氣壓傳動中職PPT完整全套教學課件
- 國開大學2023年01月11067《知識產(chǎn)權(quán)法》期末考試答案
- 全部編版四年級語文下生字讀音、音序、偏旁及組詞
- 藥物的不良反應(yīng)
評論
0/150
提交評論