- 1、本文档共38页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[数学]我的数据结构课设 liwei
一 需求分析
1.1 万年历
万年历包括:年 ,月,日,星期。此外万年历的范围是公元1年至9999年 ,一共十二个月份,其中年还有平年和闰年之分,尤其是闰年的二月比平年多了一天。
1 能够显示星期;
2 能够显示年月日;
3 能显示十二个月;
4 能准确显示阳历的每一天;
5 格式与日历一致;以标准日历的形式输出,包含月份、星期以及具体某一天对应的年、月、星期;
6 输出公元1年至9999年的日历;
1.2模拟银行系统
客户业务分2种,第一种是申请从银行得到一笔资金,即借款或取款。第2种是向银行投入一笔资金,即存款或还款。银行有2个服务窗口,相应地有2个队列。客户到达银行后先排第一个队。处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足,则立刻排入第2个队等候,直至满足时才离开银行,否则业务处理完后立刻离开银行。每接待完一个第二种业务的客户,则顺序检查和处理(如果可能)第二个队列中的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。注意,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第2种业务)被接待之前的数额,或者本次以将第2个队列检查或者处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续接待第一个队列的客户。任何时刻都只能开一个窗口。假设检查不需要时间。营业时间结束时所有客户立即离开银行。
实现如下:
输入:
用户需要在程序运行开始时输入以下数据:
银行初始资金total(测试数据为10000)
银行营业时间closetime(测试数据为600)
客户交易时间上下界dealmaxtime和dealmintime,用于给随机数产生函数传递参数,产生一个介于这两个值之间的值。
客户到达时间间隔上界arrivemaxtime arrivemintime,用于给随机数产生函数传递参数,产生一个介于这两个值之间的值。
交易额的最大上限dealMaxMoney.用于给随机函产生函数参数,产生一个介于-dealMaxMoney和dealMaxMoney之间的值,作为顾客到银行办理业务的交易额。
输出:
模拟输出整个银行业务办理及排队的结果,最后给出一下数据:
由于下班时间到而没能办理的顾客数
分别列出需要办理两种业务的顾客数
分别列出已成功办理两种业务的顾客数
分别列出两种业务的成功办理率。
客户在银行内的平均逗留时间
下班时银行所剩余的资金总额
二.概要设计
2.1万年历
2.11存储设计
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29}; //定义于存放每月天数的数组,一三五七八十腊为31天,二月分28天和29天
空间复杂度:数据的存取以顺序存储方式存取,没有空间的浪费和压缩存储的现象,所以空间复杂度为O(n)。if( IsLeapYear(year) temp == 2)
while( day = month_day[12] )
{if( day 1 ) if( Year_days % 7 == 0 ) printf( \n);
if( day = 10 )
printf(%3d ,day);
else
printf(%3d ,day);
Year_days++;
day++;
}
else
while (day = month_day[temp-1])
{
if( day 1 )
if( Year_days % 7 == 0 )
printf(\n);
if( day =10 )
printf(%3d ,day);
else
printf(%3d ,day);
Year_days++;
day++;
}
printf(\n);
if( getch() == q )
exit(0);
}
getch();
2 .12流程图
2.2模拟银行
2.21存储设计
struct service
{
int num; //客户号
string type; //到达或离开
int beginTime;//到达时间
int endTime;//离开时间
int money; //正数为存款,负数为取款
service* next;//指针域
};
2.22流程图
三. 详细设计:
3.1万年历
闰年函数的定义:
int IsLeapYear( int year )
{
if ((year %4 == 0) (year % 100 != 0) ||
(year % 400 == 0) )
return 1;
else
return 0;
判断星期的程序设计:
i = Year_days % 7;
printf(Mon Tue Wed Thu F
文档评论(0)