0909401-07 周建華 面向?qū)ο笳Z言課程設(shè)計_第1頁
0909401-07 周建華 面向?qū)ο笳Z言課程設(shè)計_第2頁
0909401-07 周建華 面向?qū)ο笳Z言課程設(shè)計_第3頁
0909401-07 周建華 面向?qū)ο笳Z言課程設(shè)計_第4頁
0909401-07 周建華 面向?qū)ο笳Z言課程設(shè)計_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、面向?qū)ο笳Z言程序設(shè)計面向?qū)ο笳Z言程序設(shè)計 課程設(shè)計報告課程設(shè)計報告 設(shè)計題目:設(shè)計題目: 學(xué)生信息管理系統(tǒng)學(xué)生信息管理系統(tǒng) 專專 業(yè):業(yè): 數(shù)學(xué)與應(yīng)用數(shù)學(xué)數(shù)學(xué)與應(yīng)用數(shù)學(xué) 班級學(xué)號:班級學(xué)號: 0909401-07 姓姓 名:名: 周周 建建 華華 指導(dǎo)教師:指導(dǎo)教師: 秦秦 姣姣 華華 成成 績:績: 2011 年年 12 月月 25 日日 目目 錄錄 1 1 設(shè)計目的設(shè)計目的.3 3 2 2 設(shè)計要求設(shè)計要求.3 3 3 3 設(shè)計原理設(shè)計原理.3 3 4 4 設(shè)計內(nèi)容設(shè)計內(nèi)容 .4 4 4. 1 功能描述.4 4. 2 程序流程.5 4.3 設(shè)計步驟.8 4.4 程序調(diào)試.17 4. 5 運(yùn)

2、行結(jié)果.17 4.6 心得體會.19 5 5 總結(jié)總結(jié). .1919 參考文獻(xiàn):.19 學(xué)生信息管理系統(tǒng) 1 1 設(shè)計目的設(shè)計目的 1.通過 C+課程設(shè)計,使學(xué)生能夠?qū)W(xué)到的面向?qū)ο蟮脑O(shè)計思想運(yùn)用在具體的工作和學(xué)習(xí) 中,加深對類和對象的理解,要求學(xué)生對生活中許多具體的事物抽象出類,并掌握繼承和派 生類、基類、虛函數(shù)和多態(tài)的概念。 2、通過這次課程設(shè)計掌握C+語言程序設(shè)計的編程思想,為后續(xù)課程打下基礎(chǔ)。 3、培養(yǎng)我實際操作能力和實踐能力,為以后的工作打下堅實的基礎(chǔ)。. . 2 2 設(shè)計要求設(shè)計要求 利用學(xué)到的編程知識和編程技巧,要求學(xué)生: 1、對系統(tǒng)進(jìn)行功能模塊分析、控制模塊分析正確 2、系統(tǒng)設(shè)

3、計要能完成題目所要求的功能。 3、編程簡練,可用,盡可能的使系統(tǒng)的功能更加完善和全面 4、使用說明書、流程圖要清楚。 5、特別要求自己獨(dú)立完成。 1)程序的內(nèi)容很簡單,分為兩個大的方面: 1.新增學(xué)生信息、刪除學(xué)生信息、導(dǎo)入學(xué)生信息(已經(jīng)保存于的文件信息)主要是負(fù)責(zé)程序的 輸入、刪除、修改等功能。 2.和學(xué)生信息搜索(按姓名) 、學(xué)生信息統(tǒng)計(按專業(yè)或性別或年齡-年齡要自動計算) 、按英 語成績排序、學(xué)生信息保存、最后退出。主要負(fù)責(zé)程序的查詢、統(tǒng)計、排序、顯示等功能。 (2)組長 周建華周建華 負(fù)責(zé) 第 1 方面,組員 何桂芳何桂芳 負(fù)責(zé) 第 2 部分。 3 3 設(shè)計原理設(shè)計原理 有新生來報到

4、,要逐個錄入其信息,如:學(xué)生姓名,性別,專業(yè),出生日期,家庭地址、英語入 學(xué)成績。要求設(shè)計鏈表類來實現(xiàn),并統(tǒng)計學(xué)生人數(shù)。 文本界面為: 1. 新增學(xué)生信息 2. 刪除學(xué)生信息 3. 導(dǎo)入學(xué)生信息(已經(jīng)保存于的文件信息) 4. 學(xué)生信息搜索(按姓名) 5. 學(xué)生信息統(tǒng)計(按專業(yè)或性別或年齡-年齡要自動計算) 6. 按英語成績排序 7. 學(xué)生信息保存 8.退出 4 設(shè)計內(nèi)容設(shè)計內(nèi)容 (1)總體結(jié)構(gòu)我們采取模塊化方式進(jìn)行程序設(shè)計,要求程序的功能設(shè)計、數(shù)據(jù)結(jié)構(gòu)設(shè)計及整體 結(jié)構(gòu)設(shè)計合理。也可根據(jù)自己的理解增加新的功能模塊。 (2)系統(tǒng)以菜單界面方式(至少采用文本菜單界面,如能采用圖形菜單界面更好)工作,

5、運(yùn)行界 面友好,演示程序以用戶和計算機(jī)的對話方式進(jìn)行 (3)每一條記錄包括一個學(xué)生的姓名、性別、專業(yè)、出生日期、家庭住址、英語成績。同時 ,應(yīng)具備以下功能: 1、輸入功能:一次可以完成自定義學(xué)生人數(shù)的學(xué)生信息記錄的輸入。 2、刪除功能:對指定學(xué)生的信息進(jìn)行刪除。 3、修改功能:對指定學(xué)生的信息進(jìn)行修改。 4、查詢功能:選擇某種方式并輸入該信息查詢符合條件的學(xué)生信息。 5、統(tǒng)計功能:對某幾個專業(yè)的人數(shù)、男女性別學(xué)生信息進(jìn)行統(tǒng)計。 6、排序功能:以英語課程的分?jǐn)?shù)為依據(jù)對學(xué)生信息進(jìn)行排序。 7、顯示功能:將以上功能操作后的學(xué)生信息顯示出來。 8、退出主菜單。 4.1 功能描述功能描述 1.此程序的功

6、能全部寫成了學(xué)生信息類的函數(shù)成員。第一方面功能描述。第一,新增學(xué)生信息。 輸入功能:一次可以完成自定義學(xué)生人數(shù)的學(xué)生信息記錄的輸入。此功能會按照學(xué)生信息逐 項進(jìn)行添加,按照提示輸入即可,如果輸入不符合要求程序會報錯。第二,刪除學(xué)生信息, 刪除功能:對指定學(xué)生的信息進(jìn)行刪除。刪除之要求輸入所要刪除學(xué)生的編號即可,當(dāng)然, 刪除之后學(xué)生的信息就不存在了,也無法繼續(xù)進(jìn)行管理了。第三,導(dǎo)入學(xué)生信息,修改功能: 對指定學(xué)生的信息進(jìn)行修改。修改會首先提示所要修改的學(xué)生的編號,之后再按照學(xué)生的基 本信息逐項進(jìn)行修改。 2.第二方面功能描述。第四,修改員工信息。查詢功能:選擇某種方式并輸入該信息查詢符合 條件的

7、學(xué)生信息。修改會首先提示所要修改的學(xué)生的編號,之后再按照學(xué)生的基本信息逐項 進(jìn)行修改。第五,學(xué)生信息搜索。查詢功能:選擇某種方式并輸入該信息查詢符合條件的學(xué) 生信息。搜索比較簡單,不需要做任何操作,程序會自動將靜態(tài)數(shù)據(jù)成員所記載的人數(shù)顯示 輸出。第六,學(xué)生信息統(tǒng)計。統(tǒng)計功能:對某幾個專業(yè)的人數(shù)、男女性別學(xué)生信息進(jìn)行統(tǒng)計。 第七,學(xué)生信息保存。顯示功能:將以上功能操作后的學(xué)生信息顯示出來。最后退出。 4.2 程序流程程序流程 各功能模塊的實現(xiàn)流程圖:各功能模塊的實現(xiàn)流程圖: 1. 增加學(xué)生信息增加學(xué)生信息 調(diào)用函數(shù) Node* Create()判斷 gg 是否等于一如果是可創(chuàng)建鏈表輸入相應(yīng)的學(xué)生

8、信息如果 不是則需要運(yùn)用 Insert(p)函數(shù)插入結(jié)點增加學(xué)生信息的,并通過 chundang(p)函數(shù)進(jìn)行存檔, 具體流程如下圖所示 流程圖流程圖 2. 刪除學(xué)生信息刪除學(xué)生信息 調(diào)用函數(shù) Node* Delete(Node* head , int num) 刪除學(xué)生的信息則必須對鏈表結(jié)點進(jìn)行刪除意味著將某個要刪除結(jié)點前后的連續(xù)打斷, 去掉該結(jié)點,使前后指針變量重新連接,完成鏈表結(jié)點的刪除任務(wù) 流程圖流程圖 輸入要刪 除信息的 編號 該生信息已 刪除,顯示 其他同學(xué)的 信息 輸出所 有學(xué)生 的信息 3導(dǎo)入學(xué)生信息導(dǎo)入學(xué)生信息 打開存檔文件 ifstream Filein(out.txt);

9、輸出說存檔的學(xué)生信息 4、學(xué)生信息的搜索、學(xué)生信息的搜索 新增學(xué) 生信息 按提示:輸 入學(xué)個的各 種信息 按格式顯示 輸入的學(xué)生 信息 退出該功能, 返回主菜單, 繼續(xù)選擇 退出該功能, 返回主菜單, 繼續(xù)選擇 導(dǎo)入學(xué)生信 息 顯示學(xué)生的信 息 退出該功能,返回主 菜單,繼續(xù)選擇 判斷以前是 否存儲了學(xué) 生信息是新 增信息 輸入要刪 除學(xué)生信 息 2 調(diào)用函數(shù) Node* sousuo(Node* head , char na20) ,按學(xué)生的姓名進(jìn)行搜索 流程圖流程圖 : 5、信息的統(tǒng)計、信息的統(tǒng)計 調(diào)用函數(shù) Node* tongji(Node* head) 運(yùn)用一個 for 循環(huán),將輸入的

10、相應(yīng)的學(xué)生信息用 strcmp()函數(shù)與對應(yīng)的數(shù)組進(jìn)行比較,然后再進(jìn)行統(tǒng)計 。 6、按英語成績進(jìn)行排序按英語成績進(jìn)行排序: 調(diào)用函數(shù) Node* paixu(Node* head)完成排序功能 它的主要思想的:首先設(shè)置英語成績的最大值 100,最小值 0(也可以使 150 或者其他)然后讓 輸入的學(xué)生信息英語成績一次比較進(jìn)行比較, (如果有相等的就輸出排名 1 ,然后排名加 1), 否則最大值減 1,然后再次進(jìn)行比較( 如果等于 99 且上次沒有等于 100 的,就輸出排名 1, 然后排名加 1,如果上次有等于 100 的排名為 2) ,如果沒有與 99 相等的.,則繼續(xù)循環(huán) 流程圖: 搜索學(xué)

11、 生信息 4 按照提示輸 入學(xué)生的姓 名進(jìn)行搜索 輸出所以查 詢的學(xué)生信 息 退出該功能, 返回主菜單, 繼續(xù)選擇 信息的統(tǒng)計: 5 統(tǒng)計所設(shè)定的專業(yè) 人數(shù)和男女性別的 人數(shù),計算學(xué)生的 年齡并統(tǒng)計 輸出統(tǒng)計的 信息 退出該功能, 返回主菜單, 繼續(xù)選擇 對英語成績 進(jìn)行排序 輸出排序之 后的學(xué)生信 息 退出該功能, 返回主菜單, 繼續(xù)選擇 按學(xué)生信息 進(jìn)行排序 5 總功能模塊圖:總功能模塊圖: 2、輸入要刪除的學(xué) 生的編號,刪除學(xué) 生信息。 1 輸入學(xué)生的信 息:姓名、性別、 專業(yè)、出生日期、 家庭地址、英語 成績 菜單 1.新增學(xué)生信息 2.刪除學(xué)生信息 3.導(dǎo)入學(xué)生信息 4.學(xué)生信息搜索

12、 5.學(xué)生信息統(tǒng)計 6.按英語成績排序 7.學(xué)生信息保存 8.退出 5 統(tǒng)計各種專業(yè)、 男女、相應(yīng)年 齡的人數(shù) 6 按英語成績降 序排列,輸出學(xué) 生的姓名排名和 英語成績 7 保存學(xué)生信 息:提示保存 成功 4、輸入你要查 找你學(xué)生姓名 3、輸出學(xué)生的編號、 姓名、性別、專業(yè)、 出生日期、家庭地 址、英語成績 8、退出系統(tǒng) 學(xué)生管理系統(tǒng) 功能模塊圖功能模塊圖 4.34.3 設(shè)計步驟設(shè)計步驟 首先建立學(xué)生信息類,在類中添加類的屬性以及方法,類的屬性包括:char name10, long number, char sex, int pay。類的方法包括:構(gòu)造函數(shù) Member(),學(xué)生信息初始化

13、函數(shù) StartMember(char Newname10,long Newnumber,char Newsex,int Newold),析構(gòu)函數(shù)Member(),學(xué) 生信息修改函數(shù) AmendMember(char Newname10,long Newnumber,char Newsex,int Newold),學(xué)生 信息新建函數(shù) SetMember(char Newname10,long Newnumber,char Newsex,int Newold),學(xué)生信息顯 示函數(shù) ShowMember(),學(xué)生員工信息刪除函數(shù) DeleteMember(),判斷編號時候為空函數(shù) Getnumbe

14、r()。然后在類外實現(xiàn)類的所有方法。完成后開始寫主函數(shù),主函數(shù)先初始化一些數(shù)據(jù), 在數(shù)組中添加一些成員,然后利用循環(huán),選擇和順序結(jié)構(gòu)來實現(xiàn)程序的執(zhí)行步驟。 程序代碼程序代碼 #include #include #include #include using namespace std; int nn=0; struct Node int num; char name20; char xb20; char zy20; int nian,yue,ri; char dz20; int mark; Node *next ; /* Node* Create() /鏈表創(chuàng)建 cout請輸入學(xué)生信息(輸入

15、0 退出):num=1; head=NULL; n+; while (p1-num!=NULL) if (n=1) head=p1; else p2-next=p1; p2=p1; p1=new Node; int a; nn+; p1-num=nn; coutp1-name; a=(int)p1-name0-48; if (a=0)break; coutp1-xb; coutp1-zy; coutp1-nian; cinp1-yue; cinp1-ri; coutp1-dz; coutp1-mark; n+; p2-next=NULL; return head; /* /* void chu

16、ndang(Node *head) /存檔 Node *p=head; p=p-next; ofstream Fileout(out.txt); Fileout學(xué)生資料endl; Fileout-endl; while(p) Fileout - 編號:num 姓名:name 性別:xb 專業(yè): zy 出生日期:nian/yue/ri/ 地址:dz 英語 入學(xué)成績:marknext; Fileout-num=nn; coutp0-name; coutp0-xb; coutp0-zy; coutp0-nian; cinp0-yue; cinp0-ri; coutp0-dz; coutp0-mark

17、; if (head=NULL) head=p0; p0-next=NULL; return head; while (p1-numnum p1=p1-next; if (p1-num=p0-num) if (p1=head) head=p0; else p2-next=p0; p0-next=p1; else p1-next=p0; p0-next=NULL; return head; /* /* Node* Delete(Node* head , int num) /刪除節(jié)點 if (head=NULL) cout不存在此編號num!=num p1=p1-next; if (p1-num=

18、num) if (p1=head) head=p1-next; else p2-next=p1-next; else cout沒找編號為 num的學(xué)生!next; /整頓編號 while (p1) kk+; p1-num=kk; p1=p1-next; /* return head; /* /* Node* sousuo(Node* head , char na20) /搜索 Node *p1=head; while(p1!=NULL) if(!strcmp(p1-name,na) cout編號:num姓名:name 性別:xb 專業(yè):zy 出生日期:nian/yue/ri/ 地址:dz 英語

19、入學(xué)成績: marknext; return 0; /* /* Node* tongji(Node* head) /統(tǒng)計 Node *p1=head; int a=0,b=0,c=0,d=0,e=0,i100,j100; char aa=通信, bb=建筑,cc=電子,nan=男,nv=女; for(int k=0;kzy,aa)a+; else if(!strcmp(p1-zy,bb)b+; else if(!strcmp(p1-zy,cc)c+; if(!strcmp(p1-xb,nan)d+; else if(!strcmp(p1-xb,nv)e+; for(int l=0;lnian=

20、il)jl+; p1=p1-next; /-存檔 ofstream Fileout(統(tǒng)計.txt); Fileout統(tǒng)計信息endl; Fileout-endl; Fileouta 專業(yè)的個數(shù):aendlb 專業(yè)的個數(shù):bendlc 專業(yè)的個數(shù):cendl; Fileout男性個數(shù):dendl女性個數(shù):eendl; for(int mm=0;mm100;mm+) if(jmm!=0)Fileout年齡imm的個數(shù):jmmendl; Fileout-endl; Fileout.close(); /- cout統(tǒng)計信息endl; cout-endl; cout通信專業(yè)的個數(shù):aendl建筑專業(yè)的個

21、數(shù):bendl電子專業(yè)的個數(shù): cendl; cout男性個數(shù):dendl女性個數(shù):eendl; for(int m=0;m100;m+) if(jm!=0)cout年齡im的個數(shù):jmendl; cout-endl; return 0; /* /* Node* paixu(Node* head) /英語成績排序 Node *p1=head; int rr=100;/成績 int ll=1;/排名 ofstream Fileout(英語成績排序.txt); Fileout英語成績排序endl; Fileout-endl; Fileout排名 成績 姓名endl; cout-endl; cout

22、排名 成績 姓名mark=rr)Fileoutll mark nameendl; coutll mark namenext ; rr-; Fileout-endl; Fileout.close(); cout-endl; return 0; /* main() int gg=1; int strcmp(const char *s1,const char *s2); Node *p; /= cout* 學(xué) 生 信 息 管 理 系 統(tǒng) * endl; cout* * endl; cout* 1.增加學(xué)生信息 *endl; cout* 2.刪除學(xué)生信息 *endl; cout* 3.導(dǎo)入學(xué)生信息 *

23、endl; cout* 4.學(xué)生信息搜索 *endl; cout* 5.學(xué)生信息統(tǒng)計 *endl; cout* 6.按英語成排序 *endl; cout* 7.學(xué)生信息保存 *endl; cout* 8.退出 *endl; cout 請輸入您的選擇(1-8):endl; while(1) /輸出操作文本 int line=0; char buf100; ifstream Filein(in.txt); while(Filein.getline(buf,100) +line; coutbufn; /- if(n=1) /新增學(xué)生信息 if(gg) p=Create();/調(diào)用創(chuàng)建列表 gg-;

24、elseInsert(p);/新增學(xué)生信息 nn+; chundang(p);/信息存檔 /- else if(n=2) /刪除學(xué)生信息 int line=0;/導(dǎo)入學(xué)生信息 char buf100; ifstream Filein(out.txt); while(Filein.getline(buf,100) +line; coutbufendl; Filein.close(); coutcc; Delete(p ,cc); chundang(p);/信息存檔 /- else if(n=3) /導(dǎo)入學(xué)生信息 int line=0; char buf100; ifstream Filein(o

25、ut.txt); while(Filein.getline(buf,100) +line; coutbufendl; Filein.close(); /- else if(n=4) /學(xué)生信息搜索 coutname; sousuo(p,name); /- else if(n=5) /學(xué)生信息統(tǒng)計 tongji(p); /- else if(n=6) /英語入學(xué)成績排序 cout按英語成績排序:endl; paixu(p); /- else if(n=7) /學(xué)生信息保存 char ch,ch1=n; ofstream file1(學(xué)生信息保存.txt,ios_base:app); /=清空文件

26、學(xué)生信息保存.txt的內(nèi)容 FILE * fp; fp = fopen(學(xué)生信息保存.txt,w); /=組合文件 ifstream file2(out.txt); file1.write(char *) while(file2.get(ch) file1.put(ch); ifstream file3(統(tǒng)計.txt); file1.write(char *) while(file3.get(ch) file1.put(ch); ifstream file4(英語成績排序.txt); file1.write(char *) while(file4.get(ch) file1.put(ch);

27、file1.close(); file2.close(); file3.close(); file4.close(); cout保存成功!endl; /- else if(n=8)break; /退出操作 /- else if(n=9) /輸出學(xué)生信息保存 int line1=0; char buf1100; ifstream Filein(學(xué)生信息保存.txt); while(Filein.getline(buf1,100) +line1; coutbuf1endl; Filein.close(); /- else cout錯誤選擇!endl; continue; 4.44.4 程序調(diào)試程序

28、調(diào)試 (1)error C2676: binary : class std:basic_istreamchar,struct std:char_traits does not define this operator or a conversion to a type acceptable to the predefined operator 執(zhí)行 cl.exe 時出錯. 修改:將 cinmainold。 (2)error C2146: syntax error : missing ; before identifier DeleteMember 修改:在 void ShowMember()

29、后面加一個分號。 (3)error C2664: StartMember : cannot convert parameter 1 from char to char error C2664: AmendMember : cannot convert parameter 1 from char to char 修改:將主函數(shù)中的 char mainname 改為 char mainname10。 4.5 運(yùn)行結(jié)果運(yùn)行結(jié)果 1增加學(xué)生信息和導(dǎo)入學(xué)生信息增加學(xué)生信息和導(dǎo)入學(xué)生信息 2.刪除相應(yīng)學(xué)生的信息刪除相應(yīng)學(xué)生的信息 3.統(tǒng)計電子、建筑、通信、三個專業(yè)的人的個數(shù),按英語成績進(jìn)行排名并輸出統(tǒng)計電子、建筑、通信、三個專業(yè)的人的個數(shù),按英語成績進(jìn)行排名并輸出 4.保存學(xué)生信息保存學(xué)生信息 4.64.6 心得體會心得體會 其實在寫這個程序之前,腦子里面是一片模糊,不知

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論