學生成績管理系統C語言課程設計報告_第1頁
學生成績管理系統C語言課程設計報告_第2頁
學生成績管理系統C語言課程設計報告_第3頁
學生成績管理系統C語言課程設計報告_第4頁
學生成績管理系統C語言課程設計報告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、.C語言課程設計 設 計 報 告 制作人: 學號: 指導老師: 時間:.一、設計內容和設計要求 1、設計內容 題目:學生成績管理系統設計 該系統包含20個學生姓名和成績信息,可對成績進行排序, 并實現由姓名查找成績及由成績查找姓名。 2、設計要求 1)由鍵盤輸入20個學生(姓名)的某門課程的學習成 績6099分。 2)將分數由低到高排序(用直接排序法和冒泡法),并顯示學生姓名和對應的分數。 3) 用線性搜索法檢索某個學生的成績(輸入姓名,顯示成績)。 4 )*對分搜索法檢索某個學生的成績(輸入成績,顯示姓名)。2、 設計思路 首先是要建立20個學生信息,即學生姓名和學生成績,使用子函數inpu

2、t輸入,學生成績使用一維數組,學生姓名使用二維數組。然后分別定義四個子函數,即直接排序法、冒泡排序法和線性查找法、對分查找法。在兩個排序法中,用字符串拷貝函數來實現姓名的交換,另外,在用成績查找姓名時,可以用直接查找,也可以用對分查找法,在這里我兩種方法都使用了。最后在主函數中來設計人機界面,用switch函數來實現操作選擇,對應的情況中就調用之前定義的子函數來完成排序或查找。3、 程序設計流程圖 1、程序總體流程 開始 輸入學生姓名和成績 主菜單 排序 退出 查找 直接排序 冒泡排序 查找成績 查找姓名 對分查找 2、直接排序法流程圖子程序入口將i賦給min將i+1賦給j scorej與sc

3、oremin交換同時strcp實現namej與namemin交換全部比較完畢,子程序結束判斷是否交換判斷scorejscorej+1?N,繼續(xù)執(zhí)行YNY4、 線性搜索法NY 子程序結束 不存在此學生輸出學生姓名和成績 For循環(huán)檢索namei 輸入姓名字符ch 子程序入口判斷namei=ch? 5、對分搜索法k=scoreikscorei (n+m)/2賦給in賦0值,m賦下標最大值 子程序入口 輸入成績k判斷k與scorei的大小關系子程序結束 找到,輸出學生成 績和姓名i-1賦給mi+1賦給n 4、 程序設計中遇到的問題和解決方案最開始編程時,直接排序和冒泡排序法中都是通過swap函數來實

4、現成績交換和姓名交換,以達到排序目的,但在主函數中調用時卻調用不了,程序在排序時就不能正常運行,我的解決方案就是去掉swap函數,因為有可能有些函數的調用有限制條件,這樣改變之后,就不存在限制問題,可以正常排序。另外一個問題就是姓名數組的交換問題,這個之前是用中間變量的方式實現交換,結果調試時顯示非法,于是經過多次改變和嘗試,發(fā)現姓名用二維數組更不容易出現問題,于是就將姓名設置為二維數組,然后用字符串拷貝函數來實現交換,以達到最終排序的目的。這樣解決之后,一方面可以使姓名不至于限制在一個字符內,另外一個好處就是解決了排序過程中姓名交換的問題。5、 源程序(含注釋)及運行界面1、源程序#incl

5、ude#include#include#define NUM 20void input(int a,char b30) /*子函數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); /*字符串拷貝函數進行字符數組交換*/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() /*主函數及界面*/int x,t,scoreNUM;char nameNUM30;printf(*n);printf( 歡迎來到學生成績管理系統 n);printf(*n);printf(請輸入20個學生的姓名和成績n);input(score,name);printf(輸入的學生姓名和成績分別為:n);for(x=0;xNUM;x+)printf(%s,%dt,namex,scorex);printf(n);printf( *學生成績管理系統* n); printf(*成績排序直接法請按0 成績排序冒泡法請按1*n);printf(*

10、姓名查找方法一請按2 成績查找方法二請按3*n);printf(* 退出系統請按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); /*退出系統*/ break; default: printf(請在0到4之間選擇!n);2、 運行界面 輸入學生信息 主菜單 直接排序 冒泡排序 線性查找 對分查找 6、 體會及收獲 1、關于體會這次C語言課程設計給我最大的體會是充分調用了 我們已有的C語言知識儲備,我想,難度就在于這里,要求我們對每一個知識點,每一個內容板塊都了如指掌。如果有哪里不清楚,編程時就會頻繁出錯,或者是達不到想要的結果,比如像循環(huán)語句、條件語句、選擇語句這些常用的就必須爛熟于心。如遇到問題,嘗試獨立思考,若還沒有解決就再翻書或找找資料,自行琢磨,不斷嘗試用新的方法解決問題也是給我的一個很深的體會。2、 關于收獲 這次有以下幾方面收獲: 1)再次溫習了所學的C語言知識,加深了理解,同時之前沒有注意的一些細節(jié)問題引起了重視;2)遇到瓶頸時,

溫馨提示

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

評論

0/150

提交評論