學(xué)生成績管理系統(tǒng)C程序設(shè)計(jì)_第1頁
學(xué)生成績管理系統(tǒng)C程序設(shè)計(jì)_第2頁
學(xué)生成績管理系統(tǒng)C程序設(shè)計(jì)_第3頁
學(xué)生成績管理系統(tǒng)C程序設(shè)計(jì)_第4頁
學(xué)生成績管理系統(tǒng)C程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、項(xiàng)目設(shè)計(jì)題目(學(xué)生成績管理系統(tǒng))學(xué)號: 姓名: 自評成績: 成績: 1.選題意義、依據(jù) 學(xué)生成績系統(tǒng)的設(shè)計(jì)從學(xué)生的應(yīng)用中而來,學(xué)生了解該系統(tǒng)的組成和運(yùn)行過程,它貼近學(xué)生的生活能使學(xué)生更加方便的使用各個(gè)語句、函數(shù)、結(jié)構(gòu)體等。 依據(jù)學(xué)生期末成績表的格式。2.系統(tǒng)功能設(shè)計(jì)與分析(功能模塊說明)系統(tǒng)主要用于從一個(gè)文件夾讀入學(xué)生信息(101 張三 85 78 87102 李斯 57 59 60 103 王紅 84 79 87104 趙子龍 72 75 76 105 李洪磊 88 98 89),包括學(xué)生學(xué)號、姓名、成績(數(shù)學(xué)、英語、數(shù)據(jù)庫),程序中引用了八個(gè)函數(shù) void Cscore(int); voi

2、d Rank(int ave); void Listnumber(int i); void Listscore(int i); void Lookup(int); void Alter(int); void Dele(int &i); void Insert(int &i); 系統(tǒng)主要實(shí)現(xiàn)的功能有:查詢、修改、刪除、插入、成績單(以學(xué)號排名)和成績單(以名次排名)。 Cscore 函數(shù)主要是對學(xué)生進(jìn)行排名。具有相同總分的學(xué)生具有相同的名次,例如:第三名和第四名具有相同的總分則在表中不會出現(xiàn)第四名,將出現(xiàn)兩個(gè)第三名緊接著出現(xiàn)第五名學(xué)生的情況。Rank 函數(shù)主要用于按平均分對學(xué)生進(jìn)行備注。把學(xué)生分

3、為四個(gè)等級:90分為excellent,8090分為medium,6080分為qualified,60分為disqualified。Listnumber 函數(shù)主要用于把學(xué)生的信息(學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)據(jù)庫 總分 平均分 名次 備注)以學(xué)號排名的順序用表的形式輸出,方便學(xué)生查看。Listnumber 函數(shù)中還調(diào)用了Cscore 和Rank 函數(shù)。Listscore 函數(shù)是把學(xué)生的信息以總成績排名的形式輸出。Lookup 函數(shù)主要運(yùn)用學(xué)號或姓名形式查詢單個(gè)學(xué)生信息,如果存在則輸出該學(xué)生信息(學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)據(jù)庫 總分 平均分 名次 備注),否則輸出“Input message is

4、 error.”。Alter 函數(shù)是修改指定學(xué)號的學(xué)生信息。主要用于修改指定學(xué)號學(xué)生的各科成績并輸出修改后的學(xué)生信息(學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)據(jù)庫 總分 平均分 名次 備注)。Delete 函數(shù)用于刪除指定學(xué)生的信息。可用兩種方式刪除:以學(xué)號形式刪除學(xué)生信息,以姓名形式刪除學(xué)生信息。若要刪除了學(xué)生不存在則輸出“message error.”。Insert 函數(shù)用來插入學(xué)生的信息,一次調(diào)用Insert 函數(shù)可以添加多個(gè)學(xué)生的信息。Insert 函數(shù)中還調(diào)用了Cscore 和Rank 函數(shù)。3.涉及的主要知識點(diǎn)說明 (1)系統(tǒng)主要運(yùn)用了函數(shù)的聲明、定義、調(diào)用(值調(diào)用和地址調(diào)用)。(2) 對文件的

5、讀入操作。(3) 在平均分的求取上采用四舍五入的方式,運(yùn)用了類型轉(zhuǎn)換。(4) 多次運(yùn)用if和for嵌套,在for嵌套中又運(yùn)用了break語句。(5) 運(yùn)用了switch。(6) 對字符數(shù)組的比較中運(yùn)用了strcmp,還運(yùn)用toupper把小寫字母轉(zhuǎn)換成大寫。(7) 對學(xué)生信息進(jìn)行的插入和有序刪除操作。(8) 運(yùn)用iomanip對輸出進(jìn)行美觀。4. 創(chuàng)新性說明(怎么解決) 創(chuàng)新性:系統(tǒng)可以對具有相同總分學(xué)生的學(xué)生輸出相同的名次。若存在三個(gè)相同的分?jǐn)?shù)都為第二名,則在輸出時(shí)出現(xiàn)三個(gè)第二名不會出現(xiàn)第三、四名,緊接著出現(xiàn)第五名。 解決方法:(1)用一個(gè)數(shù)組記錄具有相同分?jǐn)?shù)的人數(shù),數(shù)組下標(biāo)和學(xué)生信息所具有

6、的下標(biāo)相同;(2)刪除相同的總分只保留其中一個(gè)分?jǐn)?shù);(3)對刪除相同總分的分?jǐn)?shù)按從高到底進(jìn)行排序;(4)對各個(gè)學(xué)生的總分進(jìn)行排名。5. 源代碼/*/Student achievement program/This program has eight functions of students grade,including list/score ranking,lookup,alter,delete,insert and rank.From the file read in/student achievement.Scores of people have the same same plac

7、e./*#include#include#include#include#include#includevoid Cscore(int);void Rank(int ave);void Listnumber(int i);void Listscore(int i);void Lookup(int);void Alter(int);void Dele(int &i);void Insert(int &i);using namespace std;const int MAX=100;struct student /定義學(xué)生信息結(jié)構(gòu)體int num;char name8;int math;int e

8、nglish;int database;int sum;int average;int score;stuMAX;int main() /主函數(shù)int i,k;char ch;string filename;ifstream infile;coutfilename;infile.open(filename.c_str();if (!infile)coutCant open the input file.endl;return 1;for (i=0; stui.mathstui.englishstui.database; stui.sum=stui.math+

9、stui.english+stui.database; stui.average=int(float(stui.sum)/3+0.5);i=i-1; coutendlWelcome to 學(xué)生成績管理系統(tǒng) endl; coutY or N 進(jìn)入菜單欄 ch; ch=toupper(ch); while (ch=Y) coutendl 菜單:endl 1)查 詢endl 2)修 改endl 3)刪 除endl 4)插 入endl 5)成績單(以學(xué)號排名)endl 6)成績單(以名次排名)endl; cout*請選擇 1-4 中任何一個(gè):k; coutendl; switch (k) case 1

10、:Lookup(i);break; case 2:Alter(i);break; case 3:Dele(i);break; case 4:Insert(i);break;case 5:Listnumber(i);break;case 6:Listscore(i);break; default :couterror input!endl; coutendl繼續(xù)選擇 Y or N ?ch; ch=toupper(ch); coutThank you for using!endl Bye bye !endl;infile.close();return 0; /end mainvoid Cscore

11、(int i) /對學(xué)生分?jǐn)?shù)進(jìn)行排名int hMAX,bMAX,scoreMAX+1,n,k,j;int sum0MAX,s;n=i;for (j=0; ji; j+)sum0j=stuj.sum;for (j=0; ji; j+)hj=0;for (k=0; ki; k+)if (sum0j=sum0k)hj+; /具有同一分?jǐn)?shù)的人數(shù) /end for /end forfor (j=0; ji; j+) /刪除多個(gè)同一分?jǐn)?shù)只保留其中一個(gè)分?jǐn)?shù)for(k=j+1; ki; k+)if(sum0j=sum0k)sum0k=sum0i-1;i-;k-; /end forfor (j=0; ji; j

12、+) /按從高到底的順序?qū)偡诌M(jìn)行排名for (k=j+1; ki; k+)if (sum0jsum0k)s=sum0j;sum0j=sum0k;sum0k=s; /end if /end for /end forb0=0;score0=1;for (j=0; ji; j+) /對學(xué)生成績進(jìn)行排名for(k=0; k=90)cout=80)cout=60) coutqualified; else coutdisqualified; coutendl;void Listnumber(int i)int j;Cscore(i);cout學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)據(jù)庫 總分 平均分 名次 備注 en

13、dl;for (j=0; ji; j+) coutsetw(1)stuj.numsetw(9)setw(4)stuj.mathsetw(6)stuj.englishsetw(6)stuj.database;coutsetw(8)stuj.sumsetw(7)stuj.average;coutsetw(7);coutstuj.score ;Rank(stuj.average);void Listscore(int i)int j,k;Cscore(i);cout學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)據(jù)庫 總分 平均分 名次 備注 endl;for (j=1; ji+1; j+)for (k

14、=0; ki; k+)if(stuk.score=j)coutsetw(1)stuk.numsetw(9)setw(4)stuk.mathsetw(6) stuk.englishsetw(6)stuk.database; coutsetw(8)stuk.sumsetw(7)stuk.average; coutsetw(7); coutstuk.score ; Rank(stuk.average);void Lookup(int i) /運(yùn)用學(xué)號或姓名形式查詢單個(gè)學(xué)生信息int j,k,n,numb;char name18; coutPlease select you chec

15、k score ways.endl;cout1 is use number,0 is use name.n;if (n) /以學(xué)號形式查詢學(xué)生信息coutnumb;for (j=0;ji;j+)if (numb=stuj.num)k=j; break;else /以姓名形式查詢學(xué)生信息coutname1;for (j=0;ji;j+)if (strcmp(,name1)=0)k=j;break;if (k=MAX) coutInput message is error.endl;else /如果學(xué)生存在則輸出學(xué)生信息Cscore(i);cout學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)據(jù)庫

16、總分 平均分 名次 備注 endl;coutsetw(1)stuj.numsetw(9)setw(4)stuj.mathsetw(6)stuj.englishsetw(6)stuj.database;coutsetw(8)stuj.sumsetw(7)stuj.average; coutsetw(7);coutstuj.score ;Rank(stuj.average);void Alter(int i) /修改指定學(xué)號的學(xué)生信息int numb,j; coutalter begin.endl; coutnumb; for (j=0;ji;j+) if (numb=stuj.

17、num) coutfind out:endl; cout學(xué)號:stuj.num 姓名:endl; coutPlease input new result: 數(shù)學(xué) 英語 數(shù)據(jù)庫 stuj.mathstuj.englishstuj.database; stuj.sum=stuj.math+stuj.english+stuj.database; stuj.average=int(float(stuj.sum)/3.0+0.5); Cscore(i); /輸出修改后該學(xué)號學(xué)生的信息 cout學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)據(jù)庫 總分 平均分 名次 備注 endl; coutsetw(1)s

18、tuj.numsetw(9)setw(4)stuj.mathsetw(6)stuj.englishsetw(6)stuj.database; coutsetw(8)stuj.sumsetw(7)stuj.average; coutsetw(7); coutstuj.score ; Rank(stuj.average); break; void Dele(int &i) /刪除指定學(xué)生的信息int numb,j,k;char name08;coutdelete begin.endl;coutPlease select:endl; cout 1以學(xué)號形式刪除學(xué)生信息endl;co

19、ut 0以姓名形式刪除學(xué)生信息k;if (k) /以學(xué)號形式刪除學(xué)生的信息coutnumb;for (j=0;ji;j+)if (numb=stuj.num)break;else /以姓名形式刪除學(xué)生的信息coutname0;for (j=0;ji;j+)if (strcmp(name0,)=0)break;if (ji)for(; ji-1; j+)stuj.num=stuj+1.num; strcpy(,stuj+1.name); stuj.math=stuj+1.math; stuj.english=stuj+1.english; stuj.datab

20、ase=stuj+1.database; stuj.sum=stuj+1.sum; stuj.average=stuj+1.average;i=i-1;Cscore(i);elsecoutmessage error.endl;void Insert(int &i) /插入學(xué)生的信息int j,n;coutinsert begin.endl;coutn;i=i+n;coutPlease input insert message.form:endl;cout學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)據(jù)庫 endl;for (j=i-n; stuj.mathstuj.englis

21、hstuj.database; stuj.sum=stuj.math+stuj.english+stuj.database; stuj.average=int(float(stuj.sum)/3.0+0.5);Cscore(i);cout學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)據(jù)庫 總分 平均分 名次 備注 endl;for (j=i-n; ji; j+) coutsetw(1)stuj.numsetw(9)setw(4)stuj.mathsetw(6)stuj.englishsetw(6)stuj.database;coutsetw(8)stuj.sumsetw(7)stuj.avera

22、ge;coutsetw(7);coutstuj.score ;Rank(stuj.average);6. 運(yùn)行結(jié)果與分析運(yùn)行結(jié)果:分析: 系統(tǒng)基本上能實(shí)現(xiàn)對成績的查詢、修改、刪除、插入、成績單(以學(xué)號排名)和成績單(以名次排名)等功能,并且可以插入多個(gè)學(xué)生的信息。但在插入學(xué)生后未不能成績單以學(xué)號排名的形式輸出。為了改進(jìn)程序?qū)nsert 函數(shù)進(jìn)行了一下修改。Insert 函數(shù)代碼如下:void Insert(int &i) /插入學(xué)生的信息int j,k,n,m,first,last,mid;int num0,math0,english0,database0;char name08;coutinsert begin.endl;coutn;m=i+n;first=0;last=i-1;mid=(first+last)/2;coutPlease input insert message.form:endl;cout學(xué)號 姓名 數(shù)學(xué) 英語 數(shù)據(jù)庫 endl;for (j=i; stuj.mathstuj.englishstuj.database;while (first=last)if(stuj.numstumid.num)

溫馨提示

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

最新文檔

評論

0/150

提交評論