下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)題目:學(xué)生成績(jī)管理 第1章 系統(tǒng)概要1.1 系統(tǒng)介紹 設(shè)計(jì)一個(gè)學(xué)生管理系統(tǒng),能夠?qū)崿F(xiàn)學(xué)生信息輸入,并對(duì)這些信息進(jìn)行處理并輸出。1.2 基本功能要求 從鍵盤(pán)輸入某班級(jí)若干個(gè)學(xué)生的學(xué)號(hào)、姓名、三門(mén)課(語(yǔ)文、數(shù)學(xué)、英語(yǔ))的成績(jī),分別實(shí)現(xiàn)如下功能;(1) 統(tǒng)計(jì)每個(gè)學(xué)生的總分和平均分。(2) 按總分由大到小排出名次。(3) 打印出成績(jī)?cè)谌嗥骄忠陨系膶W(xué)生名單和數(shù)據(jù)信息。(4) 任意輸入一個(gè)學(xué)號(hào)或姓名,能夠查找出該學(xué)生在班級(jí)中的排名及其考試成績(jī)。 本系統(tǒng)是根據(jù)學(xué)生成績(jī)管理的需要,而建立一個(gè)“學(xué)生成績(jī)管理系統(tǒng)”,以及方便對(duì)成績(jī)的各項(xiàng)管理操作。本系統(tǒng)能對(duì)成績(jī)進(jìn)行輸入和輸出;能按成績(jī)對(duì)學(xué)生進(jìn)行排序,并
2、顯示學(xué)生資料、成績(jī)等,不過(guò)得以系統(tǒng)輸入學(xué)生資料、成績(jī)?yōu)榍疤?。能根?jù)學(xué)生的姓名或?qū)W號(hào)來(lái)查詢(xún)?cè)搶W(xué)生的資料。- 16 - 第2章 設(shè)計(jì)思路與算法2.1 程序功能結(jié)構(gòu)圖學(xué)生成績(jī)管理統(tǒng)設(shè)置班級(jí)人數(shù)輸入學(xué)生信息統(tǒng)計(jì)平均分和總分對(duì)學(xué)生成績(jī)排序統(tǒng)計(jì)高于班級(jí)平均成績(jī)學(xué)生查找利用學(xué)號(hào)查找學(xué)生利用姓名查找學(xué)生利用姓名查找學(xué)生打印學(xué)生信息主菜單 圖2-1 學(xué)生成績(jī)管理系統(tǒng)功能圖 2.2 各模塊介紹學(xué)生成績(jī)管理系統(tǒng)包括七個(gè)模塊:輸入學(xué)生資料,輸出學(xué)生資料,統(tǒng)計(jì)總分和平均分,按學(xué)生總成績(jī)或平均成績(jī)排序,打印平均分高于班級(jí)平均分的學(xué)生信息,按姓名或?qū)W號(hào)查找,菜單選擇這七個(gè)模塊既相互聯(lián)系又相互獨(dú)立。 各模塊功能介紹1)輸入模
3、塊(void setdata(student stu)):主要功能是用來(lái)對(duì)學(xué)生的成績(jī)進(jìn)行輸入。使用該功能可以輸入所有學(xué)生的信息、資料等。具體包括學(xué)生的班級(jí),學(xué)號(hào),姓名,各科成績(jī)。2)輸出模塊(void print(student stu,int i)):主要功能是用來(lái)對(duì)學(xué)生的成績(jī)進(jìn)行輸出。在系統(tǒng)已經(jīng)錄入了學(xué)生資料成績(jī)的前提下,使用該功能可以顯示所有學(xué)生的信息、資料等。具體包括學(xué)生的班級(jí),學(xué)號(hào),姓名,各科成績(jī),總成績(jī)和平均成績(jī)。3)統(tǒng)計(jì)模塊(void count(student stu)):主要功能是用來(lái)對(duì)學(xué)生的成績(jī)進(jìn)行計(jì)算。在系統(tǒng)已經(jīng)錄入了學(xué)生資料成績(jī)的前提下,使用該功能可以計(jì)算出每個(gè)學(xué)生的總
4、成績(jī)和平均成績(jī)。4)排序模塊(void sort(student stu)):按學(xué)生平均成績(jī)進(jìn)行排列模塊塊,此模塊的主要功能是用來(lái)對(duì)學(xué)生的平均成績(jī)進(jìn)行排序,這樣在統(tǒng)計(jì)名次是就比較方便。在系統(tǒng)保存學(xué)生資料的前提下,使用此功能能快速統(tǒng)計(jì)出學(xué)生的名次情況。5)打印平均分高于班級(jí)平均分的學(xué)生信息模塊(void getaverage(student stu)):主要功能是輸出學(xué)生平均分高于等于班級(jí)平均分的學(xué)生信息。6)查找模塊(void search1(student stu,char*a) 按學(xué)號(hào)查找 void search2(student stu,char*b) 按姓名查找):主要功能是用來(lái)查找學(xué)
5、生資料,在系統(tǒng)輸入學(xué)生資料的前提下,想查找某個(gè)學(xué)生的資料,我們只要知道他的學(xué)號(hào)或姓名,輸入學(xué)號(hào)或姓名后,系統(tǒng)可以幫我們把他的信息輸出。7)菜單模塊(int select1()): 主要功能是用來(lái)選擇哪種操作。根據(jù)提示可對(duì)學(xué)生信息進(jìn)行處理。 第3章 源程序代碼#include /輸入輸出流的頭文件/* 文件包含命令,strcmp函數(shù)存放在string.h文件中。*/#include /字符串處理的頭文件#includeint n; /設(shè)置一個(gè)全局變量struct student /聲明學(xué)生信息的結(jié)構(gòu)體 char number20; /學(xué)生的學(xué)號(hào):20個(gè)字符長(zhǎng)度 char name30; /學(xué)生的
6、名字:20個(gè)字符長(zhǎng)度 char c5; /學(xué)生的班級(jí):5個(gè)字符長(zhǎng)度 double math; /數(shù)學(xué)成績(jī) double chinese; /語(yǔ)文成績(jī) double english; /英語(yǔ)成績(jī) double total; /總分 double average; /平均分 int rank; /排名s;void setdata(student stu); /輸入信息void count(student stu); /統(tǒng)計(jì)平均分和總分void sort(student stu); /排序void getaverage(student stu); /求出平均分void print(student s
7、tu,int i); /打印輸出void search1(student stu,char*a);/按學(xué)號(hào)查找void search2(student stu,char*b);/按姓名查找int select1(); /主菜單int select2(); /菜單void main() system(color 1A);/*設(shè)置默認(rèn)的控制臺(tái)前顏色。顏色屬性由兩個(gè)十六進(jìn)制數(shù)字指定,第一個(gè)為背景,第二個(gè)為前景。每個(gè)數(shù)字可以是以下任何值之一:0=黑色;1=藍(lán)色;2=綠色;3=淺綠色;4=紅色;5=紫色;6=黃色;7=白色;8=灰色;9=淡藍(lán)色;,A=淡綠色;B=淡淺綠色;C=淡紅色;D=淡紫色;E=淡
8、黃色;F=亮白色。例如system(color 1A)為背景為藍(lán)色,前景為淡綠色,即字體為淡綠色。*/coutendl;couttttt歡迎使用學(xué)生管理系統(tǒng)endl;coutendl; extern int n; student *stu; coutn; stu=new studentn; setdata(stu); for(; ;) /實(shí)現(xiàn)重復(fù)循環(huán)選擇 switch(select1() /調(diào)用菜單選擇函數(shù) case 1: count(stu); cout學(xué)號(hào)t姓名t班級(jí)t語(yǔ)文:t 數(shù)學(xué):t英語(yǔ):t總分:t平均分:endl; for(int i=0;in;i+) coutstui.number
9、tstui.ct stui.chinesetstui.mathtstui.englisht stui.totaltstui.averageendl; break; case 2: sort(stu); for(int m=0;mn;m+) print(stu,m); /實(shí)現(xiàn)按總分排序打印 break; case 3: getaverage(stu); /實(shí)現(xiàn)成績(jī)?cè)谄骄忠陨系拇蛴?break; case 4: switch(select2() case 1:char a20; couta; search1(stu,a); break; case 2:char b20; co
10、utb; search2(stu,b); break; break; case 5: coutt再見(jiàn)!謝謝您的使用。n; return; void setdata(student stu) /輸入學(xué)生的數(shù)據(jù) for(int i=0;in;i+) cout下面輸入第i+1位同學(xué)的數(shù)據(jù):endl; coutstui.number; ; coutstui.c; coutstui.chinese; coutstui.math; coutstui.english; /*打印學(xué)生信息*/void print(student stu,int i) /打印 cout學(xué)號(hào)t姓名t班級(jí)t
11、語(yǔ)文:t 數(shù)學(xué):t英語(yǔ):t總分:t平均分:t排名:endl; tstui.ct stui.chinesetstui.mathtstui.englisht stui.totaltstui.averagetstui.rankendl;/*計(jì)算總分和平均分*/void count(student stu) for(int i=0;in;i+) stui.total=stui.math+stui.chinese+stui.english;/計(jì)算一個(gè)總分,記錄在tatal里面 stui.average=stui.total/3; /計(jì)算一個(gè)平均分,記錄在
12、average里面 /*利用冒泡法對(duì)學(xué)生的成績(jī)排序,并得出排名。*/void sort(student stu)/冒泡法排序 count(stu); for(int i=0;in;i+) for(int j=0;jn-1-i;j+) if(stuj.totalstuj+1.total) s=stuj; stuj=stuj+1; stuj+1=s; for(int k=0;kn;k+) stuk.rank=k+1; /設(shè)置排名/*打印成績(jī)高于等于班級(jí)平均成績(jī)的學(xué)生信息。*/void getaverage(student stu) sort(stu); double a; double sum=0
13、; for(int i=0;in;i+) sum=sum+stui.average; a=(sum/n); for(int j=0;j=a) print(stu,j);/*通過(guò)學(xué)號(hào)查找學(xué)生信息。*/void search1(student stu,char*a) sort(stu); for(int i=0;in;i+) if(strcmp(stui.number,a)=0)/*Strcmp()函數(shù)簡(jiǎn)介;原型:extern int strcmp(const char *s1,const char * s2);所在頭文件:string.h功能:比較字符串s1和s2。一般形式:strcmp(字符串
14、1,字符串2)說(shuō)明:當(dāng)s1s2時(shí),返回值s2時(shí),返回值0;即:兩個(gè)字符串自左向右逐個(gè)字符相比(按ASCII值大小相比較),直到出現(xiàn)不同的字符或遇0為止。如:AA computercompare特別注意:strcmp(const char *s1,const char * s2)這里面只能比較字符串,不能比較數(shù)字等其他形式的參數(shù)。詳細(xì)C+程序設(shè)計(jì)p83。*/ print(stu,i); break; else if(i=n-1) cout您輸入的學(xué)號(hào)不存在endl; /*通過(guò)學(xué)生姓名查找學(xué)生信息。*/void search2(student stu,char*b) for(int i=0;in;
15、i+) if(strcmp(,b)=0) print(stu,i); break; else if(i=n-1) cout您輸入的姓名不存在endl; /*選擇菜單。*/int select1() int cn; coutt1.統(tǒng)計(jì)平均分和總分n; coutt2.按成績(jī)排序n; coutt3.平均分以上的打印n; coutt4.查找學(xué)生信息n; coutt5.再見(jiàn)n; coutcn ; if(cn6) coutt輸入錯(cuò)誤,重選1-5:n; coutt; else break; return cn; /*選擇菜單,選擇通過(guò)學(xué)號(hào)查找還是姓名查找。*/int select2() i
16、nt cn; coutt1.按學(xué)號(hào)查找n; coutt2.按姓名查找n; coutcn ; if(cn2) coutt輸入錯(cuò)誤,重選:n; coutt; else break; return cn; 第4章 運(yùn)行結(jié)果及分析 圖4-1 進(jìn)入時(shí)的界面,動(dòng)態(tài)設(shè)置班級(jí)人數(shù) 圖4-2 輸入學(xué)生信息,班級(jí)人數(shù)為3人 圖4-3 命令1,統(tǒng)計(jì)各個(gè)學(xué)生的總分及其平均分 圖4-4 命令2,對(duì)學(xué)生成績(jī)進(jìn)行排序并打印 圖4-5 命令3,打印成績(jī)高于班級(jí)平均成績(jī)的學(xué)生信息 圖4-6 命令菜單4,查找菜單,可采用學(xué)號(hào)和姓名查找學(xué)生信息 圖4-7 利用學(xué)號(hào)查找學(xué)生信息 圖4-8 利用姓名查找學(xué)生信息 圖4-9 輸入信息錯(cuò)誤
17、提示,不存在學(xué)生學(xué)號(hào)或姓名需重新輸入。 圖4-10 輸入命令錯(cuò)誤提示。 圖4-11 結(jié)束操作 圖4-12 程序總界面(1) 圖1-12 程序總界面(2)第5章 心得體會(huì) 在程序的編寫(xiě)過(guò)程中,我充分體會(huì)了“細(xì)節(jié)決定成敗”這句話的內(nèi)涵,因?yàn)槊恳粋€(gè)細(xì)微的細(xì)節(jié)都必須十分的注意。如果稍有不慎,就會(huì)全盤(pán)皆“輸”。而且往往很多時(shí)候,自己覺(jué)得程序非常正確,但是就是通不過(guò),在查找錯(cuò)誤的過(guò)程中,開(kāi)始否認(rèn)自己的過(guò)程,非常的難受。 剛開(kāi)始看到課題的時(shí)候覺(jué)得也不是很難,就開(kāi)始寫(xiě)了,但是當(dāng)實(shí)際開(kāi)始寫(xiě)的過(guò)程中卻發(fā)現(xiàn)自己有好多欠缺的地方,知識(shí)點(diǎn)沒(méi)有完全扎實(shí)的掌握,在實(shí)踐中逐一凸顯出來(lái)了。對(duì)于傳址調(diào)用可以采用數(shù)組名作為函數(shù)參數(shù)
18、和指針作為函數(shù)參數(shù)兩種方法,在形參哪兒往往漏寫(xiě),導(dǎo)致編譯錯(cuò)誤。在寫(xiě)查找函數(shù)時(shí),對(duì)于字符串的比較毫無(wú)頭緒,在利用循環(huán)比較字符串的各個(gè)元素是否相同未果的情況下,內(nèi)心開(kāi)始失落,崩潰。想著把學(xué)號(hào)弄成整型的這樣雖然容易解決但內(nèi)心又不甘,在這個(gè)地方糾結(jié)了好長(zhǎng)時(shí)間,最后還是“度娘”給了提示,利用strcmp函數(shù)可以輕松的解決這個(gè)問(wèn)題。在開(kāi)始編寫(xiě)程序的時(shí)候,總希望自己的程序多一些功能,可以更加的完善。但是往往因?yàn)榧庇谇蟪啥┒窗俪?。?duì)于班級(jí)人數(shù)的設(shè)置,想動(dòng)態(tài)的改變,所以類(lèi)比數(shù)組的動(dòng)態(tài)設(shè)置寫(xiě)出了結(jié)構(gòu)體的動(dòng)態(tài)設(shè)置,但是忽略了設(shè)置一個(gè)全局變量n。這個(gè)過(guò)程曾給我沉重打擊,不過(guò)當(dāng)看到程序沒(méi)錯(cuò)誤能執(zhí)行出來(lái)時(shí),心中的喜悅難以用言語(yǔ)來(lái)表達(dá)。 雖然學(xué)生成績(jī)管理系統(tǒng)基本實(shí)現(xiàn)預(yù)定功能,當(dāng)時(shí)它并不止步于此。本系統(tǒng)只能一次性輸入學(xué)生信息且不能保存輸入的學(xué)生信息,若出現(xiàn)輸入學(xué)生信息錯(cuò)誤和要對(duì)學(xué)生信息進(jìn)行刪除,插入等操作時(shí),則需將所有學(xué)生信息重新輸入,此操作繁瑣且浪費(fèi)時(shí)間。可增加儲(chǔ)存,插入和刪除功能,實(shí)現(xiàn)將各個(gè)學(xué)生的成績(jī)記錄輸入到系統(tǒng)中,并保存到文件,可以查詢(xún)以及插入或刪除學(xué)生的成績(jī)記錄。 通過(guò)這次C+課程設(shè)計(jì)使我深深的體會(huì)到了編程的辛苦,特別是當(dāng)一個(gè)程序無(wú)法運(yùn)行而又無(wú)計(jì)可施時(shí),那種難受實(shí)在無(wú)法用語(yǔ)言表達(dá),但當(dāng)為一個(gè)程序而絞盡腦汁,在
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《機(jī)電概念設(shè)計(jì)基礎(chǔ)》課件-運(yùn)行時(shí)行為
- 2024外墻保溫材料綠色施工技術(shù)與材料購(gòu)銷(xiāo)合同協(xié)議2篇
- 換簽租賃合同(2篇)
- 2024年版項(xiàng)目管理實(shí)踐之招投標(biāo)策略3篇
- 2024年田土承包與土地整治服務(wù)合同協(xié)議3篇
- 2025年寶雞貨物從業(yè)資格證考試題
- 2025年中衛(wèi)貨運(yùn)從業(yè)資格證試題庫(kù)及答案
- 2025年杭州貨運(yùn)從業(yè)資格證模擬考試0題題庫(kù)
- 2025年福州貨運(yùn)從業(yè)資格證考500試題
- 2025年哈爾濱貨運(yùn)從業(yè)資格考試
- 全冀教版六年級(jí)上冊(cè)英語(yǔ)第四單元知識(shí)點(diǎn)總結(jié)
- 酒店接待醉酒客人流程課件
- PPT基礎(chǔ)教程完整版
- 2023年新版企業(yè)用安全檢查表《工貿(mào)行業(yè)重大事故隱患判定標(biāo)準(zhǔn)和重點(diǎn)檢查事項(xiàng)檢查表》《冶金企業(yè)重大事故隱患摸底表》
- 《平行四邊形的面積》說(shuō)課課件
- (word完整版)使用Photoshop通道摳圖公開(kāi)課教案
- 石油天然氣集團(tuán)公司檔案管理手冊(cè)
- LTE高負(fù)荷小區(qū)的優(yōu)化解決方案
- 注射美容培訓(xùn)課件
- 教育科學(xué)研究方法智慧樹(shù)知到答案章節(jié)測(cè)試2023年延邊大學(xué)
- 中國(guó)肺動(dòng)脈高壓診斷與治療指南(2021版)解讀
評(píng)論
0/150
提交評(píng)論