活期储蓄帐目管理数据结构要点.pdf

上传人:tbuqq 文档编号:5209923 上传时间:2020-02-21 格式:PDF 页数:17 大小:471.07KB
返回 下载 相关 举报
活期储蓄帐目管理数据结构要点.pdf_第1页
第1页 / 共17页
活期储蓄帐目管理数据结构要点.pdf_第2页
第2页 / 共17页
活期储蓄帐目管理数据结构要点.pdf_第3页
第3页 / 共17页
活期储蓄帐目管理数据结构要点.pdf_第4页
第4页 / 共17页
活期储蓄帐目管理数据结构要点.pdf_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《活期储蓄帐目管理数据结构要点.pdf》由会员分享,可在线阅读,更多相关《活期储蓄帐目管理数据结构要点.pdf(17页珍藏版)》请在三一文库上搜索。

1、洛 阳 理 工 学 院 课 程 设 计 报 告 课程名称数据结构课程设计 设计题目活期储蓄帐目管理 专业计算机科学与技术 课 程 设 计 任 务 书 设计题目:活期储蓄帐目管理 设计内容与要求: 【问题描述】 活期储蓄处理中, 储户开户、销户、存入、支出活动频繁。 设计一个活期储蓄账目管理系统。 【基本要求】 1) 能比较迅速地找到储户的帐户,以实现存款、取款记账; 2) 能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。 课 程 设 计 评 语 成绩: 指导教师: _ 年月日 洛 阳 理 工 学 院课 程 设 计 报 告 1 目录 一、问题描述与基本要求 2 1.1 问题描述 2 1

2、.2 基本要求 2 二、数据结构的设计 2 2.1 数据结构的选择 2 2.2 单链表的定义 3 2.3 模块划分 3 三、模块结构图 4 四、程序流程图 4 五、调试分析 7 5.1 程序错误修改及完善的过程7 5.2 最终程序所有功能运行结果8 六、心得体会 9 七、源程序清单. 10 洛 阳 理 工 学 院课 程 设 计 报 告 2 一、问题描述与基本要求 1.1 问题描述 活期储蓄处理中,储户开户、销户、存入、支出活动频繁。设计一个活期储 蓄账目管理系统。 1.2 基本要求 系统设计要求: 1、能比较迅速地实现插入,以实现储户开户的功能,储户开户时需输入的信 息包括储户姓名,密码。 2

3、、 能比较迅速地通过储户的账户序号和密码找到储户的账户,并删除该账户, 以实现销户的功能。 3、能比较迅速地通过储户的账户序号和密码找到储户的账户(密码不对时, 可选择是否重新输入密码)实现账户登录的功能。登录成功后,再通过修改链表 结点数据域中的对应元素,以实现存款、取款、显示余额等功能,若取款时账户 余额不足,输出提示信息“取款失败! 你账户上的金额不足 ! ”,并显示账户当前 余额,并且提示重新输入合适的取款金额。 4、查找活期储蓄帐目管理系统当前存在的储户,当输出活期储蓄帐目管理系 统没有账户时, 输出提示信息“活期储蓄帐目管理系统没有账户”,当有账户时, 输出所有账户的相关信息,包括

4、储户姓名,帐号,密码,账户余额。 二、数据结构的设计 2.1 数据结构的选择 课程设计题目的要求是,要较简单迅速地实现开户、销户、存款、取款、输 出用户信息的功能,于是我很自然地想到了可以用单链表的结构,通过编写相应 功能函数来实现建立新结点、删除结点、修改结点中数据域的内容、输出结点数 据域中的内容等功能,即可满足课程设计题目的要求。 洛 阳 理 工 学 院课 程 设 计 报 告 3 2.2 单链表的定义 先定义单链表结点的数据域,数据域包括储户姓名、账户序号、账户密码、 账户金额等储户信息,然后再定义链表结点,链表结点包括结点数据域和结点链 域,最后再定义指向链表结点的指针。 数据结构类型

5、定义: typedef struct ListData /定义结点数据域 char name3; /储户姓名 int account; /账户账号 char password5; /账户密码 int money; /账户金额 ListData; typedef struct node /定义链表结点 ListData data; /结点数据域 struct node *next; /结点链域 ListNode; 2.3 模块划分 (1)建立空链表函数: void InitList (LinkList *L) (2)插入链表结点,实现开户功能函数:void InsertList (LinkLis

6、t *L) (3)删除链表结点,实现销户功能函数:void DeleteList (LinkList *L) (4)储户存款、取款、显示余额函数: void Deposit (LinkList *L,LinkList *p) (5)链表查找,实现用户登录功能函数:void Search (LinkList *L) (6)输出链表函数: void PrintList (LinkList *L) (7)主菜单函数: void menu() (8)选择函数: void choice() (9)主函数: void main() 洛 阳 理 工 学 院课 程 设 计 报 告 4 三、模块结构图 四、程序

7、流程图 1 InitList ()函数 2. InsertList ()函数 洛 阳 理 工 学 院课 程 设 计 报 告 5 3. DeleteList()函数 4. PrintList()函数 5. Deposit()函数 洛 阳 理 工 学 院课 程 设 计 报 告 6 6. Search()函数 7. menu() 函数 洛 阳 理 工 学 院课 程 设 计 报 告 7 8. choice()函数 9.main() 函数 五、调试分析 5.1 程序错误修改及完善的过程 1、当看到这个课程设计题目时,我觉得还算比较简单,因为我之前数据结构 实验就做过单链表的插入、删除、查找、输出,而这次

8、活期储蓄帐目管理系统要 求的开户、销户、存款、取款、输出储户信息等功能,即可用单链表的相关功能 函数来实现,于是我修改了之前写过的单链表的一些函数,以满足这次题目的要 洛 阳 理 工 学 院课 程 设 计 报 告 8 求,但在实验过程中仍出现了一些错误。最终经过我的仔细检查和修改,最终编 写出了符合要求的程序,还增加了一些功能。 2、我编写完程序后,觉得程序太过简单,又想到题目是活期储蓄帐目管理系 统,那账户应该是有密码保证安全性的,于是我又在单链表结点的数据域中加入 了一个新的元素password5 ,并且还修改了后面相关函数的定义,确保在销户 时,必须账户序号和密码相对应时才能销户成功,在

9、存款、取款时也只有当账户 序号和密码相对应时才能登录成功,选择存款、取款或显示余额等功能。因此, 函数定义中除了密码正确时的相关操作,还应有密码错误时的提示信息和相关操 作。于是,我在 DeleteList函数和 Search 函数中加入了判断p-data.password 与 mima是否相等的语句。 3、修改了相关函数定义后,调试程序,又出现了如下错误:error C2065: strcmp : undeclared identifier,我才意识到我在DeleteList函数和 Search 函数的定义中调用了strcmp 函数,头文件中应包括 #include,加上后 运行结果就对了。

10、 修改后,相关调试结果如下: 4、再次修改完程序后,我希望程序还能更加完善,于是我开始思考出了密码 与账户不对应,导致销户失败和登录失败外,还可能出现哪些其他的特殊情况。 于是我又想到了两个特殊情况,一是取款时,账户余额可能不够,则应该输出提 示信息,告知用户当前账户余额,并要求用户输入合适的取款金额。二是,可能 系统没有建立账户,或者是建立了账户但是已经销户,就会导致当前系统没有账 户,输出账户信息为空,这时就需要输出提示信息“活期储蓄帐目管理系统没有 账户”,于是我根据自己的想法又对程序做了一些修改,最终程序完成所有功能 运行。 5.2 最终程序所有功能运行结果 (1)主菜单 洛 阳 理

11、工 学 院课 程 设 计 报 告 9 (2)开户(3)销户 (4)账号登录,存、取款及查询余额 (5)显示出户信息 六、心得体会 这次课程设计,我选的题目是活期储蓄账目管理,对于这个实验开始感觉不 知从哪儿开始,后来经过认真分析后,结合所学知识并查阅了许多相关的课外知 识,我们开始了一步步解题编程。 在编程过程中,遇到问题的时候就与同学一起讨论解决,从其他人身上学到 了很多,慢慢把不会不理解的地方给弄明白了。在经过很多次调试以后,最终没 洛 阳 理 工 学 院课 程 设 计 报 告 10 有出现错误了,实验能够执行,将功能实现,最后完成程序编写。虽然不是很完 美,但发现不足之处并在以后的设计中

12、注意这些细节,对于将来的实践还是很有 帮助,我们可以不断发现我们的不完美,并想办法去改进这些不完美。 这次的综合性实验使我了解到,平时对知识的积累相当重要,同时也要注重 课上老师的讲解,老师在课上的延伸是课本上所没有的,这些知识对于我们对程 序的编写有很大的作用。同时,编程也要求我们有足够的耐心,细细推敲,越着 急可能就越无法得到我们想要的结果,遇到不会的问题要多多请教,知识是在实 践与向别人请教的过程中积累的,所以问是至关重要的,只要肯下功夫很多东西 都是可以完成的。总之,编程使我学到更多,更全面的知识。 通过这次课程设计学到了很多东西包括以前在课本上没有学到的知识,还使 我懂得了理论和时间

13、结合是很重要的。让我进一步了解了程序设计方法,并且对 这门课产生了浓厚的兴趣。更重要的是培养了自己耐心、细心、用心的良好品质。 同时也非常感谢同学的帮助及老师的建议与指导。 七、源程序清单 #include #include #include int total=1;/定义的全局变量,用于开户所需 typedef struct ListData /定义结点数据域 char name8; /储户姓名 int account; /账户账号 char password6; /账户密码 float money; /账户金额 ListData; typedef struct node /定义链表结点 L

14、istData data; /结点数据域 struct node *next; /结点链域 Link; void InitList(Link *L) /建立空链表 L=(Link *)malloc(sizeof(Link); /建立头结点 L-next=NULL; /建立空的单链表L void InsertList(Link *L) /链表插入结点,实现开户功能,需输入储户姓名和密码 洛 阳 理 工 学 院课 程 设 计 报 告 11 Link *s; s=(Link*)malloc(sizeof(Link); /建立新结点s printf(“请输入你要开户的姓名:“); scanf(“%s“

15、,s-data.name); s-data.account=1000+total+; printf(“你开户的账号为:%dn“,s-data.account); printf(“请输入你账号的密码:“); scanf(“%s“,s-data.password); s-data.money=0.00; s-next=NULL; if(L-next=NULL) /头插法 L-next=s; else s-next=L-next; /将 s 结点插入表头 L-next=s; printf(“开户成功 !n“); void DeleteList(Link *L) /删除链表结点,实现销户功能(需要输入

16、账号和密码) Link *p=L,*q; char pass6; int s; printf(“请输入你要销户的账号:“); scanf(“%d“, printf(“请输入该账号的密码:“); scanf(“%s“,pass); while(p-next!=NULL) if(p-next-data.account=s) break; p=p-next; if(p-next!=NULL) while(strcmp(p-next-data.password,pass)!=0) printf(“密码错误 !请重新输入 :“); scanf(“%s“,pass); q=p-next; p-next=q

17、-next; /修改指针,删除结点q 洛 阳 理 工 学 院课 程 设 计 报 告 12 free(q); printf(“账号销户成功!n“); else printf(“你所要销户的的账号不存在( 或已经销户 ) 。n“); void PrintList(Link *L) /输出链表,实现储户信息输出 Link *p=L-next; while (p!=NULL) printf(“%st“,p-data.name); printf(“%dt%st%.2fn“,p-data.account,p-data.password,p-data.money); p=p-next; void Depos

18、it(Link *L,Link *p) /储户存款、取款、查询余额 int cq; float mn; while(1) if(p!=NULL) printf(“n1、存款 2 、取款 3 、查询余额 4 、退出账号 n 请输入数字 (1-4) 选 择功能: n“); scanf(“%d“, if(cq=1) printf(“请输入你的存款金额:“); scanf(“%f“, p-data.money=p-data.money+mn; printf(“存款成功 !n“); else if(cq=3) printf(“你账户的余额为:%.2fn“,p-data.money); else if(c

19、q=4) printf(“账号退出成功 !n“); return; else 洛 阳 理 工 学 院课 程 设 计 报 告 13 printf(“请输入你的取款金额:“); scanf(“%f“, if(p-data.money-mn)=0) p-data.money=p-data.money-mn; printf(“取款成功 !n“); else printf(“取款失败 !n“); printf(“你账户上的金额不足! 你的账户余额 为:%.2fRMBn“,p-data.money); printf(“请输入合适的取款金额:“); void Search(Link *L) /链表查找 ,实

20、现用户登录功能(需要输入账号和密码) Link *p=L-next; /从表中第一个结点开始 int acc; char pass6; printf(“请输入你要登录的账号:“); scanf(“%d“, printf(“请输入你的密码:“); scanf(“%s“,pass); while(p!=NULL) /当前表未查完 if(p-data.account=acc) break; p=p-next; if(p=NULL) printf(“不存在该账户!n“); else if(strcmp(p-data.password,pass)=0) printf(“账号登录成功 !n“); else

21、 while(strcmp(p-data.password,pass)!=0) char pa; printf(“密码错误 !n“); 洛 阳 理 工 学 院课 程 设 计 报 告 14 printf(“是否重新输入( 是,就输入任意键) 、( 否,从键盘上输入N or n):“); scanf(“n%c“, if(pa=n|pa=N) system (“cls“); return; printf(“n请重新输入你的密码:“); scanf(“%s“,pass); Deposit(L,p); void menu() /主菜单 printf(“ *欢迎进入活期储蓄账目管理系统* n“); pri

22、ntf(“ 1.储户开户 n“); printf(“ 2.储户销户 n“); printf(“ 3.储户的账号存款、取款 n“); printf(“ 4.返回菜单 n“); printf(“ 5.查看所有储蓄账户信息 n“); printf(“ 6.退出账目管理 n“); printf(“ * n“); void choice() Link *L; InitList(L); while(1) int m; char ch; printf(“请选择你需要的功能:“); scanf(“%d“, if(m=6) break; system (“cls“); switch(m) case 1:InsertList(L);ch=getchar();break; case 2:DeleteList(L);ch=getchar();break; 洛 阳 理 工 学 院课 程 设 计 报 告 15 case 3:Search(L);ch=getchar();break; case 4:menu();ch=getchar();break; case 5:PrintList(L);ch=getchar();break; default:printf(“输入错误 ! 请重新选择功能。n“);break; void main() menu(); choice();

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1