资源预览内容
第1页 / 共2页
第2页 / 共2页
亲,该文档总共2页全部预览完了,如果喜欢就下载吧!
资源描述
一种活期储蓄账目管理方案活期储蓄处理中,储户开户、销户、存人、支出活动频繁,系统设计要求所采用的数据结构满足下面两方面的要求:(1)能比较迅速地找到储户的账户,以实现存款、取款记账。(2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。一、数据结构设计假定储蓄所有 3 个活期储蓄账本,为了区别它们,为每一个账本各设一个封面(face),并取上名字。也就是为三个账本(链表) 各设一个表头结点。我们这样定义表头结点:struct fnode char billn2; / billn 是该账本的名字float sum; / sum 域存放着这本账的存款总额,每天汇总一次float sumin; / sumin 是当天该账本上储户存人金额总数float sumout; / sumout 是当天储户取出金额总数(以负数存放)struct bill *link; /指向按账号的 ASCII 码值的递增次序排序的储户帐户链表的头指针;我们采用一个数组将这三个账本管理起来,数组定义如下: struct fnode face3;储户的账户定义:struct bill char namel0; /name 为储户账号域float num; / num 为存款余额域其值为正时为存款额,为负时为欠款额,不允许欠款,即取款时发现要求取款的金额大于存款余额时则应拒付,并给出信息。struct bill *link; /指向同属一个帐本的其他储户;存/取款凭单定义:struct iobill char billn2; / billn 的含义与记录 facenode 中的 billn 域是相同的,用来指出储户账户在哪一本帐本上char name10; / name 为储户账号域float num; / num 域为存/ 取款金额,存人时为正,支出时为负;活期储蓄管理系统数据结构示意图二、系统设计方案:首先要考虑设几个空账本,以备记账,实际上就是开辟一个 face 数组,准备几本账,face 数组就是几个元素。申请到数组后,应将其 facei.billn 域填入指定的字符代号。也就是给每一个账本一个名字,以备区别。由于初始账本中没有内容,所以 facei.sum、facei.sumin 和 facei.sumout 应置为 0,而 facei.1ink 应置为空(NULL)。账本设立以后,就可以开始储蓄业务了。储蓄业务活动的由以下三个主要模块来完成。1、存/取款模块(void access()存款、取款、开户、销户都在这个模块完成,储户需要办理上述业务时,需先填写存/取款凭单 iobill。根据凭单中 iobill.billn 的内容可以找到该储户账户所处的账本,也就是 face 数组的第 i 个元素,它是储户链表的表头结点。从 facei.1ink 可以找到该账本的第一个储户的记录( 结点),从这个结点开始,沿着bill.link 域可以查找该储户的账户(结点) ,实现存/ 取款操作。在储户链表上找不到该储户的账户,说明是新开户的储户,需进行插入(新账户) 操作,为了加快查找速度,插入点需遵照储户账号的 ASCII 码值的递减、增次序安排。如果取款后,储户账户上 bill.num 域的内容变为 0,则需要从链表上删除这个储户的账户(结点) 。修改完储户本人的账户后,还需要对表头结点的内容 facei.sumin 或 facei.sumout 进行修改,以便以后汇总时方便。2汇总模块(void countsum()在每天下班之前或需要的时候,需要对每一本账和总账(三本) 进行汇总,以便核算,上报。由于在存/取款时每一个储户存 /取款都对 facei.sumin 或 facei.sumout 进行了修改,所以汇总是比较简单的。对于每一本账的汇总只要执行下面运算即可:facei.sum=facei.sum+facei.sumin+facei.sumout然后我们很容易就得出三本账的总账:for(i=0;i3;i+)sum=sum+facei.sum;sumin=sumin 十 facei.sumin;sumout=sumout+facei.summout;从而就可以知道全天支出的总金额 surnout,全天存人的总金额 sumin 和本储蓄所储户存款余额 sum。3打印模块(void printf()需要时可以打印总账,分账(即每本账) 的汇总情况还可以打印某一个储户的账户。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号