




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGEPAGE2題目:學(xué)生成績(jī)管理系統(tǒng)學(xué)號(hào):專業(yè):姓名:指導(dǎo)教師:完成日期:2010年7月8日一、目標(biāo)1.進(jìn)一步掌握和利用C語言進(jìn)行程設(shè)計(jì)的能力;2、進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程設(shè)計(jì)的思想和方法;3、初步掌握開發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法;4、學(xué)會(huì)調(diào)試一個(gè)較長(zhǎng)程序的基本方法;5、學(xué)會(huì)利用流程圖或N-S圖表示算法;6、掌握書寫程設(shè)計(jì)開發(fā)文檔的能力(書寫課程設(shè)計(jì)報(bào)告);二、內(nèi)容及功能1、每一條記錄包括一個(gè)學(xué)生的學(xué)號(hào)、姓名、3門成績(jī)、平均成績(jī)。2、輸入功能:可以一次完成無數(shù)條記錄的輸入。3、輸出功能:完成全部學(xué)生記錄的顯示。4、查找功能:完成按姓名查找學(xué)生記錄,并顯示。5、排序功能:按學(xué)生平均成績(jī)進(jìn)行排序。6、有一個(gè)清晰美觀界面來調(diào)用各個(gè)功能三、各功能模塊的算法處理流程及相關(guān)說明整個(gè)系統(tǒng)除了主函數(shù)外,另外還有4個(gè)函數(shù),實(shí)現(xiàn)四大功能:輸入功能、輸出功能、查找功能、排序功能。各個(gè)函數(shù)的詳細(xì)設(shè)計(jì)說明分別如下:1主函數(shù)intmain()主要實(shí)現(xiàn)“功能選擇”的界面,利用switch()語句實(shí)現(xiàn)各函數(shù)的調(diào)用,系統(tǒng)根據(jù)輸入的數(shù)字選項(xiàng)來調(diào)用相應(yīng)的函數(shù)。在這個(gè)界面里有顯示系統(tǒng)的四大功能,根據(jù)每個(gè)功能前面的序號(hào)進(jìn)行選擇。等執(zhí)行完每一個(gè)函數(shù)功能后,按回車鍵回到主界面。流程如圖3.1:2、輸入函數(shù)voidinput(structstudent*p)主要實(shí)現(xiàn)對(duì)學(xué)生信息的輸入,利用dowhile語句實(shí)現(xiàn)對(duì)多個(gè)學(xué)生信息的輸入,用字符y/n來判斷是否繼續(xù)輸入下一個(gè)學(xué)生的信息。如果輸入字符y,則繼續(xù)輸入學(xué)生的信息;如果輸入字符n,則退出輸入界面回到主界面。流程如圖3.2:3、輸出函數(shù)voidshuchu(structstudent*p)主要實(shí)現(xiàn)對(duì)學(xué)生信息的輸出,首先利用flag==0來判斷是否存儲(chǔ)有學(xué)生信息,如果沒有,則輸出“無學(xué)生成績(jī),請(qǐng)先錄入學(xué)生信息“;如果已存在學(xué)生信息,則從主界面進(jìn)入輸出界面,顯示出所有學(xué)生的相關(guān)信息。按回車鍵可返回主界面。流程如圖3.3:4、排序函數(shù)voidaveg(structstudent*p)主要實(shí)現(xiàn)對(duì)學(xué)生成績(jī)的排序,首先利用flag==0來判斷電腦中是否存儲(chǔ)有學(xué)生信息,如果沒有,則輸出“無學(xué)生成績(jī),請(qǐng)先錄入學(xué)生信息“;如果有,則按照選擇排序的方法按平均分由高到低對(duì)所有學(xué)生信息進(jìn)行排序,然后輸出排序后所有學(xué)生的信息。按回車鍵可返回主界面。流程如圖3.4:5、查找函數(shù)voidfind(structstudent*p)主要實(shí)現(xiàn)對(duì)學(xué)生信息的查找,利用for循環(huán)和strcmp函數(shù)來實(shí)現(xiàn)查找功能,利用j>=flag來判斷是否找到該學(xué)生的信息。如果該學(xué)生信息已找到,則輸出該學(xué)生的相關(guān)信息;如果未找到,則輸出"未找到該學(xué)生紀(jì)錄,請(qǐng)核對(duì)后重新查找!"。按回車鍵可返回主界面。流程如圖3.5:主界面主界面1擇2345輸入學(xué)生信息輸出學(xué)生信息按平均分排序查找學(xué)生信息退出系統(tǒng)圖3.1請(qǐng)輸入第%d個(gè)請(qǐng)輸入第%d個(gè)學(xué)生的信息YN返回主界面輸入學(xué)生信息圖3.2輸出學(xué)生信息輸出學(xué)生信息flag==0for循環(huán)無學(xué)生信息輸出學(xué)生信息回車返回主界面圖3.3按平均分排序按平均分排序flag==0選擇排序無學(xué)生信息輸出排序后的學(xué)生信息回車返回主界面圖3.4查找學(xué)生信息查找學(xué)生信息j>=flag輸入學(xué)號(hào)輸出查找到的學(xué)生信息未找到學(xué)生信息回車返回主界面圖3.5四、程序源代碼#include<stdio.h>#include<stdlib.h>#include<string.h>#defineN100/*定義符號(hào)常量,代表學(xué)生人數(shù)最大值*/intflag=0;/*全局變量,用于記錄數(shù)組的當(dāng)前位置*/structstudent/*定義結(jié)構(gòu)體類型,代表學(xué)生信息*/{charname[9];/*學(xué)生姓名*/charnumber[10];/*學(xué)生學(xué)號(hào)*/floatscore[3];/*一個(gè)學(xué)生三門課的成績(jī)*/floatave;/*求平均分*/};voidinput(structstudent*p);/*定義輸入學(xué)生信息函數(shù)*/voidshuchu(structstudent*p);/*定義輸出函數(shù)*/voidaveg(structstudent*p);/*定義按平均分排序函數(shù)*/voidfind(structstudent*p);/*定義查找函數(shù)*//*********************系統(tǒng)界面************************/voidmain(){charbianhao;/*定義局部變量,用于記錄用戶選擇的功能編號(hào)*/structstudentstu[N];/*定義結(jié)構(gòu)體數(shù)組,用于記錄學(xué)生信息*/do/*利用循環(huán)顯示界面*/{system("cls");/*清屏函數(shù)*/printf("\n\n\n");printf("\t\t*************************************\n");printf("\t\t*學(xué)生成績(jī)管理系統(tǒng)*\n");printf("\t\t**\n");printf("\t\t**\n");printf("\t\t*1.輸入學(xué)生信息*\n");printf("\t\t*2.輸出學(xué)生信息*\n");printf("\t\t*3.按平均分排序*\n");printf("\t\t*4.查找學(xué)生信息*\n");printf("\t\t*5.退出*\n");printf("\t\t**\n");printf("\t\t**\n");printf("\t\t*************************************\n");printf("\t\t請(qǐng)輸入功能選擇編號(hào)(1-5):");fflush(stdin);/*清空輸入緩沖區(qū)*/scanf("%c",&bianhao);/*接受用戶選擇的功能編號(hào)*/switch(bianhao)/*輸入不同功能編號(hào)調(diào)用相應(yīng)函數(shù)來完成功能*/{case'1':input(stu);break;/*調(diào)用輸入學(xué)生信息函數(shù),參數(shù)為學(xué)生信息數(shù)組名*/case'2': shuchu(stu);break;/*調(diào)用輸出函數(shù)*/case'3':aveg(stu);break;/*調(diào)用按平均分排序函數(shù),參數(shù)是數(shù)組名*/case'4':find(stu);break;/*調(diào)用按學(xué)號(hào)查找學(xué)生信息函數(shù)*/}}while(bianhao!='5');/*判斷是否退出*/printf("\n\n\t\t謝謝使用\n\n");}/**************************輸入函數(shù)************************/voidinput(structstudent*p)/*定義輸入學(xué)生信息函數(shù)*/{charch;/*用于接收用戶指令*/do/*利用循環(huán),由用戶控制輸入學(xué)生成績(jī)*/{system("cls");printf("\n輸入第%d個(gè)學(xué)生的信息:\n輸入學(xué)號(hào):",flag+1);scanf("%s",p[flag].number);printf("\n輸入姓名:");scanf("%s",p[flag].name);printf("\n輸入數(shù)學(xué)成績(jī):");scanf("%f",&p[flag].score[0]);printf("\n輸入英語成績(jī):");scanf("%f",&p[flag].score[1]);printf("\n輸入C語言成績(jī):");scanf("%f",&p[flag].score[2]);p[flag].ave=(p[flag].score[0]+p[flag].score[1]+p[flag].score[2])/3;printf("總分為:%.1f\n",p[flag].score[0]+p[flag].score[1]+p[flag].score[2]);printf("平均分為:%.1f",p[flag].ave);flag++;/*記錄當(dāng)前輸入的學(xué)生資料的個(gè)數(shù)*/printf("\n是否繼續(xù)輸入(y/n)\n");fflush(stdin);/*清空輸入緩沖區(qū)*/ch=getchar();}while(ch=='y'||ch=='Y');/*判斷用戶指令,是否繼續(xù)輸入*/}/*********************輸出函數(shù)**********************/voidshuchu(structstudent*p)/*輸出學(xué)生信息*/{inti ;/*定義循環(huán)變量i,j*/if(flag==0)/*判斷數(shù)組中學(xué)生成績(jī)是否存在*/printf("無學(xué)生成績(jī),請(qǐng)先錄入學(xué)生信息\n");else{printf("\t學(xué)號(hào)\t姓名\t數(shù)學(xué)\t英語\tC語言\t總分\t平均分\n");for(i=0;i<flag;i++)/*輸出學(xué)生成績(jī)*/printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%2.1f\t%4.1f\t%4.1f\n",p[i].number,p[i].name,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[0]+p[i].score[1]+p[i].score[2],p[i].ave);}printf("\n回車鍵返回主程序\n");fflush(stdin);/*清空輸入緩沖區(qū)*/getchar();}/********************排序函數(shù)************************/voidaveg(structstudent*p)/*定義按平均分排序函數(shù)*/{inti,j,k;/*定義循環(huán)變量i,j,最小數(shù)位置k*/structstudentt;/*定義交換臨時(shí)變量*/if(flag==0)/*判斷數(shù)組中學(xué)生成績(jī)是否存在*/printf("無學(xué)生成績(jī),請(qǐng)先錄入學(xué)生信息\n");else{for(i=0;i<flag-1;i++)/*用選擇法按平均分對(duì)學(xué)生成績(jī)排序*/{k=i;for(j=i+1;j<flag;j++)/*k為p[i]到p[flag-1]中最小數(shù)的位置*/if((p[k].score[0]+p[k].score[1]+p[k].score[2])/3<(p[j].score[0]+p[j].score[1]+p[j].score[2])/3)k=j;if(k!=i)/*如果最小數(shù)不是比較數(shù)列中第一個(gè),對(duì)調(diào)*/{t=p[k];p[k]=p[i];p[i]=t;}}printf("\n按平均分排序:\n\n");printf("\t學(xué)號(hào)\t姓名\t數(shù)學(xué)\t英語\tC語言\t總分\t平均分\t名次\n");for(j=0;j<flag;j++)/*輸出按平均分排序后的學(xué)生成績(jī)和名次*/printf("\t%-6s\t%-4s\t%-6.1f\t%-6.1f\t%2.1f\t%4.1f\t%4.1f\t%-5d\n",p[j].number,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].score[0]+p[j].score[1]+p[j].score[2],p[j].ave,j+1);}printf("\n回車鍵返回主程序\n");fflush(stdin);/*清空輸入緩沖區(qū)*/getchar();}/************************查找函數(shù)*************************/voidfind(structstudent*p)/*定義查找函數(shù)*/{intj;charnumber[10];/*用于接收用戶輸入的學(xué)生學(xué)號(hào)*/system("cls");/*清屏函數(shù)*/printf("\n請(qǐng)輸入學(xué)號(hào):\n");scanf("%s",number);for(j=0;j<flag;j++)/*使用字符串比較函數(shù)查找出符合條件的學(xué)生成績(jī)*/{if(strcmp(number,p[j].number)==0){printf("\n\t學(xué)號(hào)\t姓名\t數(shù)學(xué)\t英語\tC語言\t總分\t平均分\t名次\n");p[j].ave=(p[j].score[0]+p[j].score[1]+p[j].score[2])/3;printf("\t%-4s\t%-6s\t%-6.1f\t%-6.1f\t%-8.1f%-6.1f\t%.1f\t%d\n",p[j].number,p[j].name,p[j].score[0],p[j].score[1],p[j].score[2],p[j].score[0]+p[j].score[1]+p[j].score[2],p[j].ave,j+1);break;}}if(j>=flag)/*如果沒找到,會(huì)從循環(huán)條件退出*/printf("\n未找到該學(xué)生紀(jì)錄,請(qǐng)核對(duì)后重新查找!\n");fflush(stdin);/*清空輸入緩沖區(qū)*/printf("\n回車鍵返回上一功能菜單\n");getchar();}五、心得體會(huì)學(xué)習(xí)這門課程后,我有許多的心得與體會(huì)。下面我就來談一談我上這門課后所得的收獲。經(jīng)過一個(gè)星期的上機(jī)實(shí)踐學(xué)習(xí),使我對(duì)C語言有了更進(jìn)一步的認(rèn)識(shí)和了解,要想學(xué)好它要重在實(shí)踐,要通過不斷的上機(jī)操作才能更好地學(xué)習(xí)它,通過實(shí)踐,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行,經(jīng)常按錯(cuò)字母,通過學(xué)習(xí)也有所改進(jìn);再有對(duì)C語言的一些標(biāo)準(zhǔn)庫函數(shù)不太了解,還有對(duì)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)殖買賣合同范例
- 企業(yè)購(gòu)買二手房合同范例
- 供貨框架協(xié)議合同范例
- loft公寓合同范例
- 便利店進(jìn)貨合同范本
- 臨時(shí)供貨款合同范例
- 基于顯微特征與集成深度學(xué)習(xí)的古陶瓷窯口分類研究
- 研發(fā)投入對(duì)比亞迪創(chuàng)新績(jī)效的影響
- DNA存儲(chǔ)糾錯(cuò)、安全與文件系統(tǒng)研究
- 《合同法》合同范例
- 心衰護(hù)理課件教學(xué)課件
- 基于人工智能的供應(yīng)鏈協(xié)同優(yōu)化平臺(tái)建設(shè)方案
- 《大學(xué)語文》普通高等院校語文課程完整全套教學(xué)課件
- 預(yù)防校園欺凌主題班會(huì)課件(共36張課件)
- 伸縮臂式22m高空作業(yè)車安全操作規(guī)程
- 全國(guó)國(guó)家版圖知識(shí)競(jìng)賽題庫及答案(中小學(xué)組)
- 顧客滿意度調(diào)查分析報(bào)告表
- 《托育服務(wù)政策法規(guī)與職業(yè)倫理》全套教學(xué)課件
- 湖北省武漢市實(shí)驗(yàn)外國(guó)語學(xué)校小學(xué)部小學(xué)六年級(jí)小升初期末語文試題(含答案)
- 山東省專升本綜合一(機(jī)械設(shè)計(jì)制造及其自動(dòng)化)模擬試卷1(共264題)
- 高職生職業(yè)生涯規(guī)劃與就業(yè)指導(dǎo) 課件全套 崔麗娜 第1-8章 揭開生涯規(guī)劃面紗 走進(jìn)生涯規(guī)劃- 助力職業(yè)發(fā)展 職場(chǎng)適應(yīng)
評(píng)論
0/150
提交評(píng)論