C++程序設計學生成績管理系統(tǒng)--精選文檔_第1頁
C++程序設計學生成績管理系統(tǒng)--精選文檔_第2頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設計題目:學生成績管理 第1章 系統(tǒng)概要1.1 系統(tǒng)介紹 設計一個學生管理系統(tǒng),能夠?qū)崿F(xiàn)學生信息輸入,并對這些信息進行處理并輸出。1.2 基本功能要求 從鍵盤輸入某班級若干個學生的學號、姓名、三門課(語文、數(shù)學、英語)的成績,分別實現(xiàn)如下功能;(1) 統(tǒng)計每個學生的總分和平均分。(2) 按總分由大到小排出名次。(3) 打印出成績在全班平均分以上的學生名單和數(shù)據(jù)信息。(4) 任意輸入一個學號或姓名,能夠查找出該學生在班級中的排名及其考試成績。 本系統(tǒng)是根據(jù)學生成績管理的需要,而建立一個“學生成績管理系統(tǒng)”,以及方便對成績的各項管理操作。本系統(tǒng)能對成績進行輸入和輸出;能按成績對學生進行排序,并

2、顯示學生資料、成績等,不過得以系統(tǒng)輸入學生資料、成績?yōu)榍疤?。能根?jù)學生的姓名或?qū)W號來查詢該學生的資料。- 16 - 第2章 設計思路與算法2.1 程序功能結構圖學生成績管理統(tǒng)設置班級人數(shù)輸入學生信息統(tǒng)計平均分和總分對學生成績排序統(tǒng)計高于班級平均成績學生查找利用學號查找學生利用姓名查找學生利用姓名查找學生打印學生信息主菜單 圖2-1 學生成績管理系統(tǒng)功能圖 2.2 各模塊介紹學生成績管理系統(tǒng)包括七個模塊:輸入學生資料,輸出學生資料,統(tǒng)計總分和平均分,按學生總成績或平均成績排序,打印平均分高于班級平均分的學生信息,按姓名或?qū)W號查找,菜單選擇這七個模塊既相互聯(lián)系又相互獨立。 各模塊功能介紹1)輸入模

3、塊(void setdata(student stu)):主要功能是用來對學生的成績進行輸入。使用該功能可以輸入所有學生的信息、資料等。具體包括學生的班級,學號,姓名,各科成績。2)輸出模塊(void print(student stu,int i)):主要功能是用來對學生的成績進行輸出。在系統(tǒng)已經(jīng)錄入了學生資料成績的前提下,使用該功能可以顯示所有學生的信息、資料等。具體包括學生的班級,學號,姓名,各科成績,總成績和平均成績。3)統(tǒng)計模塊(void count(student stu)):主要功能是用來對學生的成績進行計算。在系統(tǒng)已經(jīng)錄入了學生資料成績的前提下,使用該功能可以計算出每個學生的總

4、成績和平均成績。4)排序模塊(void sort(student stu)):按學生平均成績進行排列模塊塊,此模塊的主要功能是用來對學生的平均成績進行排序,這樣在統(tǒng)計名次是就比較方便。在系統(tǒng)保存學生資料的前提下,使用此功能能快速統(tǒng)計出學生的名次情況。5)打印平均分高于班級平均分的學生信息模塊(void getaverage(student stu)):主要功能是輸出學生平均分高于等于班級平均分的學生信息。6)查找模塊(void search1(student stu,char*a) 按學號查找 void search2(student stu,char*b) 按姓名查找):主要功能是用來查找學

5、生資料,在系統(tǒng)輸入學生資料的前提下,想查找某個學生的資料,我們只要知道他的學號或姓名,輸入學號或姓名后,系統(tǒng)可以幫我們把他的信息輸出。7)菜單模塊(int select1()): 主要功能是用來選擇哪種操作。根據(jù)提示可對學生信息進行處理。 第3章 源程序代碼#include /輸入輸出流的頭文件/* 文件包含命令,strcmp函數(shù)存放在string.h文件中。*/#include /字符串處理的頭文件#includeint n; /設置一個全局變量struct student /聲明學生信息的結構體 char number20; /學生的學號:20個字符長度 char name30; /學生的

6、名字:20個字符長度 char c5; /學生的班級:5個字符長度 double math; /數(shù)學成績 double chinese; /語文成績 double english; /英語成績 double total; /總分 double average; /平均分 int rank; /排名s;void setdata(student stu); /輸入信息void count(student stu); /統(tǒng)計平均分和總分void sort(student stu); /排序void getaverage(student stu); /求出平均分void print(student s

7、tu,int i); /打印輸出void search1(student stu,char*a);/按學號查找void search2(student stu,char*b);/按姓名查找int select1(); /主菜單int select2(); /菜單void main() system(color 1A);/*設置默認的控制臺前顏色。顏色屬性由兩個十六進制數(shù)字指定,第一個為背景,第二個為前景。每個數(shù)字可以是以下任何值之一:0=黑色;1=藍色;2=綠色;3=淺綠色;4=紅色;5=紫色;6=黃色;7=白色;8=灰色;9=淡藍色;,A=淡綠色;B=淡淺綠色;C=淡紅色;D=淡紫色;E=淡

8、黃色;F=亮白色。例如system(color 1A)為背景為藍色,前景為淡綠色,即字體為淡綠色。*/coutendl;couttttt歡迎使用學生管理系統(tǒng)endl;coutendl; extern int n; student *stu; coutn; stu=new studentn; setdata(stu); for(; ;) /實現(xiàn)重復循環(huán)選擇 switch(select1() /調(diào)用菜單選擇函數(shù) case 1: count(stu); cout學號t姓名t班級t語文:t 數(shù)學:t英語: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); /實現(xiàn)按總分排序打印 break; case 3: getaverage(stu); /實現(xiàn)成績在平均分以上的打印 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再見!謝謝您的使用。n; return; void setdata(student stu) /輸入學生的數(shù)據(jù) for(int i=0;in;i+) cout下面輸入第i+1位同學的數(shù)據(jù):endl; coutstui.number; ; coutstui.c; coutstui.chinese; coutstui.math; coutstui.english; /*打印學生信息*/void print(student stu,int i) /打印 cout學號t姓名t班級t

11、語文:t 數(shù)學:t英語:t總分:t平均分:t排名:endl; tstui.ct stui.chinesetstui.mathtstui.englisht stui.totaltstui.averagetstui.rankendl;/*計算總分和平均分*/void count(student stu) for(int i=0;in;i+) stui.total=stui.math+stui.chinese+stui.english;/計算一個總分,記錄在tatal里面 stui.average=stui.total/3; /計算一個平均分,記錄在

12、average里面 /*利用冒泡法對學生的成績排序,并得出排名。*/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; /設置排名/*打印成績高于等于班級平均成績的學生信息。*/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);/*通過學號查找學生信息。*/void search1(student stu,char*a) sort(stu); for(int i=0;in;i+) if(strcmp(stui.number,a)=0)/*Strcmp()函數(shù)簡介;原型:extern int strcmp(const char *s1,const char * s2);所在頭文件:string.h功能:比較字符串s1和s2。一般形式:strcmp(字符串

14、1,字符串2)說明:當s1s2時,返回值s2時,返回值0;即:兩個字符串自左向右逐個字符相比(按ASCII值大小相比較),直到出現(xiàn)不同的字符或遇0為止。如:AA computercompare特別注意:strcmp(const char *s1,const char * s2)這里面只能比較字符串,不能比較數(shù)字等其他形式的參數(shù)。詳細C+程序設計p83。*/ print(stu,i); break; else if(i=n-1) cout您輸入的學號不存在endl; /*通過學生姓名查找學生信息。*/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)計平均分和總分n; coutt2.按成績排序n; coutt3.平均分以上的打印n; coutt4.查找學生信息n; coutt5.再見n; coutcn ; if(cn6) coutt輸入錯誤,重選1-5:n; coutt; else break; return cn; /*選擇菜單,選擇通過學號查找還是姓名查找。*/int select2() i

16、nt cn; coutt1.按學號查找n; coutt2.按姓名查找n; coutcn ; if(cn2) coutt輸入錯誤,重選:n; coutt; else break; return cn; 第4章 運行結果及分析 圖4-1 進入時的界面,動態(tài)設置班級人數(shù) 圖4-2 輸入學生信息,班級人數(shù)為3人 圖4-3 命令1,統(tǒng)計各個學生的總分及其平均分 圖4-4 命令2,對學生成績進行排序并打印 圖4-5 命令3,打印成績高于班級平均成績的學生信息 圖4-6 命令菜單4,查找菜單,可采用學號和姓名查找學生信息 圖4-7 利用學號查找學生信息 圖4-8 利用姓名查找學生信息 圖4-9 輸入信息錯誤

17、提示,不存在學生學號或姓名需重新輸入。 圖4-10 輸入命令錯誤提示。 圖4-11 結束操作 圖4-12 程序總界面(1) 圖1-12 程序總界面(2)第5章 心得體會 在程序的編寫過程中,我充分體會了“細節(jié)決定成敗”這句話的內(nèi)涵,因為每一個細微的細節(jié)都必須十分的注意。如果稍有不慎,就會全盤皆“輸”。而且往往很多時候,自己覺得程序非常正確,但是就是通不過,在查找錯誤的過程中,開始否認自己的過程,非常的難受。 剛開始看到課題的時候覺得也不是很難,就開始寫了,但是當實際開始寫的過程中卻發(fā)現(xiàn)自己有好多欠缺的地方,知識點沒有完全扎實的掌握,在實踐中逐一凸顯出來了。對于傳址調(diào)用可以采用數(shù)組名作為函數(shù)參數(shù)

18、和指針作為函數(shù)參數(shù)兩種方法,在形參哪兒往往漏寫,導致編譯錯誤。在寫查找函數(shù)時,對于字符串的比較毫無頭緒,在利用循環(huán)比較字符串的各個元素是否相同未果的情況下,內(nèi)心開始失落,崩潰。想著把學號弄成整型的這樣雖然容易解決但內(nèi)心又不甘,在這個地方糾結了好長時間,最后還是“度娘”給了提示,利用strcmp函數(shù)可以輕松的解決這個問題。在開始編寫程序的時候,總希望自己的程序多一些功能,可以更加的完善。但是往往因為急于求成而漏洞百出。對于班級人數(shù)的設置,想動態(tài)的改變,所以類比數(shù)組的動態(tài)設置寫出了結構體的動態(tài)設置,但是忽略了設置一個全局變量n。這個過程曾給我沉重打擊,不過當看到程序沒錯誤能執(zhí)行出來時,心中的喜悅難以用言語來表達。 雖然學生成績管理系統(tǒng)基本實現(xiàn)預定功能,當時它并不止步于此。本系統(tǒng)只能一次性輸入學生信息且不能保存輸入的學生信息,若出現(xiàn)輸入學生信息錯誤和要對學生信息進行刪除,插入等操作時,則需將所有學生信息重新輸入,此操作繁瑣且浪費時間。可增加儲存,插入和刪除功能,實現(xiàn)將各個學生的成績記錄輸入到系統(tǒng)中,并保存到文件,可以查詢以及插入或刪除學生的成績記錄。 通過這次C+課程設計使我深深的體會到了編程的辛苦,特別是當一個程序無法運行而又無計可施時,那種難受實在無法用語言表達,但當為一個程序而絞盡腦汁,在

溫馨提示

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

評論

0/150

提交評論