洛 阳 理 工 学 院
课 程 设 计 报 告
课程名称
数据结构课程设计
设计题目
活期储蓄账目管理
计算机科学与技术
专
班
学
姓
业
级
号
名
完成日期
2018 年 1 月 5 日
课 程 设 计 任 务 书
设计题目: 活期储蓄账目管理
设计内容与要求:
【问题描述】 活期储蓄处理中,储户开户、销户、存入、支出活动频繁。设计
一个活期储蓄账目管理系统。
【基本要求】
1) 能比较迅速地找到储户的帐户,以实现存款、取款记账;
2) 能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。
指导教师:
2017 年 12 月 27 日
课 程 设 计 评 语
成绩:
指导教师:_______________
2018 年 1 月 5 日
洛 阳 理 工 学 院 课 程 设 计 报 告
一、 算法思想
(1) 开户:按照账号查找插入位置,申请新节点输入信息,将新节点插入到查
找的位置。
(2) 销户:按账号查找并删除销户的节点,释放节点空间。
(3) 存款:按账号查找,输入存款金额并将存款金额加到余额。从余额
(4) 取款:按账号查找,输入取款金额判断余额是否足够,余额足够则从余额
减掉取款金额,否则重新输入取款金额。
二、 模块划分
(1) 链表初始化:void InitList(DoubleList *L)
(2) 创建链表:void CreateFromHead(DoubleList L)
(3) 查找:DNode *Locate(DoubleList L,int k)
(4) 开户:void DlinkIns(DoubleList L)
(5) 冒泡排序:void BubbleSort(DoubleList L)
(6) 销户:void DlinkDel(DoubleList L)
(7) 取款:void Withdrawal(DoubleList L)
(8) 存款:void Deposit(DoubleList L)
(9) 菜单函数:void menu()
(10)主函数:void main()
函数调用关系
主函数
菜
单
函
数
开
户
函
数
冒
泡
排
序
销
户
函
数
取
款
函
数
存
款
函
数
函数调用关系图
1
洛 阳 理 工 学 院 课 程 设 计 报 告
销户函数
开始
输入账号 a
调用 Locate(L,a)
查找地址是否为空
N
是否为尾节点
N
p->prior->next=p->next
p->next->prior=p->prior
Y
Y
没找到
p->prior->next=NULL
结束
销户函数流程图
3
洛 阳 理 工 学 院 课 程 设 计 报 告
取款函数
开始
输入账号 a
调用 Locate(L,a)
查找地址是否为空
N
取款金额 c
余额是否足够
N
取款金额 c
没找到
Y
Y
p->data.balance=p->data.balance-c
输出余额
结束
取款函数流程图
4
洛 阳 理 工 学 院 课 程 设 计 报 告
存款函数
Y
没找到
开始
输入账号 a
调用 Locate(L,a)
查找地址是否为空
N
输入存款金额 c
p->data.balance=p->data.bal
ance+c
输出余额
结束
存款函数流程图
5
洛 阳 理 工 学 院 课 程 设 计 报 告
三、 数据结构
typedef struct
{
int num;
char name[100];
int balance;
}Info;
typedef struct DNode
{
Info data;
struct DNode *prior;
struct DNode *next;
}DNode,*DoubleList;
四、 测试
第一组
(1) 初始数据创建
储户账号:120 姓名:小明 余额:1500
储户账号:101 姓名:小张 余额:2500
储户账号:135 姓名:小李 余额:3500
储户账号:119 姓名:小王 余额:4500
6