课程设计说明书88262108.doc_第1页
课程设计说明书88262108.doc_第2页
课程设计说明书88262108.doc_第3页
课程设计说明书88262108.doc_第4页
课程设计说明书88262108.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计说明书一、设计题目 活期储蓄账目管理(限最多1人完成)二、主要内容编写一活期储蓄账目管理系统,实现储户开户、销户、存入、支出等活动。三、具体要求能比较迅速地找到储户的帐户,以实现存款、取款记账能比较简单,迅速地实现插入和删除,以实现开户和销户的需要l测试数据及测试结果请在上交的资料中写明;必须上机调试通过按数据结构课程设计大纲中的要求完成课程设计报告格式。四、主要技术路线提示本问题技术实现上不难,主要考虑优化问题。根据题意要求“快速”,得考虑算法和存储结构的选取。五、进度安排共计两周时间,建议进度安排如下:1 选题,应该在上机实验之前完成2 需求分析、概要设计可分配4学时完成3 详细设计可分配4学时4 调试和分析可分配10学时。2学时的机动,可提前安排部分提前结束任务的学生答辩六、完成后应上交的材料设计结束后,每个学生必须上交的材料有:1 课程设计报告打印稿一份2课程设计的源代码电子文档一份 七、推荐参考资料1. 冯博琴 等编著,软件技术基础(修改版),西安交通大学出版社,19972. 严蔚敏 等著,数据结构,清华大学出版社,20033. 李芸芳 等著,软件技术基础(第二版),清华大学出版社,20004. 徐孝凯 等著,数据结构(C语言描述),清华大学出版社,2004指导教师 签名日期 年 月 日系 主 任 审核日期 年 月 日目 录 摘 要 .11 引 言. .21.1 问题的提出 21.1.1数据结构 21.1.2数据结构的发展 21.2国内外研究的现状 21.3任务与分析 22需求分析. 32.1 功能分析 32.2 方案分析 32.3 算法分析 33 总体设计. 33.1 数据结构 33.2 逻辑结构与物理结构 . 43.3 模块功能分析与外部设计.43.4 抽象数据类定义 54 详细设计. 54.1 数据类型定义.54.2 主要模块内部设计.54.2.1 储户开户模块.54.2.2 储户销户模块.64.2.3 储户登录模块.74.2.4 储户存入及支出模块.75 实现与调试分析. .85.1实现环境 85.2 语言选择 85.3 调试分析 86 测试分析. 96.1 测试用例.96.2 测试结果.116.3 性能分析11结论.12致谢.13参考文献.14摘 要 随着计算机的普及,现代人越来越多的想到用计算机来代 替许多人做的事情。从而提高办事效率,使经济收入更加可观,从而就产生了计算机这门课程。而计算机主要是通过程序来实现各种事情的,再者程序也必须通过各种算法才能达到存储各种数据,所以数据结构这门课程就应运而生。本课程设计主要是用数据结构编写关于活期储蓄账目管理的算法,来达到活期储蓄账目管理的目的。关键词: 计算机 算法 数据结构 管理 1 引 言 1.1 问题的提出 随着计算机的普及,现代人越来越多的想到用计算机来代替许多人做的事情。从而提高办事效率,使经济收入更加可观,从而就产生了计算机这门课程。而数据结构这门课程也因为数据存储而产生。从而让人产生了用数据结构编写关于活期储蓄账目管理的算法。1.1.1数据结构 数据结构就是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系各操作等的学科1.1.2数据结构的发展 “数据结构”作为一门独立的课程在国外是从1968年才开始设立的,但当时并没有对课程范围作明确规定。随后数据结构从表、树的理论扩充到了网络、集合代数论、格、关系等方面。再后来不断的扩大了数据结构的内容,并且随着数据库系统的发展,数据结构还增加了文件管理的内容。1.2国内外研究的现状 目前在我国,“数据结构”这门课程也已经不仅仅是计算机专业的教学计划中的核心课程之一,而且是其他非计算机专业的主要选修课程之一。“数据结构”在计算机科学中,已经不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其它系统程序和大型应用程序的重要基础。在国内外,“数据结构”的发展并未终结。而是从两方面继续发展下去1.3任务与分析 本课题主要的目的是为了编写一活期储蓄账目管理系统,实现储户开户、销户、存入、支出等活动。其主要要求是能比较迅速地找到储户的帐户,以实现存款、取款记账,还要能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。2 需求分析2.1 功能分析本课程设计的主要功能包括实现储户开户、销户、存入、支出等活动,根据要求是能比较迅速找到账户,因此要实现这样的几个功能,意思就是要通过链表来存储数据结构,其结构则按照C语言的相关知识定义结构体,其中储户开户、销户就是实现链表的插入与删除,而存入、支出等活动则是实现链表中结点的查找,然后进行更改。2.2 方案分析在本课程设计的方案设计中,已经确定了用链表来作为数据的存储结构,所以这里我采用单链表作为其存储结构,首先用结构体来定义其数据类型,然后通过单链表的相关知识将数据按照该数据结构存储,之后运用文件的相关知识将更改的数据写入文件中,这样就完成了本课程设计的方案设计。2.3 算法分析对于本课程设计中,主要运用到了单链表的相关知识,其主要算法也就来源于单链表的相关算法,首先对于储户开户与销户主要是链表的插入与删除,与其主要的区别在于其数据类型不一样而已,在这里我们的数据类型主要是自己定义的类型,还有储户的存入及其支出也就是按照相关条件在单链表中进行查找与修改运算而已,故此程序的主要算法都不难。 3 概要设计3.1 数据结构该课程设计的数据结构是线性的数据存储结构,采用的是单链表类型的存储结构。3.2 逻辑结构与物理结构该存储结构是链式存储结构,所以就不像顺序存储结构那样逻辑结构与物理结构相对应都是线性的,元素在物理结构中的相对位置来表示数据元素之间的逻辑关系。作为非顺序存储结构(链式存储结构)是借助指示元素物理结构中的存储地址的指针来表示数据之间的逻辑关系的。3.3 功能模块划分3.3.1 结构框图图 3.3.1 程序的总体设计图3.3.2模块功能分析及其外部设计开户模块主要是输入需要开户的姓名,然后建立开户账号,提醒输入账号密码。销户模块则是输入需要销户的账号及其密码,然后从系统中销去些账号的相关记录。同样存款是根据提醒输入需要登录的账号,然后再输入其密码,之后就可以查看其账号上的相关资料。取款则是要求登录需要存入及其支出的账号,然后对该账号进行相关的存入及支出。程序的外部设计主要是通过编写一个菜单功能来实现各个模块功能的调用,从而更好的协调各个模块功能之间的关系,同时还要编写一段代码来实现所有数据更改后将其写入文件中,实现数据的及时更新,维护数据的正确性。3.4 抽象数据类定义typedef struct ElemTypechar name8;int account;char password6;float money;ElemType;4 详细设计4.1数据类型定义 首先将活期储蓄账目这个数据抽象定义为数据类型ElemType,其中包括账户号码account,姓名name及其账号密码password,还有账号上的金额 money 。然后再将其链式存储结构中的结构类型定义为刚刚说的抽象类型,如下:typedef struct lnodeElemType data;struct lnode *next;LINK;4.2 主要模块内部设计4.2.1储户开户模块 储户输入要想开户的储户输入其姓名及其开户账号的密码,然后显示开户成功,则开户就成功了。图 4.2.1 储户开户模块图4.2.2 储户销户模块储户输入需要销户的账号,然后程序自动判断该账号是否存在,然后输入账号密码,若账号与密码相对应,则删除该账号。图 4.2.2 储户销户模块分析图4.2.3 储户登录模块图 4.2.3 账号登录模块分析4.2.4 储户的存入及其支出模块储户的存取款,首先在登录账户的基础上,选择存或者取款,然后输入相应的金额,若是取款应判断其金额是否小于账户上的金额,如果不小于,则提示储户重新输入相应的金额,或者退出。图 4.2.4 储户存入及支出模块分析5 实现调试与分析5.1 实现环境该课程设计中程序的实现环境是VISUAL C+ 6.0 。5.2 语言选择本课程设计选用的语言是C语言。5.3 调试分析经过调试分析解决了程序在储户开户过程中关于储户的账号问题,以至于账号不会出现重复等问题。同时在调试过程中还遇到了在登录账号后,对账号中选择相应的存款、取款功能时,如果输入与要求不一致可能导致程序直接结束,这就导致了程序更改的数据没有写入文件中,这种无理退出也在程序的调试中给解决了。6 测试分析6.1 测试用例首先进入VC+6.0,然后进入源程序,接着选择debug文件夹下的1-2-3.exe文件即可运行程序。图 6.1 菜单界面从图6.1可以看出程序进入到了活期储蓄账目管理的菜单界面,并且要求你选择相应的功能,当我选择功能1时:图 6.2 储户开户从图6.2可以知道选择功能1后,要求输入开户姓名,输入后则自动输出账号,并要求我输入账号的密码,按要求输入后,就显示开户成功。说明开户成功了。再选择功能4 就返回菜单了。然后我再选择功能2:图 6.3 储户销户从图6.3可以看出再选择功能2后,就进入储户销户模式,输入要销户的账号及其密码,当显示账号销户成功则表明储户销户成功了。同样返回主菜单,再选择功能3:图 6.4 账号存取款及查询金额从图6.4可以看出程序实现了登录账号存款以及取款的功能,并且还可以查询金额,也同时更新了账户内金额的信息。然后就退出了账号。返回主菜单选择相应的功能5进行测试:图 6.5 账户相应信息从图6.5中可以看出该功能也完成了。6.2 测试结果从6.1测试用例中,可以看出该程序实现了程序的各个模块的功能,同时也解决了程序在调试与分析过程中遇到的各种问题。总之这个程序的各个模块的功能的测试结果合格。6.3 性能分析该程序能够迅速的进行储户开户以及销户等各项操作,同时程序在储户取款以及存款过程都详尽的描述了各种操作提示,也解决了程序在不按要求输入时可能造成的情况进行了适当的处理。可见此课程设计的性能较好。结 论通过本次活期储蓄管理课程设计,实现了储蓄账目的存储及其管理。能比较迅速地找到储户的账户,以实现存款、取款记账。同时也能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。本课程设计的与众不同的地方就在于处理了用户不按要求输入造成程序出错的问题进行了有效的处理,不会造成该系统的崩溃。还有就是在于文件应用方面,虽然以前没有做过关于文件方面的课程设计,但是经过自己自行复习了文件方面相应的知识,也把文件应运得很好。本课程设计还未完成之前还存在一些小问题,那就是程序再进行存储进文件时,出现了一些问题,经过修改和完善,终于解决了这个小问题,使用户操作的结果都存储到文件中去了,保证了文件存储的数据的有效性。致 谢感谢在这次课程设计中给予指导的高志升老师,没有高老师的指导与讲解,跟本不可能在这么短的时间内完这个课程设计。同时也感谢在所有给予我支持和帮助的同学,在这里忠心的感谢他们。参考文献1杨宝刚.开展企业管理信息化工作的步骤J.企业管理.2002.(11).12152Islamabad. Software tools for forgery detectionJ. Business line.2001. (5). 2932 3 严蔚敏.吴伟民编著数据结构(C语言版).清华大学出版社J.1997.4 IN 7-302-02368-94 数据结构教程(C语言版)/李春葆,金晶编著.清华大学出版社J.2006.11 ISBN 7-302-14054-5#include stdio.h#include stdlib.h#include time.hvoid b();void kaihu();void cunkuan();void zhuanzhang();void chaxun();void gaimi();void qukuan();void suijishu();int q=0,count1=0,u=0,r=0;struct pchar name20;int zhanghao;int mima;float jine;struct p a10000;void main ()system(color f0);int l,k;printf (t|n);printf (t| |n);printf (t| |n);printf (t| |n);printf (t| |n);printf (t| |n);printf (t| |n);printf (t| |n);printf (t| 银行 |n);printf (t| |n);printf (t| |n);printf (t| 欢迎你的使用! |n);printf (t| |n);printf (t| |n);printf (t| |n);printf (t| |n);printf (t| |n);printf (t|n);printf (n);printf (n);printf(ttt请稍后,正在检测运行环境.n);for(l=0;l80;l+)for(k=0;k10000000;k+)if(k);printf (ttt检测完成按回车键进入系统);getchar();system(cls);b();void b()int x;doprintf(=主菜单=n);printf(ttt1. 开户:n);printf(ttt2. 存款:n);printf(ttt3. 取款:n);printf(ttt4. 转帐:n);printf(ttt5. 查询:n);printf(ttt6. 改密:n);printf(ttt7. 查看并修改系统时间n);printf(ttt8. 退出:n);printf(请输入你您要办理的业务:);scanf(%d,&x);if(x=8)break;switch (x)case 1:kaihu();break;case 2:cunkuan();break;case 3:qukuan();break;case 4:zhuanzhang();break;case 5:chaxun();break;case 6:gaimi();break;case 7:system(cls);printf(如果不许要修改,请按回车n);system(time);fflush(stdin);printf(ttt按回车回主菜单n);getchar();system(cls);b();break;default :printf(aattt请在18中选择n);break;while(1);void kaihu()int x,y;system(cls);printf(=开户=n);printf(请输入用户名:);scanf(%s,&);printf(请输入密码:);scanf(%d,&x);printf(请再次输入密码:);scanf(%d,&y);if(x!=y)printf(tt两次密码输入不正确,请返回主页重新注册开户.);fflush(stdin);getchar();system(cls);b();aq.mima=x;suijishu();printf(请输入存款金额:);scanf(%f,&aq.jine);printf(你的帐户信息如下:n);printf(ttt用户名:%sn,);printf(ttt帐号:%dn,aq.zhanghao);printf(ttt密码:%dn,aq.mima);printf(ttt余额:%0.2fn,aq.jine);q+;printf(ttt按回车回主菜单n);fflush(stdin);getchar();system(cls);void cunkuan()int count=0;system(cls);printf(=存款=n);int x;int y;int i;float z;printf(请输入帐户名:);scanf(%d,&x);printf(请输入密码:);scanf(%d,&y);for(i=0;iq;i+)if(ai.zhanghao=x&ai.mima=y)printf(请输入你要存款的金额:);scanf(%f,&z);ai.jine=ai.jine+z;printf(现在的金额是%f,ai.jine);fflush(stdin);printf(ttt按回车回主菜单n);getchar();system(cls);elseprintf(ttt你输入的密码或帐户名有误n);fflush(stdin);printf(ttt按回车回主菜单n);getchar();system(cls);b();count+;if(count=3)printf(ttt由于你连续3次输入错误。系统自动退出.);void qukuan()int count=0;system(cls);printf(=取款=n);int x;int y;int i,l,k;float z;printf(请输入帐户名:);scanf(%d,&x);printf(请输入密码:);scanf(%d,&y);for(i=0;i=z)fflush(stdin);printf(ttt对不起您的帐户余额不足,系统拒绝透支ntt按回车回主菜单n);getchar();system(cls);b();ai.jine=ai.jine-z;printf(ttt系统正在为您办理nttt请稍后.n);for(l=0;l80;l+)for(k=0;k10000000;k+)if(k);printf(nnttt请在30秒内取出n);printf(ttt您本次取款%f元n,z);printf(ttt现在的金额是%fn,ai.jine);fflush(stdin);printf(ttt按回车回主菜单n);getchar();system(cls);b();printf(ttt你输入的密码或帐户名有误n);fflush(stdin);printf(ttt按回车回主菜单n);getchar();system(cls);b();r+;if(r=3)printf(ttt由于你连续3次输入错误。系统自动退出.);void zhuanzhang() system(cls); printf(=转帐=n); int ID=0,p=0,IID=0; int i,j; float m; /这个U变量是一个记数器,郁闷的是这个U必须是全局变量. 这个变量是用来锁定转帐功能的if(u=3)system(cls);printf(ttt对不起您的输入上限次数以到nttt此功能暂时锁定,请按回车返回主菜单);fflush(stdin);getchar();system(cls);b();else printf(现在系统为你转账!nn); printf(请输入你的账号:); scanf(%d,&ID); printf(请输入你的密码:); scanf(%d,&p); for(i=0;iq;i+)if(ID=ai.zhanghao&p=ai.mima)/判断您自己的帐户密码是否正确 printf(你的账户余额是:%fnnn,ai.jine); printf(请输入对方的账号:); scanf(%ld,&IID); if(IID=ID)/也许是我的这个代码有问题,当给自己转帐时会出先短时间的死循环.懒的改了, /所以用这个屏蔽掉自己帐号system(cls);fflush(stdin);printf(ttt对不起,不可以给自己转帐nttt按回车回主菜单);getchar();system(cls);b(); else/=判断对方帐户是否存在 for(j=0;jq;q+) if(aj.zhanghao!=IID)system(cls);printf(ttt该帐户不存在n);fflush(stdin);printf(ttt按回车回主菜单n);getchar();system(cls);b(); for(j=0;j=m)/判断您的帐户余额是否大于您要转的金额 ai.jine=ai.jine-m;aj.jine=aj.jine+m; printf(tt转账成功! ,你的账户余额是:%f n,ai.jine); else printf(tt转账失败! ,你的账户余额不足!n);printf(你的账户余额是:%f n,ai.jine); break; fflush(stdin);printf(ttt按回车回主菜单);getchar();system(cls);b();else system(cls);printf(ttt对不起您的帐户或密码错误,请按回车返回主菜单重新输入);fflush(stdin);u+;getchar();system(cls);b();void chaxun()system(cls);printf(=查询=n);int i;for (i=0;iq;i+)printf(nn第%d个用户n,i+1);printf(ttt用户名%sn,);printf(ttt帐号%dn,ai.zhanghao);printf(ttt帐户余额%0.2fn,ai.jine);fflush(stdin);printf(ttt按回车回主菜单);getchar();system(cls);b();void gaimi()int i,x,y,m,j;/这里的COUNT也是全局变量,没有办法。这个IF判断是也是用来锁定改密功能的if(count1=3)system(cls);printf(tt改密功能暂时锁定,请选择其他你要办理的业务ntt无须办理其他业务,请回到主菜单后选择退出nnn);fflush(stdin);printf(ttt按回车回主菜单);getchar();system(cls);b();system(cls);if(count1=3)ff

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论