C++从入门到精通系列第24章.ppt

上传人:小飞机 文档编号:6153948 上传时间:2023-09-30 格式:PPT 页数:57 大小:340.49KB
返回 下载 相关 举报
C++从入门到精通系列第24章.ppt_第1页
第1页 / 共57页
C++从入门到精通系列第24章.ppt_第2页
第2页 / 共57页
C++从入门到精通系列第24章.ppt_第3页
第3页 / 共57页
C++从入门到精通系列第24章.ppt_第4页
第4页 / 共57页
C++从入门到精通系列第24章.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《C++从入门到精通系列第24章.ppt》由会员分享,可在线阅读,更多相关《C++从入门到精通系列第24章.ppt(57页珍藏版)》请在三一办公上搜索。

1、第24章 信息管理不用愁信息管理系统实战,日历系统 学生成绩管理系统 银行卡管理系统,第24章 信息管理不用愁信息管理系统实战,日历系统 学生成绩管理系统 银行卡管理系统,第24章 信息管理不用愁信息管理系统实战,日历系统 学生成绩管理系统 银行卡管理系统,第24章 信息管理不用愁信息管理系统实战,日历系统 学生成绩管理系统 银行卡管理系统,24.1 日历系统,本系统实现了控制台下打印日历。只要输入指定年份,就能打印出该年的日历,包括星期。通过本例的学习,培养读者在VC+6.0环境中,学会调试程序的能力,巩固分支结构和循环结构的知识,让读者形成C+模块化设计的思想。,24.1 日历系统,24.

2、1.1 系统分析24.1.2 功能分析及实现24.1.3 开发常见问题及解决,24.1.1 系统分析,1.需求分析随意给出某年(如2003年),可以显示该年的日历(包括每月的天数和对应的星期几),并且在每月的左上角或右上角打印出相应的年份和月份,要求输出界面尽可能整齐,美观。,24.1.1 系统分析,2.系统分析根据问题描述,整个系统包含2个模块,为了体现模块化编程的思想,对每一个模块都分别编写函数来实现。系统流程图如下。输入年份显示日历开始结束,24.1.2 功能分析及实现,1.定义日历类 01 class calendar02 03 int weekday;04 int year;05 p

3、ublic:06 void printmonthdays();/打印每月的日历07 void printtitle(int m);/打印日历头08 int monthdays(int m);/计算每月的天数09 int firstday(int y);/计算每年的第一天是周几10;,24.1.2 功能分析及实现,2.计算每月的天数在一年中有的月份是30天,有的是31天,2月份的天数根据是否是闰年不同,又有28天和29天的区别。,24.1.2 功能分析及实现,01 int calendar:monthdays(int m)/判断每月的天数02 03 switch(m)04 05 case 1:0

4、6 case 3:07 case 5:08 case 7:09 case 8:10 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 24 25,24.1.2 功能分析及实现,3.打印日历01 void calendar:printmonthdays()02 03 int days;04 for(int n=1;n=12;n+)/12个月份05 06

5、printtitle(n);/打印日历头07 days=monthdays(n);08 for(int i=1;i=days;i+)09 10 printf(%5d,i);11 weekday=(weekday+1)%7;12 if(weekday=0)printf(n);13 14 printf(n);15 16,24.1.2 功能分析及实现,4.打印每月的日历头01 void calendar:printtitle(int m)/02 03 int i;04 printf(n%d月 日 一 二 三 四 五 六n,m);05 printf();06 for(i=0;iweekday;i+)0

6、7 printf();08,24.1.2 功能分析及实现,5.判断每年的第一天是星期几int firstday(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 功能分析及实现,6.提示打印模块01 void main(int argc,char*argv)02 03 04 int year;05 int weekday;06 calendar cal;07 printf(请输入你要查看的年份:);08 scanf(%d,1

7、4,24.1.3 开发常见问题及解决,从公元01年的第一天开始考虑(01年1月1日对应星期一),以计算从01年至该年开始的总天数;注意每月的天数不同,并且二月分有2种情况:是否是闰年 为了将每月的日期和星期对应,用从显示月份开始的总天数除7取余,控制日期和星期几的对应关系;可以构造一个逻辑表达式来判断该年是否是闰年:if(year%4=0 为判断每月的天数,可以用switch-case分支结构。,24.2 学生成绩管理系统,本例是一个简单的学生成绩管理系统,所实现的功能有如下几个:设计一个功能显示菜单,并有选择提示;建立学生信息数据,包括学号、姓名、三门课(语文、数学和英语)的成绩;能实现学生

8、信息增加、删除和修改;统计每个学生的总分和平均分;按照总分从小到大排出名次;任意输入一个学好,能够查出该学生在班级中的排名及其考试成绩。通过本例,读者可以更进一步的学习类和结构体的使用,以及C+中STL编程快捷与高效。,24.2 学生成绩管理系统,24.2.1 系统分析24.2.2 功能分析及实现24.2.3 开发常见问题及解决,24.2.1 系统分析,1.需求分析学生成绩管理系统主要提供学生资料的输入,学生资料的输出,学生资料的查询,学生资料删除,以及学生成绩的排序等。通过这次对学生成绩管理系统的编写,使读者对现在所学的东西和以前所学的东西有了同一的了解,综合的运用。通过本例的学习,读者对结

9、构体以及类的使用有了更进一步的认识。,24.2.1 系统分析,2.系统分析整个系统包含六个模块,为了体现模块化编程的思想,对每一个模块都分别编写函数来实现。学生信息的包括学号、姓名以及三门功课的成绩,在本例中用一个结构体来表示学生信息。在实际工作中,输入的学生信息需要更新,本例子需要有一个对学生信息进行编辑的模块。为了更好的体现C+编程的优越性,在排序的时候,用到了STL 编程中的sort方法。,24.2.2 功能分析及实现,24.2.2 功能分析及实现,1.定义类01 class student02 03 public:04 char code5;/学号05 char name20;/姓名0

10、6 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 double getaver();/计算机平均分12;,24.2.2 功能分析及实现,2.主菜单的设计与实现主菜单显示,主菜单的选项的输入选择,不同功能模块的调用,从而达到用户与该系统的交互。,01 void control:jiemian()02 03 coutend

11、l;04 coutendl;05 cout*endl;06 cout*请选择您需要的操作!*endl;07 cout*(1)增加人员*endl;08 cout*(2)删除人员*endl;09 cout*(3)修改数据*endl;10 cout*(4)查询*endl;11 cout*(5)输出所有学生的数据*endl;12 cout*(6)按成绩排序*endl;13 cout*(0)退出*endl;14 cout*选择相对的括号里的阿拉伯数字!*endl;15 cout*;16 coutendl;17 coutendl;18 return;19 20,24.2.2 功能分析及实现,3.增加人员功

12、能的实现。选择功能主菜单1,可以增加新的学生信息,包括学号、姓名以及三门功课的成绩。,void control:insert(std:vector,24.2.2 功能分析及实现,4.删除人员功能的实现输入待删除学生的学号和姓名,系统就可以删除该学生的所有信息。,01 void control:del(std:vector 20 21,24.2.2 功能分析及实现,5.编辑人员功能的实现,01 void control:edit(std:vector 30,24.2.2 功能分析及实现,6.排序功能的实现,01 void control:st(std:vector48,24.2.2 功能分析及实

13、现,7.其他功能 查询功能:在主菜单界面选择4,进入查询功能模块,输入要查询的学号和姓名,即可输出相应的信息,24.2.2 功能分析及实现,输出所有信息功能:,24.2.3 开发常见问题及解决,为了在程序中使用向量,需要包含头文件#include 例子中的排序算法,使用了STL编程中的sort()方法,避免了我们重复编写排序代码,需要包含头文件#include,24.3 银行卡管理系统,本例子实现了一个简单的银行卡管理系统。功能主要包括创建新卡,卡号登录。每个卡片信息包括有卡号以及用户名信息。输入卡号后可以对银行卡进行管理,包括存款、取款以及每次操作的日志。通过本例的学习,读者能够进一步的学习

14、结构体和类的使用,并且能够学习到二进制文件的读写方法。,24.3 银行卡管理系统,24.3.1 系统分析24.3.2 功能分析及实现24.3.3 开发常见问题及解决,24.3.1 系统分析,1.需求分析银行卡管理系统应该能实现,新卡的录入,以及卡号的登录功能。卡号登录后,应该可以进行存款、取款以及用户每次操作日志的浏览。,24.3.1 系统分析,2.系统分析卡的信息包含有卡号以及用户名称,用一个结构体struct Card来表示银行卡信息。处于保密性的考虑,银行卡的信息以二进制的文件进行存放。本系统分为以下几大模块:主菜单模块、创建新卡模块、卡号登录模块、存款模块、取款模块、日志浏览模块。,2

15、4.3.2 功能分析及实现,24.3.2 功能分析及实现,1.定义类01 struct Card02 03 int cardno;/卡号04 char usernameLENGTH;/用户名05 double sum;/存款金额06;07 08 struct Log09 10 int cardno;/卡号11 char date64;/日期12 char type6;13 double money;/存钱输入金额14 double sum;/总金额15;,24.3.2 功能分析及实现,2.主菜单的设计及实现,01 void mainjiemian()02 03 cout*endl;04 cou

16、t*银行卡管理软件*endl;05 cout*endl;06 cout*(1)创建新卡*endl;07 cout*endl;08 cout*(2)卡号登录*endl;09 cout*endl;10 cout*(0)退出*endl;11 cout*endl;12,24.3.2 功能分析及实现,3.创建新卡模块的实现,01 char filenameLENGTH;/定义一个字符数组,来表示文件名02 Card t_cd;/定义一个结构体对象03 int i_cd;/定义卡号04 char s_nameLENGTH;/定义 用户名05 couti_cd;/输入卡号07 couts_name;/输入用

17、户名09 t_cd.cardno=i_cd;10 strcpy(t_cd.username,s_name);11 t_cd.sum=0;12 itoa(t_cd.cardno,filename,10);/把卡号转换成字符串13 fstream writefile(strcat(filename,.txt),ios:out);14 writefile.write(char*),24.3.2 功能分析及实现,4.卡号登录功能的实现,01 void logcard()02 03 cout*endl;04 cout*(1)存 款*endl;05 cout*(2)取 款*endl;06 cout*(3)

18、读取日志*endl;07 cout*(0)返 回*endl;08 cout*endl;09,24.3.2 功能分析及实现,5.存取款提示功能的实现,01 void logoperate(int cd)02 03 char in;04 double money;05 Cardoperate cdop(cd);06 do07 logcard();08 cinin;09 switch(in)10 11 case 1:12 coutmoney;14 cdop.Cardin(money);15 break;16 case 2:17 coutmoney;19 cdop.Cardout(money);20

19、break;21 case 3:22 cdop.listlog();23 break;24 case 0:25 break;26 default:cout输入错误,请从新输入。endl;27 28 while(in!=0);29 return;30,24.3.2 功能分析及实现,6.存款功能的实现,01 void Cardin(double m)02 03 t=time(0);04 card.sum+=m;05 lg.cardno=card.cardno;06 strftime(datatime,sizeof(datatime),%Y年/%m月/%d日%H时%M分%S秒,localtime(1

20、5,24.3.2 功能分析及实现,7.取款功能的实现,01 void Cardout(double m)02 03 if(card.sum=m)04 05 t=time(0);06 card.sum-=m;07 lg.cardno=card.cardno;08 strftime(datatime,sizeof(datatime),%Y年/%m月/%d日%H时%M分%S秒,localtime(21 22,24.3.2 功能分析及实现,8.查询存取记录功能的实现,24.3.3 开发常见问题及解决,为了记录每张卡的信息,例子中用一个结构体来记录卡的信息.为了记录用户的操作时间,例子中使用了strftime()函数将时间格式化strftime(datatime,sizeof(datatime),%Y年/%m月/%d日%H时%M分%S秒,localtime(由于银行卡的保密性,卡片信息读写,都是以二进制文件的读写形式进行。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号