版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第24章 信息管理不用愁——信息管理系統(tǒng)實戰(zhàn),日歷系統(tǒng) 學生成績管理系統(tǒng) 銀行卡管理系統(tǒng),第24章 信息管理不用愁——信息管理系統(tǒng)實戰(zhàn),日歷系統(tǒng) 學生成績管理系統(tǒng) 銀行卡管理系統(tǒng),第24章 信息管理不用愁——信息管理系統(tǒng)實戰(zhàn),日歷系統(tǒng) 學生成績管理系統(tǒng) 銀行卡管理系統(tǒng),第24章 信息管理不用愁——信息管理系統(tǒng)實戰(zhàn),日歷系統(tǒng) 學生成績管理系統(tǒng) 銀行卡管理系統(tǒng),24.1 日歷系統(tǒng),本
2、系統(tǒng)實現(xiàn)了控制臺下打印日歷。只要輸入指定年份,就能打印出該年的日歷,包括星期。通過本例的學習,培養(yǎng)讀者在VC++6.0環(huán)境中,學會調(diào)試程序的能力,鞏固分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的知識,讓讀者形成C++模塊化設(shè)計的思想。,24.1 日歷系統(tǒng),24.1.1 系統(tǒng)分析24.1.2 功能分析及實現(xiàn)24.1.3 開發(fā)常見問題及解決,24.1.1 系統(tǒng)分析,1. 需求分析隨意給出某年(如2003年),可以顯示該年的日歷(包括每月的天數(shù)和對應(yīng)
3、的星期幾),并且在每月的左上角或右上角打印出相應(yīng)的年份和月份,要求輸出界面盡可能整齊,美觀。,24.1.1 系統(tǒng)分析,2. 系統(tǒng)分析根據(jù)問題描述,整個系統(tǒng)包含2個模塊,為了體現(xiàn)模塊化編程的思想,對每一個模塊都分別編寫函數(shù)來實現(xiàn)。系統(tǒng)流程圖如下。輸入年份顯示日歷開始結(jié)束,,24.1.2 功能分析及實現(xiàn),1. 定義日歷類 01 class calendar02 {03 int weekday;04 int
4、year;05 public:06 void printmonthdays();//打印每月的日歷07 void printtitle(int m);//打印日歷頭08 int monthdays(int m) ;//計算每月的天數(shù)09 int firstday(int y); //計算每年的第一天是周幾10 };,24.1.2 功能分析及實現(xiàn),2. 計算每月的天數(shù)在一年中有的月份
5、是30天,有的是31天,2月份的天數(shù)根據(jù)是否是閏年不同,又有28天和29天的區(qū)別。,24.1.2 功能分析及實現(xiàn),01 int calendar::monthdays(int m)//判斷每月的天數(shù)02 {03 switch (m)04 {05 case 1:06 case 3:07 case 5:08 case 7:09 case 8:10
6、case 10:11 case 12:12 return 31;//1,3,5,7,8,10,12每月有31天13 case 4:14 case 6:15 case 9:16 case 11:17 return 30; //4,6,9,11每月有30天18 case 2:19 if (((year%4==0 &&
7、year%100!=0)||year%400==0)) //判斷是否閏年。20 return 29;21 else 22 return 28;23 default: return 0;24 }25 },24.1.2 功能分析及實現(xiàn),3. 打印日歷01 void calendar::printmonthdays()02 {03
8、int days;04 for(int n=1;n<=12;n++)//12個月份05 {06 printtitle(n);//打印日歷頭07 days=monthdays(n);08 for(int i=1;i<=days;i++)09 {10 printf("%5d",i);11 weekda
9、y=(weekday+1)%7;12 if (weekday==0) printf("\n ");13 }14 printf("\n");15 }16 },24.1.2 功能分析及實現(xiàn),4. 打印每月的日歷頭01 void calendar::printtitle(int m) //02 {03 int i;
10、04 printf("\n%d月 日 一 二 三 四 五 六\n",m);05 printf(" ");06 for(i=0;i<weekday;i++)07 printf(" ");08 },24.1.2 功能分析及實現(xiàn),5. 判斷每年的第一天是星期幾int firstday(
11、int year) //判斷元旦是星期幾{double s ;s=floor(year-1+(year-1)/4.0-(year-1)/100.0+(year-1)/400.0+1);return (int)s%7;},24.1.2 功能分析及實現(xiàn),6. 提示打印模塊01 void main(int argc, char* argv[])02 {03 04 int year;0
12、5 int weekday;06 calendar cal;07 printf("請輸入你要查看的年份:");08 scanf("%d",& year);09 weekday=cal.firstday(year);10 printf("\n\n");11 printf("
13、 %d年\n",year); 12 cal.printmonthdays( );//打印日歷13 printf("\n\n");14 },24.1.3 開發(fā)常見問題及解決,⑴ 從公元01年的第一天開始考慮(01年1月1日對應(yīng)星期一),以計算從01年至該年開始的總天數(shù); ⑵ 注意每月的天數(shù)不同,并且二月分有2種情況:是否是閏年 ⑶ 為了將每月的日期和星期對應(yīng),用從顯
14、示月份開始的總天數(shù)除7取余,控制日期和星期幾的對應(yīng)關(guān)系; ⑷ 可以構(gòu)造一個邏輯表達式來判斷該年是否是閏年:if (((year%4==0 && year%100!=0)||year%400==0));為判斷每月的天數(shù),可以用switch-case分支結(jié)構(gòu)。,24.2 學生成績管理系統(tǒng),本例是一個簡單的學生成績管理系統(tǒng),所實現(xiàn)的功能有如下幾個:⑴ 設(shè)計一個功能顯示菜單,并有選擇提示;⑵ 建立學生信息數(shù)據(jù),包括學號、
15、姓名、三門課(語文、數(shù)學和英語)的成績;⑶ 能實現(xiàn)學生信息增加、刪除和修改;⑷ 統(tǒng)計每個學生的總分和平均分;⑸ 按照總分從小到大排出名次;⑹ 任意輸入一個學好,能夠查出該學生在班級中的排名及其考試成績。通過本例,讀者可以更進一步的學習類和結(jié)構(gòu)體的使用,以及C++中STL編程快捷與高效。,24.2 學生成績管理系統(tǒng),24.2.1 系統(tǒng)分析24.2.2 功能分析及實現(xiàn)24.2.3 開發(fā)常見問題及解決,24.2.1 系
16、統(tǒng)分析,1. 需求分析學生成績管理系統(tǒng)主要提供學生資料的輸入,學生資料的輸出,學生資料的查詢,學生資料刪除,以及學生成績的排序等。通過這次對學生成績管理系統(tǒng)的編寫,使讀者對現(xiàn)在所學的東西和以前所學的東西有了同一的了解,綜合的運用。通過本例的學習,讀者對結(jié)構(gòu)體以及類的使用有了更進一步的認識。,24.2.1 系統(tǒng)分析,2. 系統(tǒng)分析整個系統(tǒng)包含六個模塊,為了體現(xiàn)模塊化編程的思想,對每一個模塊都分別編寫函數(shù)來實現(xiàn)。學生信息的包括學號、姓
17、名以及三門功課的成績,在本例中用一個結(jié)構(gòu)體來表示學生信息。在實際工作中,輸入的學生信息需要更新,本例子需要有一個對學生信息進行編輯的模塊。為了更好的體現(xiàn)C++ 編程的優(yōu)越性,在排序的時候,用到了STL 編程中的sort方法。,24.2.2 功能分析及實現(xiàn),,24.2.2 功能分析及實現(xiàn),1. 定義類01 class student02 {03 public:04 char code[5]; //學號05
18、 char name[20]; //姓名06 double math,chinese,english,average,sum;//三門功課成績平均分 總分07 public:08 student();09 student(char cd[],char n[],double ma,double chin,double eng);10 double getsum();//計算總分11
19、 double getaver();// 計算機平均分12 };,24.2.2 功能分析及實現(xiàn),2. 主菜單的設(shè)計與實現(xiàn)主菜單顯示,主菜單的選項的輸入選擇,不同功能模塊的調(diào)用,從而達到用戶與該系統(tǒng)的交互。,,01 void control::jiemian()02 {03 cout<<endl;04 cout<<endl;05 cout<<
20、"*******************************************"<<endl;06 cout<<"* 請選擇您需要的操作! *"<<endl;07 cout<<"* (1)增加人員 *"<
21、;<endl;08 cout<<"* (2)刪除人員 *"<<endl;09 cout<<"* (3)修改數(shù)據(jù) *"<<endl;10 cout<<"* (4)查詢
22、 *"<<endl;11 cout<<"* (5)輸出所有學生的數(shù)據(jù) *"<<endl;12 cout<<"* (6)按成績排序 *"<<endl;13 cout<<
23、"* (0)退出 *"<<endl;14 cout<<"* 選擇相對的括號里的阿拉伯數(shù)字! *"<<endl;15 cout<<"*******************************************";16 c
24、out<<endl;17 cout<<endl;18 return;19 20 },24.2.2 功能分析及實現(xiàn),3. 增加人員功能的實現(xiàn)。選擇功能主菜單1,可以增加新的學生信息,包括學號、姓名以及三門功課的成績。,,void control::insert(std::vector &ver){student stu;char code[5];c
25、har name[20];double math,chinese,english;cout>code;cout>name;cout>math;cout>chinese;cout>english;strcpy(stu.code,code);strcpy(stu.name,name);stu.math=math;stu.chinese=chinese;
26、stu.english=english;stu.sum=math+chinese+english;stu.average=stu.sum/3;ver.push_back(stu);return;},24.2.2 功能分析及實現(xiàn),4. 刪除人員功能的實現(xiàn)輸入待刪除學生的學號和姓名,系統(tǒng)就可以刪除該學生的所有信息。,,01 void control::del(std::vector &ve
27、r)02 {03 char code[5];04 char name[20];05 cout>code;07 cout>name;09 vector::iterator i;10 for(i=ver.begin(); i!=ver.end(); ++i)11 {12 if(!strcmp((*i).code, code)
28、&&!(strcmp((*i).name,name)))13 {14 ver.erase(i);15 return;16 17 }18 }19 return;20 21 },24.2.2 功能分析及實現(xiàn),5. 編輯人員功能的實現(xiàn),,01 void control::edit(std
29、::vector &ver)02 {03 04 char code[5];05 char name[20];06 cout>code;08 cout>name;10 vector::iterator i,cur;11 for(i=ver.begin(); i!=ver.end(); ++i)12 {13
30、if(!strcmp((*i).code, code)&&!(strcmp((*i).name,name)))14 cur=i;15 }16 cout>(*cur).name;21 cout>(*cur).math;23 cout>(*cur).chinese;25 cout>(*cur).english;27
31、(*cur).sum=(*cur).math+(*cur).chinese+(*cur).english;28 (*cur).average=(*cur).sum/3;29 return;30 },24.2.2 功能分析及實現(xiàn),6. 排序功能的實現(xiàn),,01 void control::st(std::vector&ver)02 {03 char fg;04 cou
32、t>fg;13 14 if(fg=='0') //返回上一層菜單15 return;16 if(fg=='1')//按總分查詢排名17 {18 std::sort(ver.begin(), ver.end(), greatesum);19 list(ver);20 }21 22 23
33、 if( fg=='2' ) //按語文查詢排名24 {25 std::sort(ver.begin(), ver.end(), greatechinese);26 list(ver);27 }28 29 if( fg=='3' ) //按數(shù)學查詢排名30 {31 std::sort(ver.begin
34、(), ver.end(), greatemath);32 list(ver);33 }34 35 if(fg=='4' ) //按英語查詢排名36 {37 std::sort(ver.begin(), ver.end(), greateenglish);38 list(ver);39 }40 41 if(fg
35、=='5') //按平均分查詢排名42 {43 std::sort(ver.begin(), ver.end(), greateaverage);44 list(ver);45 }46 47 return;48 },24.2.2 功能分析及實現(xiàn),7. 其他功能⑴ 查詢功能:在主菜單界面選擇4,進入查詢功能模塊,輸入要查詢的學號和姓名,即可輸出
36、相應(yīng)的信息,24.2.2 功能分析及實現(xiàn),⑵ 輸出所有信息功能:,24.2.3 開發(fā)常見問題及解決,⑴ 為了在程序中使用向量,需要包含頭文件#include ⑵ 例子中的排序算法,使用了STL編程中的sort()方法,避免了我們重復(fù)編寫排序代碼,需要包含頭文件 #include ,24.3 銀行卡管理系統(tǒng),本例子實現(xiàn)了一個簡單的銀行卡管理系統(tǒng)。功能主要包括創(chuàng)建新卡,卡號登錄。每個卡片信息包括有卡號以及用戶名信息。輸入卡號后可以對
37、銀行卡進行管理,包括存款、取款以及每次操作的日志。通過本例的學習,讀者能夠進一步的學習結(jié)構(gòu)體和類的使用,并且能夠?qū)W習到二進制文件的讀寫方法。,24.3 銀行卡管理系統(tǒng),24.3.1 系統(tǒng)分析24.3.2 功能分析及實現(xiàn)24.3.3 開發(fā)常見問題及解決,24.3.1 系統(tǒng)分析,1. 需求分析銀行卡管理系統(tǒng)應(yīng)該能實現(xiàn),新卡的錄入,以及卡號的登錄功能。卡號登錄后,應(yīng)該可以進行存款、取款以及用戶每次操作日志的瀏覽。,24.3.1
38、 系統(tǒng)分析,2. 系統(tǒng)分析卡的信息包含有卡號以及用戶名稱,用一個結(jié)構(gòu)體struct Card來表示銀行卡信息。處于保密性的考慮,銀行卡的信息以二進制的文件進行存放。本系統(tǒng)分為以下幾大模塊:主菜單模塊、創(chuàng)建新卡模塊、卡號登錄模塊、存款模塊、取款模塊、日志瀏覽模塊。,,,24.3.2 功能分析及實現(xiàn),,24.3.2 功能分析及實現(xiàn),1. 定義類01 struct Card02 {03 int cardno;
39、//卡號04 char username[LENGTH];//用戶名05 double sum;//存款金額06 };07 08 struct Log09 {10 int cardno;//卡號11 char date[64];//日期12 char type[6];13 double money;//存錢輸入金額14
40、 double sum;//總金額15 };,24.3.2 功能分析及實現(xiàn),2. 主菜單的設(shè)計及實現(xiàn),,01 void mainjiemian()02 {03 cout<<"**********************************"<<endl;04 cout<<"* 銀行卡管理軟件 *
41、"<<endl;05 cout<<"* *"<<endl;06 cout<<"* (1) 創(chuàng)建新卡 *"<<endl;07 cout<<"*
42、 *"<<endl;08 cout<<"* (2) 卡號登錄 *"<<endl;09 cout<<"* *"<<endl;10 cout<<"* (0)
43、退出 *"<<endl;11 cout<<"**********************************"<<endl;12 },24.3.2 功能分析及實現(xiàn),3. 創(chuàng)建新卡模塊的實現(xiàn),,01 char filename[LENGTH]; //定義一個字符數(shù)組,來表示文件名02 Card t_cd;
44、//定義一個結(jié)構(gòu)體對象03 int i_cd;//定義卡號04 char s_name[LENGTH];//定義 用戶名05 cout>i_cd;//輸入卡號07 cout>s_name;//輸入用戶名09 t_cd.cardno=i_cd;10 strcpy(t_cd.username, s_name);11 t_cd.sum=0;12 it
45、oa(t_cd.cardno, filename, 10);//把卡號轉(zhuǎn)換成字符串13 fstream writefile(strcat(filename,".txt"),ios::out);14 writefile.write((char *)&t_cd, sizeof(t_cd));//寫入文件15 writefile.close();,24.3.2 功能分析及實現(xiàn),4.
46、 卡號登錄功能的實現(xiàn),,01 void logcard()02 {03 cout<<"****************"<<endl;04 cout<<"* (1) 存 款 *"<<endl;05 cout<<"* (2) 取 款 *"<<endl;06
47、cout<<"* (3) 讀取日志 *"<<endl;07 cout<<"* (0) 返 回 *"<<endl;08 cout<<"****************"<<endl;09 },24.3.2 功能分析及實現(xiàn),5. 存取款提示功能的實現(xiàn),,01 void log
48、operate(int cd)02 {03 char in;04 double money;05 Cardoperate cdop(cd);06 do{07 logcard();08 cin>>in;09 switch (in)10 {11 case '1':12 cout>money;14
49、cdop.Cardin(money);15 break;16 case '2':17 cout>money;19 cdop.Cardout(money);20 break;21 case '3':22 cdop.listlog();23 break;24 case '0':
50、25 break;26 default:cout<<"輸入錯誤,請從新輸入。"<<endl;27 }28 }while(in!='0');29 return;30 },24.3.2 功能分析及實現(xiàn),6. 存款功能的實現(xiàn),,01 void Cardin(double m)02 {03 t = tim
51、e(0);04 card.sum+=m;05 lg.cardno= card.cardno;06 strftime( datatime, sizeof(datatime), "%Y年/%m月/%d日%H時%M分%S秒",localtime(&t)); 07 strcpy(lg.date, datatime);08 strcpy(lg.type,"存錢&
52、quot;);09 lg.money=m;10 lg.sum=card.sum;11 cout<<setiosflags(ios::fixed); 12 cout<<endl<<"卡號:"<<card.cardno<<" 當前總金額:"<<setprecision(2)<<c
53、ard.sum<<endl;13 Logoperate l_file(card.cardno);14 l_file.writelog(lg);15 },24.3.2 功能分析及實現(xiàn),7. 取款功能的實現(xiàn),,01 void Cardout(double m)02 {03 if(card.sum>=m)04 {05 t = time(0);06
54、 card.sum-=m;07 lg.cardno= card.cardno;08 strftime( datatime, sizeof(datatime), "%Y年/%m月/%d日%H時%M分%S秒",localtime(&t)); 09 strcpy(lg.date, datatime);10 strcpy(lg.type,"取錢&qu
55、ot;);11 lg.money=m;12 lg.sum=card.sum;13 cout<<setiosflags(ios::fixed); 14 cout<<endl<<"卡號:"<<card.cardno<<" 當前總金額:"<<setprecision(2)<&l
56、t;card.sum<<endl;15 Logoperate l_file(card.cardno);16 l_file.writelog(lg);17 }18 else19 {20 cout<<"警告:"<<"交易失?。∧膽裘嬗囝~已不足!請續(xù)存!"<<endl;21 }22
57、 },24.3.2 功能分析及實現(xiàn),8. 查詢存取記錄功能的實現(xiàn),24.3.3 開發(fā)常見問題及解決,⑴ 為了記錄每張卡的信息,例子中用一個結(jié)構(gòu)體來記錄卡的信息.⑵ 為了記錄用戶的操作時間,例子中使用了strftime()函數(shù)將時間格式化strftime( datatime, sizeof(datatime), "%Y年/%m月/%d日%H時%M分%S秒",localtime(&t));⑶ 由于銀
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第22章 信息管理
- 第22章 信息管理.doc
- 第22章 信息管理.doc
- 信息管理系統(tǒng)
- 信息管理系統(tǒng)第版本答案
- 信息管理系統(tǒng)
- 醫(yī)院信息管理系統(tǒng)——天和醫(yī)院信息管理系統(tǒng)2.0版
- 信息管理畢業(yè)設(shè)計--設(shè)備信息管理系統(tǒng)設(shè)計
- 《車輛信息管理》課程設(shè)計--車輛信息管理系統(tǒng)
- 校園信息管理系統(tǒng)
- 科研信息管理系統(tǒng)
- 學生信息管理系統(tǒng)
- 網(wǎng)吧信息管理系統(tǒng)
- 網(wǎng)上信息管理系統(tǒng)
- 旅游信息管理系統(tǒng)
- 《醫(yī)院信息管理系統(tǒng)》
- 學生信息管理系統(tǒng)
- 客戶信息管理系統(tǒng)
- 信息管理與信息系統(tǒng)
- 監(jiān)理信息管理系統(tǒng)
評論
0/150
提交評論