数据结构课程设计实验报告.docx

上传人:b****5 文档编号:6720920 上传时间:2023-01-09 格式:DOCX 页数:32 大小:200.35KB
下载 相关 举报
数据结构课程设计实验报告.docx_第1页
第1页 / 共32页
数据结构课程设计实验报告.docx_第2页
第2页 / 共32页
数据结构课程设计实验报告.docx_第3页
第3页 / 共32页
数据结构课程设计实验报告.docx_第4页
第4页 / 共32页
数据结构课程设计实验报告.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

数据结构课程设计实验报告.docx

《数据结构课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计实验报告.docx(32页珍藏版)》请在冰豆网上搜索。

数据结构课程设计实验报告.docx

数据结构课程设计实验报告

数据结构课程设计

开始

主函数main()

InitList(L)

功能表与编号选择1-5

输入数字,选择功能

,输入1输入3,输入4,,2输入输入5,InsertList(L)Search(L)PrintList(L)DeleteList(L)退出管用户开户输出储户存款、取款用户销户理系统

2

输入销户账号

3

输入要登录的账号

账户是否存在?

不存在该账号是

输入账户密码

C

密码是否正确?

是是登录成功是否重新输入密码

Deposit(L,p)

否退出登录,选择功能输入1-4显示3,输入,4输入后,输输入输入1后,输2当前余额退出账户入取款金额入存款金额

>=取款金额C

余额?

否4

否是p==NULL?

帐号、输出姓名、管理系统没有账户密码、账户余额p=p->next

数据结构

课程设计报告

学院:

信息科学与工程学院

班级:

通信工程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数据结构的选择

课程设计题目的要求是,要较简单迅速地实现开户、销户、存款、取款、输出用户信息的功能,于是我很自然地想到了可以用单链表的结构,通过编写相应功能函数来实现建立新结点、删除结点、修改结点中数据域的内容、输出结点数据域中的内容等功能,即可满足课程设计题目的要求。

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)//输出链表,实现储户姓名,账号序号,密码,现有余额等相关信息。

(当输出活期储蓄帐目管理系统没有账户时,输出提示信息,当有账户时,输出所有账户的相关信息。

以下为重要函数的定义:

2

数据结构课程设计

voidInitList(LinkList&L)//建立空链表

{

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个字符):

);

scanf(%s,p->data.password);

p->data.money=0;

p->next=NULL;

if(L->next==NULL)//前插法

L->next=p;

else

{

p->next=L->next;

L->next=p;

}

牰湩晴尨开户成功!

\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->next;

}

if(p->next!

=NULL)

3

数据结构课程设计

{

while(strcmp(p->next->data.password,mima)!

=0)

{

牰湩晴尨密码错误!

请重新输入:

);

scanf(%s,mima);

}

q=p->next;

p->next=q->next;

free(q);

牰湩晴尨销户成功。

\n);

}

汥敳瀠楲瑮?

你所要销户的的账号不存在。

\n);

}

voidDeposit(LinkList&L,LinkListp)//储户存款、取款、显示余额

{

intm;

intn;

while

(1)

{

if(p!

=NULL)

{

printf(\

请输入数字选择功能:

1、存款2、取款3、查询余额4、退出账号:

);

scanf(%d,&m);

if(m==1)

{

牰湩晴尨请输入你的存款金额:

);

scanf(%d,&n);

p->data.money=p->data.money+n;

牰湩晴尨存款成功!

\n);

}

elseif(m==2)

{

牰湩晴尨请输入你的取款金额:

);

gg:

scanf(%d,&n);

if((p->data.money-n)>=0)

{

p->data.money=p->data.money-n;

牰湩晴尨取款成功!

\n);

}

else

{

牰湩晴尨取款失败!

你账户上的金额不足!

\n);

牰湩晴尨你的账户余额为:

%d\n,p->data.money);

4

数据结构课程设计

牰湩晴尨请输入合适的取款金额:

);

gotogg;

}

}

elseif(m==3)

{

牰湩晴尨你账户的余额为:

%d\n,p->data.money);

}

elseif(m==4)

{

牰湩晴尨账号退出成功。

\n);

return;

}

}

}

}

voidSearch(LinkListL)//链表查找,实现用户登录功能(需要输入账号和密码)

{

LinkListp=L->next;

inti;

charmima[5];

牰湩晴尨请输入你要登录的账号:

);

scanf(%d,&i);

tt:

牰湩晴尨请输入你的密码:

);

scanf(%s,mima);

while(p!

=NULL)

{

if(p->data.account==i)

break;

p=p->next;

}

if(p==NULL)

牰湩晴尨不存在该账户\n);

else

{

if(strcmp(p->data.password,mima)==0)

牰湩晴尨登录成功。

\n);

else

{

while(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)//输出链表,实现储户信息输出

{

LinkListp=L->next;

if(p==NULL)

{

牰湩晴尨活期储蓄帐目管理系统没有账户\n);

}

汥敳瀠楲瑮?

姓名帐号密码账户余额\n);

while(p!

=NULL)

{

printf(%s\t,p->data.name);

printf(%d\t%s\t\t%d\n,p->data.account,p->data.password,p->data.money);

p=p->next;

}

牰湩晴尨请先输入enter键,再重新选择功能\n);

}

三、软件模块结构图

3.1大体模块关系图

主函数

链表链链链查找、表表表存款、显删插款取示除入模块模模模块块块

6

数据结构课程设计

3.2各模块具体分析

链表插入模块具体分析如下:

InsertList(L)scanf()

p->data.name

p->data.password

链表删除模块具体分析如下:

scanf()

DeleteList(L)

s,mima

链表查找、存款、取款模块具体分析如下:

i,mima,j

scanf()

Search(L)m,n

Deposit(L,p)p->data.money

链表输出模块具体分析如下:

PrintList(L)printf()

p->data.name,p->data.passwordp->data.account,p->data.money

7

数据结构课程设计

注:

以上具体分析中,无箭头的线段表示函数的调用关系,椭圆中的数据为输入、输出或传递的值,箭头表示值的方向。

四、程序流程图

显示余额。

信息

结束1

3

2

^4

……………………

A

B

DC

注:

因为整个程序流程图太长,一页画不下,所以上图为大体流程图,上图中1—>A,2—>B,3—>C,4—>D间流程省略了,以下为1—>A,2—>B,3—>C,4—>D间详细流程图。

8

数据结构课程设计

1

>A

1—

输入开户姓名

输入开户密码

开户成功

A

2—>B

否账户是否存在

的户要你所销输入账户密码的账号不存在

密码是否正确?

销户成功

B

9

数据结构课程设计

3—>C

是重新输入

取款金额取款成功存款成功

10

数据结构课程设计

4—>D

否是p==NULL?

D

五、源程序#include

#include

#include

定义的全局变量,用于开户//intnumber=0;

定义结点数据域typedefstructListData//{

储户姓名//charname[3];

//账户序号intaccount;

账户密码//charpassword[5];

//账户金额intmoney;

}ListData;

typedefstructnode//定义链表结点{

//结点数据域ListDatadata;

结点链域//structnode*next;

}ListNode;

11

数据结构课程设计

typedefListNode*LinkList;//指向链表结点的指针

voidInitList(LinkList&L)//建立空链表

{

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个字符):

);

scanf(%s,p->data.password);

p->data.money=0;

p->next=NULL;

if(L->next==NULL)//前插法

L->next=p;

else

{

p->next=L->next;

L->next=p;

}

牰湩晴尨开户成功!

\n);

}

voidDeleteList(LinkList&L)//删除链表结点,实现销户功能(需要输入账号和密码)

{

LinkListp=L,q;

charmima[5];

ints;

牰湩晴尨请输入你要销户的账号:

);

scanf(%d,&s);

牰湩晴尨请输入该账号的密码:

);

scanf(%s,mima);

while(p->next!

=NULL)

{

12

数据结构课程设计

if(p->next->data.account==s)

break;

p=p->next;

}

if(p->next!

=NULL)

{

while(strcmp(p->next->data.password,mima)!

=0)

{

牰湩晴尨密码错误!

请重新输入:

);

scanf(%s,mima);

}

q=p->next;

p->next=q->next;

free(q);

牰湩晴尨销户成功。

\n);

}

汥敳瀠楲瑮?

你所要销户的的账号不存在。

\n);

}

voidDeposit(LinkList&L,LinkListp)//储户存款、取款、显示余额

{

intm;

intn;

while

(1)

{

if(p!

=NULL)

{

printf(\

请输入数字选择功能:

1、存款2、取款3、查询余额4、退出账号:

);

scanf(%d,&m);

if(m==1)

{

牰湩晴尨请输入你的存款金额:

);

scanf(%d,&n);

p->data.money=p->data.money+n;

牰湩晴尨存款成功!

\n);

}

elseif(m==2)

{

牰湩晴尨请输入你的取款金额:

);

gg:

scanf(%d,&n);

if((p->data.money-n)>=0)

{

13

数据结构课程设计

p->data.money=p->data.money-n;

牰湩晴尨取款成功!

\n);

}

else

{

牰湩晴尨取款失败!

你账户上的金额不足!

\n);

牰湩晴尨你的账户余额为:

%d\n,p->data.money);

牰湩晴尨请输入合适的取款金额:

);

gotogg;

}

}

elseif(m==3)

{

牰湩晴尨你账户的余额为:

%d\n,p->data.money);

}

elseif(m==4)

{

牰湩晴尨账号退出成功。

\n);

return;

}

}

}

}

voidSearch(LinkListL)//链表查找,实现用户登录功能(需要输入账号和密码)

{

LinkListp=L->next;

inti;

charmima[5];

牰湩晴尨请输入你要登录的账号:

);

scanf(%d,&i);

tt:

牰湩晴尨请输入你的密码:

);

scanf(%s,mima);

while(p!

=NULL)

{

if(p->data.account==i)

break;

p=p->next;

}

if(p==NULL)

牰湩晴尨不存在该账户\n);

else

14

数据结构课程设计

{

if(strcmp(p->data.password,mima)==0)

牰湩晴尨登录成功。

\n);

else

{

while(strcmp(p->data.password,mima)!

=0)

{

charj;

牰湩晴尨密码错误\n);

牰湩晴尨是否重新输入(是,从键盘输入Y)、(否,从键盘上输入N):

);

scanf(\

%c,&j);

if(j=='N')

{return;}

elseif(j=='Y')

{gotott;}

}

}

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1