已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
中 國 地 質 大 學本科生課程論文封面課程名稱 C語言課程設計 教師姓名 本科生姓名 本科生學號 本科生專業(yè) 072114 (機械) 所在院系 機電學院 類別: 日期: 2012年6月25日 目錄課程論文題目程序設計思路功能模塊圖數據結構設計算法設計程序代碼程序運行結果編程中遇到的困難及解決方法總結心得及良好建議致謝一、課程論文題目:學生成績管理系統(tǒng)1:題目要求請設計學生成績管理系統(tǒng),實現學生信息的錄入,顯示,查找,添加,保存,刪除,插入等功能模塊。要求功能選擇用菜單實現,數據輸入和結果輸出要求有文件存放。原始數據文件格式:學號 姓名 英語 C語言 高等數學 平均成績01 張三 75 85 80 8002 李四 2:需求分析根據題目要求,由于學生信息總是存放在文件中,所以應提供文件的輸入,輸出等操作;在程序中需要瀏覽學生的信息,應提供顯示,查找,排序等操作;另外還應提供鍵盤式選擇菜單實現功能選擇。3:總體設計根據上面的需求分析,可以將這個系統(tǒng)的設計分為:數據輸入模塊、數據顯示模塊、數據查找模塊、數據插入模塊、成績排序模塊和成績保存模塊等。二、程序設計思路1、 用戶輸入模塊在此模塊中用戶根據自己的需求輸入數字17中的任意一個數字,實現相應的功能。2、 信息錄入功能模塊此模塊可以讓用戶輸入每個學生的信息:學號、姓名、英語成績、C語言成績、高等數學成績、平均成績。用戶可以連續(xù)輸入學生的信息,或者刪除或者查詢,也可以保存當前已錄入的信息。3、 修改學生成績模塊用戶可以根據實際情況的變化修改已錄入的學生成績的信息,跟實際同步。4、 文件保存模塊用戶可以在確定已錄入的信息無誤之后將學生的信息存為一個數據文件。已保存的信息可以再文件中查看也可以在程序中進行查看。用戶輸入的學生信息可以隨時保存。5、 查詢功能模塊在此模塊里,用戶可以根據提示輸入所想要查詢的學生的學號以查詢學生的信息。6、 刪除功能模塊、在此模塊里,用戶可以根據自己的需求選擇想要刪除的學生信息,選擇之后程序會再次確認,以防誤刪。 7、排序功能模塊 在此模塊中,程序會將用戶已錄入的信息按平均成績由低到高進行排序。 三、功能模塊圖開始x值 1值 2值 7值 6值 5值 4值 3查詢模塊修改退出排序模塊保存模塊刪除模塊添加模塊用戶輸入并將值保存至xx結束四、數據結構設計struct xueshengchengji /*聲明學生成績數據結構體*/char xuehao10; /*學生學號*/char name10; /*學生姓名*/float cyuyan; /*c語言成績*/float math; /*高數成績*/float english; /*英語成績*/ float average; /*平均成績*/;struct xueshengchengji chengji100,*p=chengji; /*聲明記錄學生成績情況的100個元素的結構體數組*/五、算法設計開始選擇需要的功能輸入學生信息結束1、添加模塊void add() printf (t請輸入學生學號:);fflush(stdin); /*清除鍵盤緩沖區(qū)*/gets(chengji+n.xuehao);printf(tttt請輸入學生姓名:);gets();printf(tttt請輸入該學生的英語成績:);scanf(%f,&chengjin.cyuyan);printf(tttt請輸入該學生的C語言成績:);scanf(%f,&chengjin.math);printf(tttt請輸入該學生的高等數學成績:);scanf(%f,&chengjin.english); /*計算總成績*/chengjin.average=(chengjin.cyuyan+chengjin.math+chengjin.english)/3; /*輸出內容*/printf(ntttt該學生成績?yōu)?%f,chengjin.average);printf(nntttt按任意鍵返回.);getch();2、修改模式開始輸入要修改的學生學號輸入新的學生信息結束void modify ( )char xuehao10; /*接收學生學號字符數組*/int i; /*循環(huán)變量*/if (n=-1) /*人數為0說明成績記錄尚未添加*/printf(nntt當前還沒有學生成績記錄,按任意鍵返回主菜單.);getch( );return;printf(t請輸入學生學號:); /*提示信息*/gets(xuehao); /*從鍵盤讀取字符串*/for (i=0;i=n;i+) /*在學生總數范圍內循環(huán)查找*/if(strcmp(chengjii.xuehao,xuehao)=0) /*比較并找到*/*顯示該學生成績情況*/printf(nttt 該學生成績情況如下: );printf(nttt=nn); printf(%-6s%-6s%-9s,學號,姓名,平均成績); printf(%-12s%-6s%12s,英語,C語言,高等數學); printf(%-6s%-6s,chengjii.xuehao,); printf(%9.2f%9.2f%9.2f%9.2f,chengjii.cyuyan,chengjii.math,chengjii.english,chengjii.average);/*接受該學生新的成績情況*/ printf(ntt 請輸入該學生新的英語成績: );scanf (%f,&chengjii.cyuyan); printf(ntt 請輸入該學生新的C語言成績: );scanf (%f,&chengjii.math); printf(ntt 請輸入該學生新的高等數學成績: );scanf (%f,&chengjii.english);3、查詢模塊開始輸入要查詢的學生學號輸出學生信息結束/*查詢學生成績(依據學號)*/void find()char xuehao10; /*接收學生學號字符數組*/ int i; /*循環(huán)變量*/ if(n=-1) /*人數為0說明成績記錄尚未添加*/printf(nntt當前還沒有學生成績,按任意鍵返回主菜單.);getch();return;printf(t請輸入學生學號:); /*提示信息*/gets(xuehao); /*從鍵盤讀取字符串*/for(i=0;i=n;i+) /*在職工總數范圍內循環(huán)查找*/if(strcmp(chengjii.xuehao,xuehao)=0) /*比較并找到*/printf(n 該學生成績情況如下:); printf(n=nn);printf(%-6s%-6s%,學號,姓名);printf(%-12s%-6s%12s%9sn,英語,C語言,高等數學,平均成績);printf(%-6s%-6s%,chengjii.xuehao,);printf(%9.2f%9.2f%9.2f%9.2f,chengjii.cyuyan,chengjii.math,chengjii.english,chengjii.average);printf(n 按任意鍵返回主菜單.);getch();break;if(i=n+1)printf(ntt您所輸入的學生學號有誤或不存在!);printf(按任意鍵返回主菜單.);getch();return;4、刪除模塊輸入要刪除學生學號開始判斷是否要刪除刪除學生記錄結束語NYvoid del()char xuehao10; int i,j; char d; printf(t請輸入待刪除學生學號:);gets(xuehao);for(i=0;i=n;i+) if(strcmp(chengjii.xuehao,xuehao)=0)printf(ntt你確認要刪除%s號學生成績信息么(y/n)?,chengjii.xuehao );d=getche();if(d=y|d=Y) if(i=n) n-;else for(j=i;j=n;j+) strcpy(chengjij.xuehao,chengjij+1.xuehao);strcpy(,chengjij+1.name);chengjij.english=chengjij+1.english;chengjij.math=chengjij+1.math; chengjij.cyuyan=chengjij+1.cyuyan; n-;printf(nntt該學生記錄成功刪除,按任意鍵返回主菜單.);getch();break; else printf(nntt你選擇了不刪除該學生記錄,按任意鍵返回主菜單.);getch();return;if(i = n+1) printf(ntt本班級無此學號,按任意鍵返回主菜單.);getch();5、排序模塊開始選擇需要的功能按成績低到高排序結束void rank() int i,j; printf(t按平均成績排序如下n);for (i=0;in;i+)for(j=i+1;jchengji j.average)*p=chengjij;chengjij=chengjii;chengjii=*p;printf(%-6s%-6s,學號,姓名); printf(%-12s%-6s%12s%-9sn,英語,C語言,高等數學,平均成績);for(i=0;i=n;i+) printf(%-6s%-6s,chengjii.xuehao,); printf(%9.2f%9.2f%9.2f%9.2fn,chengjii.cyuyan,chengjii.math,chengjii.english,chengjii.average); printf(nntttt按任意鍵返回.); getch();六、程序代碼個#include /*基本的輸入輸出函數*/#include /*getch()及getche()函數包含在此*/#include /*字符串相關函數*/#include /*sleep()函數包含在此*/#define TRUE 1/*以下函數為自定義函數聲明語句*/void read(); /*從數據文件中讀取學生成績數據*/void write(); /*想學生成績數據文件寫入記錄*/void find(); /*查詢學生成績數據記錄*/void modify(); /*修改學生成績數據記錄*/void add(); /*向學生成績數據文件中增加記錄*/void del(); /*從學生成績數據文件中刪除記錄*/void rank(); /*排列學生成績*/struct xueshengchengji /*聲明學生成績數據結構體*/char xuehao10; /*學生學號*/char name10; /*學生姓名*/float cyuyan; /*c語言成績*/float math; /*高數成績*/float english; /*英語成績*/ float average; /*平均成績*/;struct xueshengchengji chengji100,*p=chengji; /*聲明記錄學生成績情況的100個元素的結構體數組*/int n = -1; /*聲明統(tǒng)計學生人數的變量(全局)*/void main() char ch; read(); /*從數據文件中讀取學生成績數據并初始化學生成績結構體數組*/ while(TRUE) system(cls); /*清屏命令*/ printf(nntt 歡迎使用學生成績管理系統(tǒng) nnn); printf(tt請選擇(1-7):n); printf(tt=n); printf(ttt 1.查詢學生成績記錄n); printf(ttt 2.修改學生成績記錄n); printf(ttt 3.添加學生成績記錄n); printf(ttt 4.刪除學生成績記錄n); printf(ttt 5.保存學生成績記錄n); printf(ttt 6.成績排序n); printf(ttt 7.退出n); printf(tt=n); printf(ntt); ch=getch(); switch(ch) case 1: find(); break; /*查詢*/ case 2: modify(); break; /*修改*/ case 3: add(); break; /*添加*/ case 4: del(); break; /*刪除*/ case 5: write(); break; /*保存*/ case 6: rank(); break; /*排序*/ case 7: return; /*退出*/ default: printf(tt n); getch(); return; /*從數據文件cj.dat中讀取學生成績數據到數據組chengji中*/void read()FILE * file; /*聲明文件指針*/if(file=fopen(cj.dat,rb)=NULL) /*以二進制方式打開學生成績數據文件,并判斷是否失敗*/printf(nnt 學生成績數據文件無法打開,或為空!);printf(nnt 按任意鍵進入主菜單.);getch();return;else /*文件打開成功時*/n+; /*計算結構體數組下標*/while(fread(&chengjin,sizeof(chengjin),1,file) = 1)n+;fclose(file); /*關閉文件指針*/printf(nnt學生成績數據讀取完畢,共有%d人! n,n);printf(nt5秒后繼續(xù). n,n);n-; /*計算學生記錄總數*/Sleep(5000); /*延時5分鐘*/ /*向學生成績數據文件中寫入記錄*/void write()FILE *file; /*聲明文件指針*/if(n = -1) /*學生人數為 0 時*/printf( 沒有數據可存!按任意鍵返回主菜單 n);getch();return;if(file=fopen(cj.dat,wb)!=NULL) /*以二進制方式打開學生成績數據文件,并判斷是否失敗*/fwrite(&chengji0,sizeof(chengji0),n+1,file); /*所有記錄一次寫入文件*/fclose(file); /*關閉文件指針*/printf(nntt%d條學生記錄保存完畢!n,n+1); else /*文件打開不成功時*/printf(tt無法打開學生成績數據文件!n);printf(ntt按任意鍵返回主菜單. );getch();/*查詢學生成績(依據學號)*/void find()char xuehao10; /*接收學生學號字符數組*/ int i; /*循環(huán)變量*/ if(n=-1) /*人數為0說明成績記錄尚未添加*/printf(nntt當前還沒有學生成績,按任意鍵返回主菜單.);getch();return;printf(t請輸入學生學號:); /*提示信息*/gets(xuehao); /*從鍵盤讀取字符串*/for(i=0;i=n;i+) /*在職工總數范圍內循環(huán)查找*/if(strcmp(chengjii.xuehao,xuehao)=0) /*比較并找到*/printf(n 該學生成績情況如下:); printf(n=nn);printf(%-6s%-6s%,學號,姓名);printf(%-12s%-6s%12s%9sn,英語,C語言,高等數學,平均成績);printf(%-6s%-6s%,chengjii.xuehao,);printf(%9.2f%9.2f%9.2f%9.2f,chengjii.cyuyan,chengjii.math,chengjii.english,chengjii.average);printf(n 按任意鍵返回主菜單.);getch();break;if(i=n+1)printf(ntt您所輸入的學生學號有誤或不存在!);printf(按任意鍵返回主菜單.);getch();return;void list()int i;system(cls);printf(nnttt 全體學生成績情況如下n);printf(ttt=nn);printf(%-6s%-6s%-9s,學號,姓名,平均成績);printf(%-12s%-6s%12sn,英語,C語言,高等數學); for(i=0;i=n;i+)printf(%-6s%-6s%8.2f,chengjii.xuehao,,chengjii.average); printf(%9.2f%9.2f%9.2f,chengjii.english,chengjii.math);void modify ( )char xuehao10; /*接收學生學號字符數組*/int i; /*循環(huán)變量*/if (n=-1) /*人數為0說明成績記錄尚未添加*/printf(nntt當前還沒有學生成績記錄,按任意鍵返回主菜單.);getch( );return;printf(t請輸入學生學號:); /*提示信息*/gets(xuehao); /*從鍵盤讀取字符串*/for (i=0;i=n;i+) /*在學生總數范圍內循環(huán)查找*/if(strcmp(chengjii.xuehao,xuehao)=0) /*比較并找到*/*顯示該學生成績情況*/printf(nttt 該學生成績情況如下: );printf(nttt=nn); printf(%-6s%-6s%-9s,學號,姓名,平均成績); printf(%-12s%-6s%12s,英語,C語言,高等數學); printf(%-6s%-6s,chengjii.xuehao,); printf(%9.2f%9.2f%9.2f%9.2f,chengjii.cyuyan,chengjii.math,chengjii.english,chengjii.average);/*接受該學生新的成績情況*/ printf(ntt 請輸入該學生新的英語成績: );scanf (%f,&chengjii.cyuyan); printf(ntt 請輸入該學生新的C語言成績: );scanf (%f,&chengjii.math); printf(ntt 請輸入該學生新的高等數學成績: );scanf (%f,&chengjii.english);/*計算總成績*/chengjii.average=(chengjii.cyuyan+chengjii.math+chengjii.english)/3;/*同屏顯示計算結果*/ printf(nttt 該學生成績是: %f,chengjii.average);printf(nntt 該學生成績數據修改成功! 按任意鍵返回主菜單.);getch();return ;printf(ntt 您所輸入的學生學號有誤或不存在! );printf(按任意鍵返回主菜單.);getch();return;/*向學生管理系統(tǒng)中則增加記錄*/void add()printf (t請輸入學生學號:);fflush(stdin); /*清除鍵盤緩沖區(qū)*/gets(chengji+n.xuehao);printf(tttt請輸入學生姓名:);gets();printf(tttt請輸入該學生的英語成績:);scanf(%f,&chengjin.cyuyan);printf(tttt請輸入該學生的C語言成績:);scanf(%f,&chengjin.math);printf(tttt請輸入該學生的高等數學成績:);scanf(%f,&chengjin.english); /*計算總成績*/chengjin.average=(chengjin.cyuyan+chengjin.math+chengjin.english)/3; /*輸出內容*/printf(ntttt該學生成績?yōu)?%f,chengjin.average);printf(nntttt按任意鍵返回.);getch();/*從學生成績數據文件中刪除記錄*/void del()char xuehao10; /*接收學生學號字符數組*/int i,j; /*循環(huán)變量*/char d; /*接收確認刪除字符:y/n*/ printf(t請輸入待刪除學生學號:);gets(xuehao);for(i=0;i=n;i+) /*在學生總數范圍內循環(huán)查找*/if(strcmp(chengjii.xuehao,xuehao)=0) /*比較并找到*/printf(ntt你確認要刪除%s號學生成績信息么(y/n)?,chengjii.xuehao );d=getche();if(d=y|d=Y) /*確認刪除*/if(i=n) /*如果是最后一條記錄*/n-;else /*不是最后一條記錄*/for(j=i;j=n;j+) /*從該記錄開始后續(xù)記錄更新前一條記錄*/strcpy(chengjij.xuehao,chengjij+1.xuehao);strcpy(,chengjij+1.name);chengjij.english=chengjij+1.english;chengjij.math=chengjij+1.math; chengjij.cyuyan=chengjij+1.cyuyan; n-;printf(nntt該學生記錄成功刪除,按任意鍵返回主菜單.);getch();break; else /*未確認刪除記錄*/printf(nntt你選擇了不刪除該學生記錄,按任意鍵返回主菜單.);getch();return;if(i = n+1) /*未找到指定學號或未刪除記錄*/printf(ntt本班級無此學號,按任意鍵返回主菜單.);getch();/*排列學生的成績*/void rank() int i,j; /*循環(huán)變量*/ printf(t按平均成績排序如下n);for (i=0;in;i+)for(j=i+1;jchengji j.average)*p=chengjij;chengjij=chengjii;chengjii=*p;printf(%-6s%-6s,學號,姓名); printf(%-12s%-6s%12s%-9sn,英語,C語言,高等數學,平均成績);for(i=0;i=n;i+) printf(%-6s%-6s,chengjii.xuehao,); printf(%9.2f%9.2f%9.2f%9.2fn,chengjii.cyuyan,chengjii.math,chengjii.english,chengjii.average); printf(nntttt按任意鍵返回.); getch();七、程序運行結果1、主菜單 2、添加學生成績記錄3、刪除學生成績記錄4、修改學生成績記錄5、成績排序7、 查詢學生成績記錄八、編程中遇到的困難及解決方法這一次的C語言課程設計報告是我第一次將C語言運用于實際,在這次的實習中,我遇到了很多問題,但最終我都將這些問題解決了,完成了這一次的C語言課程設計的實習。問題1:題目所包含的程序功能太多,自己不能有一個整體的認識,不知道該
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店線上服務平臺建設合同
- 主持人兼職勞務合同范本
- 倉儲運輸合同范文
- 高考數學(理)一輪復習教案:第十三篇 推理證明、算法、復數第2講 直接證明與間接證明
- 2025年濟南道路運輸從業(yè)人員資格考試內容有哪些
- 2025年西安考貨運從業(yè)資格證題庫答案
- 孔隙結構對大氣等離子噴涂熱障涂層沖蝕失效行為的影響
- 2025年滬教版選修4歷史下冊階段測試試卷含答案
- 2025年人教B版高三歷史下冊月考試卷含答案
- 2025年中圖版選修4地理上冊階段測試試卷含答案
- 2023年四川省綿陽市中考初中學業(yè)水平考試語文試題【含答案】
- 正大天虹方矩管鍍鋅方矩管材質書
- 2024年山東魯商集團有限公司招聘筆試參考題庫含答案解析
- 山東省泰安市2022年初中學業(yè)水平考試生物試題
- 受賄案例心得體會
- 人教A版高中數學選擇性必修第一冊第二章直線和圓的方程-經典例題及配套練習題含答案解析
- 圖書館學基礎簡明教程
- 畢業(yè)設計(論文)-液體藥品灌裝機的設計與制造
- 二年級下冊數學教案 -《數一數(二)》 北師大版
- 銀行內部舉報管理規(guī)定
- 平面幾何強化訓練題集:初中分冊數學練習題
評論
0/150
提交評論