数据结构课程设计实验报告Word格式.docx
- 文档编号:19737906
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:32
- 大小:200.35KB
数据结构课程设计实验报告Word格式.docx
《数据结构课程设计实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计实验报告Word格式.docx(32页珍藏版)》请在冰豆网上搜索。
班级:
通信工程1301班
题目:
活期储蓄帐目管理系统
指导老师:
康松林
完成日期:
2015年7月16日
1
一、问题描述与基本要求...................................1
1.1问题描述..........................................1
1.2基本要求..........................................1
二、数据结构的设计.......................................1
2.1数据结构的选择.....................................1
2.2单链表的定义.......................................2
2.3重要函数的定义及说明...............................2
三、软件模块结构图.......................................6
3.1大体模块关系图.....................................6
3.2各模块具体分析.....................................7
四、程序流程图...........................................8
五、源程序..............................................11
六、调试分析............................................16
6.1程序错误修改及完善的过程..........................16
6.2最终程序所有功能运行结果..........................20
6.3测试数据.........................................22
七、用户使用手册........................................23
八、心得体会............................................23
一、问题描述与基本要求
1.1问题描述
设计一个活期储蓄帐目管理系统
活期储蓄处理中,储户开户、销户、存入、支出活动频繁。
1.2基本要求
系统设计要求:
1、能比较迅速地实现插入,以实现储户开户的功能,储户开户时需输入的信息包括储户姓名,密码。
2、能比较迅速地通过储户的账户序号和密码找到储户的账户,并删除该账户,以实现销户的功能。
3、能比较迅速地通过储户的账户序号和密码找到储户的账户(密码不对时,可选择是否重新输入密码)实现账户登录的功能。
登录成功后,再通过修改链表结点数据域中的对应元素,以实现存款、取款、显示余额等功能,若取款时账户余额不足,输出提示信息“取款失败!
你账户上的金额不足!
”,并显示账户当前余额,并且提示重新输入合适的取款金额。
4、查找活期储蓄帐目管理系统当前存在的储户,当输出活期储蓄帐目管理系统没有账户时,输出提示信息“活期储蓄帐目管理系统没有账户”,当有账户时,输出所有账户的相关信息,包括储户姓名,帐号,密码,账户余额。
二、数据结构的设计
2.1数据结构的选择
课程设计题目的要求是,要较简单迅速地实现开户、销户、存款、取款、输出用户信息的功能,于是我很自然地想到了可以用单链表的结构,通过编写相应功能函数来实现建立新结点、删除结点、修改结点中数据域的内容、输出结点数据域中的内容等功能,即可满足课程设计题目的要求。
2.2单链表的定义
先定义单链表结点的数据域,数据域包括储户姓名、账户序号、账户密码、
账户金额等储户信息,然后再定义链表结点,链表结点包括结点数据域和结点链域,最后再定义指向链表结点的指针。
以下为单链表的相关定义:
typedefstructListData//定义结点数据域
{
charname[3];
//储户姓名
intaccount;
//账户序号
charpassword[5];
//账户密码
intmoney;
//账户金额
}ListData;
typedefstructnode//定义链表结点
ListDatadata;
//结点数据域
structnode*next;
//结点链域
}ListNode;
typedefListNode*LinkList;
//指向链表结点的指针
2.3重要函数的定义及说明
1、voidInitList(LinkList&
L)//建立空链表
2、voidInsertList(LinkList&
L)//插入链表结点,实现开户功能
(需要输入储户姓名和密码,以确定开户对象)
3、voidDeleteList(LinkList&
L)//删除链表结点,实现销户功能
(需要输入账号和密码,以确定销户对象)
4、voidDeposit(LinkList&
L,LinkListp)//储户存款、取款、显示余额(要先通过账号和密码登录,若取款时账户余额不足,输出提示信息,显示账户当前余额,并且提示重新输入取款金额。
)
5、voidSearch(LinkListL)//链表查找,实现用户登录功能
(需要输入账号和密码,以确定登录对象,密码输出错误时可选择是否重新输入密码)
6、voidPrintList(LinkListL)//输出链表,实现储户姓名,账号序号,密码,现有余额等相关信息。
(当输出活期储蓄帐目管理系统没有账户时,输出提示信息,当有账户时,输出所有账户的相关信息。
以下为重要函数的定义:
voidInitList(LinkList&
L=(ListNode*)malloc(sizeof(ListNode));
L->
next=NULL;
}
voidInsertList(LinkList&
L)//链表插入结点,实现开户功能,需输入储户姓名和密码
LinkListp;
p=(ListNode*)malloc(sizeof(ListNode));
牰湩晴尨请输入你要开户的姓名(不超过4个字符):
);
scanf(%s,p->
data.name);
number=number+1;
p->
data.account=number;
牰湩晴尨你开户的账号为:
%d\n,p->
data.account);
牰湩晴尨请输入你账号的密码(不超过6个字符):
data.password);
data.money=0;
if(L->
next==NULL)//前插法
next=p;
else
{
next=L->
next;
}
牰湩晴尨开户成功!
\n);
voidDeleteList(LinkList&
L)//删除链表结点,实现销户功能(需要输入账号和密码)
LinkListp=L,q;
charmima[5];
ints;
牰湩晴尨请输入你要销户的账号:
scanf(%d,&
s);
牰湩晴尨请输入该账号的密码:
scanf(%s,mima);
while(p->
next!
=NULL)
if(p->
next->
data.account==s)
break;
p=p->
while(strcmp(p->
data.password,mima)!
=0)
牰湩晴尨密码错误!
请重新输入:
q=p->
next=q->
free(q);
牰湩晴尨销户成功。
汥敳瀠楲瑮?
你所要销户的的账号不存在。
voidDeposit(LinkList&
L,LinkListp)//储户存款、取款、显示余额
intm;
intn;
while
(1)
if(p!
printf(\
请输入数字选择功能:
1、存款2、取款3、查询余额4、退出账号:
m);
if(m==1)
牰湩晴尨请输入你的存款金额:
n);
data.money=p->
data.money+n;
牰湩晴尨存款成功!
elseif(m==2)
牰湩晴尨请输入你的取款金额:
gg:
if((p->
data.money-n)>
data.money-n;
牰湩晴尨取款成功!
牰湩晴尨取款失败!
牰湩晴尨你的账户余额为:
data.money);
4
牰湩晴尨请输入合适的取款金额:
gotogg;
elseif(m==3)
牰湩晴尨你账户的余额为:
elseif(m==4)
牰湩晴尨账号退出成功。
return;
voidSearch(LinkListL)//链表查找,实现用户登录功能(需要输入账号和密码)
LinkListp=L->
inti;
牰湩晴尨请输入你要登录的账号:
i);
tt:
牰湩晴尨请输入你的密码:
while(p!
data.account==i)
if(p==NULL)
牰湩晴尨不存在该账户\n);
if(strcmp(p->
data.password,mima)==0)
牰湩晴尨登录成功。
charj;
牰湩晴尨密码错误\n);
牰湩晴尨是否重新输入(是,从键盘输入Y)、(否,从键盘上输入N):
5
scanf(\
%c,&
j);
if(j=='
N'
{return;
elseif(j=='
Y'
{gotott;
Deposit(L,p);
voidPrintList(LinkListL)//输出链表,实现储户信息输出
牰湩晴尨活期储蓄帐目管理系统没有账户\n);
姓名帐号密码账户余额\n);
printf(%s\t,p->
printf(%d\t%s\t\t%d\n,p->
data.account,p->
data.password,p->
牰湩晴尨请先输入enter键,再重新选择功能\n);
三、软件模块结构图
3.1大体模块关系图
主函数
链表链链链查找、表表表存款、显删插款取示除入模块模模模块块块
6
3.2各模块具体分析
链表插入模块具体分析如下:
InsertList(L)scanf()
data.name
data.password
链表删除模块具体分析如下:
scanf()
DeleteList(L)
s,mima
链表查找、存款、取款模块具体分析如下:
i,mima,j
scanf()
Search(L)m,n
Deposit(L,p)p->
data.money
链表输出模块具体分析如下:
PrintList(L)printf()
data.name,p->
data.passwordp->
7
注:
以上具体分析中,无箭头的线段表示函数的调用关系,椭圆中的数据为输入、输出或传递的值,箭头表示值的方向。
四、程序流程图
显示余额。
信息
结束1
^4
……………………
A
B
DC
注:
因为整个程序流程图太长,一页画不下,所以上图为大体流程图,上图中1—>
A,2—>
B,3—>
C,4—>
D间流程省略了,以下为1—>
A,2—>
D间详细流程图。
8
>
1—
输入开户姓名
输入开户密码
开户成功
2—>
否账户是否存在
是
的户要你所销输入账户密码的账号不存在
是
销户成功
B
9
3—>
C
是重新输入
取款金额取款成功存款成功
10
4—>
D
否是p==NULL?
D
五、源程序#include<
stdio.h>
#include<
string.h>
stdlib.h>
定义的全局变量,用于开户//intnumber=0;
定义结点数据域typedefstructListData//{
储户姓名//charname[3];
//账户序号intaccount;
账户密码//charpassword[5];
//账户金额intmoney;
typedefstructnode//定义链表结点{
//结点数据域ListDatadata;
结点链域//structnode*next;
11
12
13
14
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 实验 报告