数据结构课程设计实验报告要点(共26页).doc
《数据结构课程设计实验报告要点(共26页).doc》由会员分享,可在线阅读,更多相关《数据结构课程设计实验报告要点(共26页).doc(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 数据结构 课程设计报告 学院:信息科学与工程学院 班级:通信工程1301班 题目:活期储蓄帐目管理系统 指导老师:康松林 完成日期:2015年7月16日专心-专注-专业目录一、问题描述与基本要求1.1问题描述 设计一个活期储蓄帐目管理系统活期储蓄处理中,储户开户、销户、存入、支出活动频繁。1.2基本要求系统设计要求: 1、能比较迅速地实现插入,以实现储户开户的功能,储户开户时需输入的信息包括储户姓名,密码。2、能比较迅速地通过储户的账户序号和密码找到储户的账户,并删除该账户,以实现销户的功能。3、能比较迅速地通过储户的账户序号和密码找到储户的账户(密码不对时,可选择
2、是否重新输入密码)实现账户登录的功能。登录成功后,再通过修改链表结点数据域中的对应元素,以实现存款、取款、显示余额等功能,若取款时账户余额不足,输出提示信息“取款失败!你账户上的金额不足!”,并显示账户当前余额,并且提示重新输入合适的取款金额。4、查找活期储蓄帐目管理系统当前存在的储户,当输出活期储蓄帐目管理系统没有账户时,输出提示信息“活期储蓄帐目管理系统没有账户”,当有账户时,输出所有账户的相关信息,包括储户姓名,帐号,密码,账户余额。二、数据结构的设计2.1数据结构的选择课程设计题目的要求是,要较简单迅速地实现开户、销户、存款、取款、输出用户信息的功能,于是我很自然地想到了可以用单链表的
3、结构,通过编写相应功能函数来实现建立新结点、删除结点、修改结点中数据域的内容、输出结点数据域中的内容等功能,即可满足课程设计题目的要求。2.2单链表的定义 先定义单链表结点的数据域,数据域包括储户姓名、账户序号、账户密码、账户金额等储户信息,然后再定义链表结点,链表结点包括结点数据域和结点链域,最后再定义指向链表结点的指针。以下为单链表的相关定义:typedef struct ListData /定义结点数据域char name3; /储户姓名int account; /账户序号char password5; /账户密码int money; /账户金额ListData;typedef stru
4、ct node /定义链表结点ListData data; /结点数据域struct node *next; /结点链域ListNode;typedef ListNode *LinkList; /指向链表结点的指针2.3重要函数的定义及说明1、 void InitList (LinkList &L) /建立空链表2、void InsertList (LinkList &L) /插入链表结点,实现开户功能(需要输入储户姓名和密码,以确定开户对象)3、 void DeleteList (LinkList &L) /删除链表结点,实现销户功能(需要输入账号和密码,以确定销户对象)4、void Dep
5、osit (LinkList &L,LinkList p) /储户存款、取款、显示余额(要先通过账号和密码登录,若取款时账户余额不足,输出提示信息,显示账户当前余额,并且提示重新输入取款金额。)5、void Search (LinkList L) /链表查找,实现用户登录功能(需要输入账号和密码,以确定登录对象,密码输出错误时可选择是否重新输入密码)6、 void PrintList (LinkList L) /输出链表,实现储户姓名,账号序号,密码,现有余额等相关信息。(当输出活期储蓄帐目管理系统没有账户时,输出提示信息,当有账户时,输出所有账户的相关信息。)以下为重要函数的定义:void
6、InitList(LinkList &L) /建立空链表L=(ListNode*)malloc (sizeof(ListNode);L-next=NULL;void InsertList(LinkList &L) /链表插入结点,实现开户功能,需输入储户姓名和密码LinkList p;p=(ListNode*)malloc(sizeof(ListNode);printf(请输入你要开户的姓名(不超过4个字符):); scanf(%s,p-data.name);number=number+1;p-data.account=number;printf(你开户的账号为:%dn,p-data.acco
7、unt);printf(请输入你账号的密码(不超过6个字符):);scanf(%s,p-data.password);p-data.money=0;p-next=NULL;if(L-next=NULL) /前插法L-next=p;elsep-next=L-next;L-next=p;printf(开户成功!n);void DeleteList(LinkList &L) /删除链表结点,实现销户功能(需要输入账号和密码)LinkList p=L,q;char mima5;int s;printf(请输入你要销户的账号:);scanf(%d,&s);printf(请输入该账号的密码:);scanf
8、(%s,mima);while(p-next!=NULL)if(p-next-data.account=s)break;p=p-next;if(p-next!=NULL)while(strcmp(p-next-data.password,mima)!=0)printf(密码错误!请重新输入:);scanf(%s,mima);q=p-next;p-next=q-next;free(q);printf(销户成功。n);else printf(你所要销户的的账号不存在。n);void Deposit(LinkList &L,LinkList p) /储户存款、取款、显示余额int m;int n;w
9、hile(1)if(p!=NULL)printf(n请输入数字选择功能:1、存款 2、取款 3、查询余额 4、退出账号 :);scanf(%d,&m);if(m=1)printf(请输入你的存款金额:);scanf(%d,&n);p-data.money=p-data.money+n;printf(存款成功!n);else if(m=2)printf(请输入你的取款金额:);gg:scanf(%d,&n);if(p-data.money-n)=0)p-data.money=p-data.money-n;printf(取款成功!n);elseprintf(取款失败!你账户上的金额不足!n);pr
10、intf(你的账户余额为:%dn,p-data.money);printf(请输入合适的取款金额:);goto gg;else if(m=3)printf(你账户的余额为:%dn,p-data.money);else if(m=4)printf(账号退出成功。n);return;void Search(LinkList L) /链表查找,实现用户登录功能(需要输入账号和密码)LinkList p=L-next;int i;char mima5;printf(请输入你要登录的账号:);scanf(%d,&i);tt:printf(请输入你的密码:);scanf(%s,mima);while(p!
11、=NULL)if(p-data.account=i)break;p=p-next;if(p=NULL)printf(不存在该账户n);elseif(strcmp(p-data.password,mima)=0)printf(登录成功。n);elsewhile(strcmp(p-data.password,mima)!=0)char j;printf(密码错误n);printf(是否重新输入(是,从键盘输入Y )、(否,从键盘上输入N ):);scanf(n%c,&j);if(j=N)return;else if(j=Y)goto tt;Deposit(L,p);void PrintList(L
12、inkList L) /输出链表,实现储户信息输出LinkList p=L-next;if(p=NULL) printf(活期储蓄帐目管理系统没有账户n); else printf(姓名 帐号 密码 账户余额n); while(p!=NULL)printf(%st,p-data.name);printf(%dt%stt%dn,p-data.account,p-data.password,p-data.money);p=p-next;printf(请先输入enter键,再重新选择功能n);三、软件模块结构图 主函数链表插入模块链表删除模块链表查找、存款、取款模块链表显示模块3.1大体模块关系图3
13、.2各模块具体分析链表插入模块具体分析如下:InsertList(L)scanf( )p-data.namep-data.password链表删除模块具体分析如下:DeleteList(L)scanf( )s,mimaSearch(L)scanf( )i,mima,jm,nDeposit(L,p)p-data.money链表查找、存款、取款模块具体分析如下:链表输出模块具体分析如下:PrintList(L)p-data.name,p-data.passwordp-data.account,p-data.moneyprintf( ) 注:以上具体分析中,无箭头的线段表示函数的调用关系,椭圆中的数
14、据为输入、输出或传递的值,箭头表示值的方向。四、程序流程图ABCD1234 结束输入1,InsertList(L)用户开户输入2,DeleteList(L)用户销户输入3,Search(L)存款、取款显示余额。输入4,PrintList(L)输出储户信息输入5,退出管理系统 InitList(L)功能表与编号选择1-5 输入数字,选择功能主函数main( ) 开始 注:因为整个程序流程图太长,一页画不下,所以上图为大体流程图,上图中1A,2B,3C,4D间流程省略了,以下为1A,2B,3C,4D间详细流程图。1输入开户姓名输入开户密码 开户成功A 1A是是否否 销户成功B 输入账户密码密码是否
15、正确?你所要销户的的账号不存在账户是否存在2 输入销户账号222B 输入销户账号 输入销户账号存款成功重新输入取款金额是否是否是是否输入1后,输入存款金额输入2后,输入取款金额输入3,显示当前余额C取款金额=余额?取款成功输入1-4,选择功能输入4,退出账户退出登录密码是否正确? 登录成功是否重新输入密码 Deposit(L,p) 输入账户密码3 输入要登录的账号账户是否存在?不存在该账号C333C 输入要登录的账号 输入要登录的账号不存在该账号账户是否存在?账户是否存在?不存在该账号 输入账户密码CC4D是输出姓名、帐号、密码、账户余额p=p-next4p=NULL?管理系统没有账户是否p=
16、NULL?否D五、源程序#include#include#includeint number=0; /定义的全局变量,用于开户typedef struct ListData /定义结点数据域char name3; /储户姓名int account; /账户序号char password5; /账户密码int money; /账户金额ListData;typedef struct node /定义链表结点ListData data; /结点数据域struct node *next; /结点链域ListNode;typedef ListNode *LinkList; /指向链表结点的指针void
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 实验 报告 要点 26
限制150内