课程设计-银行个人账户管理的实验报告.docx
西安彝重大学C语言课程设计报告题目:个人银行账户管理系统院系名称:计算机学院专业名称:计算机科学与技术班级:IIQg学生姓名:高丹学号(8位):04111196指导教师:王春梅设计起止时间:2012年06月06日2012年06月15日.一、设计目的1、学会用C语言编程实现小区管理系统;能熟练的掌握各个功能函数的熟练编写和理解。2、本次课程设计我设计的是一个银行个人账户管理系统。由于大学生日常生活开支以及钱的来源都需要详细的记录下来,所以我设计了这个系统,目的是希望通过这个系统来让大家养成良好的记账习惯,慢慢学会理财,并且可以对自己记录的数据进行简单的分析(通过其中的排序系统),到达更合理的利用自己的金钱资源的目的。二、设计内容经过对程序设计题目的分析可知,整个程序的设计实现大致分为九个模块,每一个模块对应一个或多个函数。在这些函数当中,储户注册函数,登录函数,储户信息录入函数,储户信息显示函数,信息插入函数,信息修改函数,信息排序函数以及信息删除的实现严格按照题目的要求,而储户密码的修改属于附加功能。读取文件函数和保存信息函数对其它函数的实现起辅助作用,主函数及菜单函数控制程序的整体运行。内容如下:1、 用户登录系统包括用户以及管理员的注册,登录界面,其中有注册函数和登录函数。2、 系统以菜单的模式翻开并工作有储户界面和管理员界面)。3、 储户信息的录入(保存函数)。4、 储户信息的读出并显示出来(信息读出并打印函数)。5、 储户信息的查询系统,包括按月份查询和按日期查询(用过查询函数来实现)。6、 储户信息的修改系统,包括修改月份,修改日期,修改良账数目和出账数目通过修改函数来实现)。7、 修改密码系统(修改密码函数实现储户对账户密码的修改)。8、 退出(退出到主界面和上一界面)。每一个储户记录都包含账户编号,月份,日期,进账数目,出账数目。在程序当中,将储户记录类型定义为结构体类型,添加以及追加的储户信息直接写入D盘的account.txt文件中,其它函数每次对储户记录的访问,其数据来源都是account.txt文件,这样做不但可以保证储户信息的一致性,而且可以对储户信息进行永久保存,保证每次运行程序都可以采用原来的数据。三、概要设计功能模块图2 .各个模块的详细功能L储户注册函数voidregist()主要实现程序最初储户注册自己的账户名和密码,只有注册了账户名和密码才可以进入账户管理系统并且操作自己的信息。3 .登录函数intload()储户和管理员通过此登录系统进入各自的页面对信息进行操作。4 .用户登陆界面voidmenu。以及管理员登录界面voidmenu。通过界面来选择想要操作的内容。5 .储户信息录入函数,包括链表的建立和信息的保存linklistcreat()>save(linklisth)实现储户信息以链表的形式录入并保存到文件中,即我们所说的记账。6 .储户信息读出函Node*ShoW()实现的功能是按照账号和密码对储户所存储的信息从所存文件中读出。7 .储户信息的查询函数,包括按月份查询和按日期查询。Node*Seareh()实现用户针对自己信息的查询,可以查询当月的账户信息,也可以查询当天的账户信息。8 .储户信息插入函数,包括两个函数,一个是单纯实现插入功能,另一个是在此系统中实现的插入功能。linklistinsert()>Insert(linklisth)实现储户信息插到原信息并且显示出来的功能。9 .信息修改函数,包括两个函数,一个是单纯实现修改,另一个是在此系统中实现对信息的修改功能linklistrecr(linklisth)>voidRecr()通过该函数管理员可以对储户的数据信息进行修改。10 信息排序函数,包括两个函数,一个是单纯实现排序,另一个是在此系统中实现对信息的排序。(在此只举按月份查询的例子linklistsort_mon(linklisthead)>voidSort_M()该函数实现的功能是对储户信息中各个工程按一定的顺序进行排序默认为升序)。11 .信息删除函数,包括两个函数,一个是单纯实现修改功能,另一个是在此系统上实现对信息修改的功能。linklistrecr(linklisth)>voidRecr()该函数可以对储户过期的信息进行删除操作。11.储户密码修改函数IintreS()可以实现对储户的密码进行修改;12.显示函数Node*print(linklisth)实现的是显示目前所有的有效储户记录信息。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。四、详细设计1.功能函数的调用关系图2、功能函数流程1信息录入函数2)、信息查询函数13)、信息修改函数4信息删除函数信息插入函数信息排序函数开始3、重点设计及其代码Node*h,*s,*k;s=show();h=recr(三);/recr(三);save(三);k=show();print(k);)linklistsort_mon(linklisthead)按照月份排序(Node*pri,*mid,*tai,*p;p=head->next;while(p!=NULL)(mid=head->next;if(head->Date.mon>head->next->Date.mon)(head->next=mid->next;mid->next=head;head=mid;)pri=head;mid=head->next;tai=mid->next;while(mid->next!=NULL)(if(mid->Date.mon>tai->Date.mon)(pri->next=mid->next;mid->next=tai->next;tai->next=mid;)pri=pri->next;mid=pri->next;tai=mid->next;)p=p->next;)returnhead;)linklistsort_day(linklisthead)按照日期排序(Node*pri,*mid,*tai,*p;p=head->next;while(p!=NULL)(mid=head->next;if(head->Date.day>head->next->Date.day)head->next=mid->next;mid->next=head;head=mid;)pri=head;mid=head->next;tai=mid->next;while(mid->next!=NULL)(if(mid->Date.day>tai->Date.day)(pri->next=mid->next;mid->next=tai->next;tai->next=mid;)pri=pri->next;mid=pri->next;tai=mid->next;)p=p->next;)returnhead;)linklistSOrt_inacc(IinkIiSthead)/按照进账数目排序(Node*pri,*mid,*tai,*p;p=head->next;while(p!=NULL)(mid=head->next;if(head->inacc>head->next->inacc)(head->next=mid->next;mid->next=head;head=mid;)pri=head;mid=head->next;tai=mid->next;while(mid->next!=NULL)(if(mid->inacc>tai->inacc)(pri->next=mid->next;mid->next=tai->next;tai->next=mid;pri=pri->next;mid=pri->next;tai=mid->next;)p=p->next;)returnhead;)linklistsort_outacc(linklisthead)按照出账数目排序(Node*pri,*mid,*tai,*p;p=head->next;while(p!=NULL)(mid=head->next;if(head->outacc>head->next->outacc)(head->next=mid->next;mid->next=head;head=mid;)pri=head;mid=head->next;tai=mid->next;while(mid->next!=NULL)(if(mid->outacc>tai->outacc)(pri->next=mid->next;mid->next=tai->next;tai->next=mid;)pri=pri->next;mid=pri->next;tai=mid->next;)p=p->next;)returnhead;)voidSOrt_M()大排序mon(Node*r,*s,*k;r=show();s=sort_mon(r);save(三);k=show();print(k);voidSOrt_D()大排序day(Node*r,*s,*k;r=show();s=sort_day(r);save(三);k=show();print(k);)voidSOrt()/大排序inacc(Node*r,*s,*k;r=show();s=sort_inacc(r);save(三);k=show();print(k);)voidSort_0()大排序OUtaCC(Node*r,*s,*k;r=show();s=sort_outacc(r);save(三);k=show();print(k);)voidStatiS()/统计(linklisth;Node*p,*q;/inti;h=show();p=h->next;q=p->next;while(p!=NULL)(/for(i=l;i<=l2;i+)/if(p->Date.mon=2)free(q);PrintfC账户编号月份日期