c语言Atm的简单实现.docx
- 文档编号:23657847
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:21
- 大小:231.33KB
c语言Atm的简单实现.docx
《c语言Atm的简单实现.docx》由会员分享,可在线阅读,更多相关《c语言Atm的简单实现.docx(21页珍藏版)》请在冰豆网上搜索。
c语言Atm的简单实现
信息科学与工程学院
《数据结构》
课程设计报告
课程设计名称:
ATM的设计与实现
专业班级:
学生姓名:
学号:
201616010107
指导教师:
课程设计时间:
2016-2017学年第二学期
计算机科学与技术专业课程设计任务书
学生姓名
罗淇
专业班级
计科1601
学号201616010107
题目
ATM的设计与实现
课题性质
A
课题来源
D
指导教师
同组姓名
无
主要内容
一、基本功能:
1.定义储户、银行卡、ATM机和流水账等数据类型。
2.实现录入信息功能:
录入信息包括储户和银行卡(上述信息都不少于100条)。
3.实现存取款功能:
存款时,修改存折余额并将存款明细登记在流水账中,取款时,要判断取款金额是否大于余额以及是否超过限额,同时要判断是否大于ATM机的剩余钱数,取款成功后修改存折余额以及ATM机的总钱数,并将取款明细登记在流水账中。
4.实现查询功能:
储户可以查询某时间段内的流水账;银行领导可以查询某时间段内不同地点的ATM的使用情况(存取款次数、发生额等)。
5.实现排序功能:
根据卡内余额对储户进行排序。
6.储户、银行卡、ATM机和流水账等数据存入文件。
二、扩展功能:
1.定义用户类型:
用户(用户编号,用户名,密码,类型),其中,类型值为0表示超级用户,为1表示普通用户,超级用户具备所有权限,普通用户只具备浏览(查询)权限。
采用顺序表作为存储结构。
2.实现创建用户功能。
不少于3个超级用户和是10个普通用户。
3.实现设置密码功能。
用户可以修改自己的密码。
4.实现登录系统功能。
当用户名和密码输入都正确后才能使用该系统。
5.用户数据以文本文件格式存储。
任务要求
1.数据类型如下:
储户(身份证,户名,密码);银行卡(卡号,身份证,余额,开户日期,限额),其中,限额表示当天允许取款的上限;ATM机(机器代码,地址,总钱数);流水账(机器代码,卡号,存取款,发生日期,发生额),其中,存取款值为0表示存款为1表示取款。
其中,“储户”和、“银行卡”采用顺序表作为存储结构,“流水账”采用单链表作为存储结构。
2.根据需求分析给出概要设计和详细设计,并编程实现相关功能模块,本系统包括以下功能模块:
实现统计功能、实现登录系统功能、实现创建用户功能、实现设置密码功能、实现存取款、查询等。
3.结合课题利用数据结构相关知识,利用C语言实现该系统的所有上述功能,要求界面友善,程序运行正常。
4.提交课程设计报告1份(具体写作要求参考样例),可运行的系统和源代码电子版一套。
参考文献
严蔚敏.《数据结构(C语言版)》.北京:
清华大学出版社
谭浩强.《C语言程序设计》.(第三版)北京:
清华大学出版社
审查意见
指导教师签字:
教研室主任签字:
2017年06月15日
说明:
本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页
目录
1需求分析1
1.1存款1
1.2取款1
1.3查看流水账1
1.4排序1
1.5修改密码2
1.6查看ATM使用情况2
1.7录入信息2
1.8恢复限额2
2概要设计3
2.1数据类型的定义3
2.2功能模块结构图4
3运行环境6
4开发工具和编程语言7
5详细设计8
5.1主函数8
5.2录入函数9
5.3加载和存储函数9
5.4输出流水账函数10
5.5查看ATM使用情况函数10
6程序编码11
7运行结果14
8心得体会15
9参考文献16
需求分析
ATM自助机——便于储户存钱、取钱。
按功能分为两大系统:
个人用户系统和银行后台系统;
个人用户系统————登录(输入正确的账号或密码才能进入)、存款、取款、查看流水账(查看用户最近存取款情况)、排序(此为超级用户功能,可以查看所有人的余额)、修改密码(修改个人登录密码);
银行后台系统————atm使用情况(便于银行人员管理atm机)、录入信息(包括录入用户及其银行卡号信息和录入atm信息)、恢复限额(每天6点恢复所有人的取款上限)。
1.1存款
输入金额,存入ATM,当前AMT以及自己的余额会增加并且自动生成流水账。
1.2取款
输入取款金额,判断它是否小于ATM总金额并且小于当天的限额,当前的ATM金额减少,自己的余额和限额也会减少。
1.3查看流水账
输出自己近段时间内的所有操作,发生额,以及时间。
1.4排序
此为超级用户功能,实现以余额对所有用户排序并且输出一些信息。
1.5修改密码
修改用户登录密码。
1.6查看ATM使用情况
查看每一台ATM的使用情况,输出存取款发生额及其次数。
1.7录入信息
能录入用户、银行卡以及ATM的信息。
根据提示一步步输入数据,存入数组中,最后存入文件。
1.8恢复限额
恢复用户一天的限额。
概要设计
2.1数据类型的定义
1.定义用户类型
typedefstructnodetypedefstruct
{
charnumber[5];//用户编号
charUser_name[11];//用户名
charpassword[7];//密码
intkind;//用户类型
}User;
2.定义时间类型
typedefstruct
{
intyear;
intmonth;
intday;
}Data;
3.定义银行卡类型
typedefstruct
{
charcardnumber[20];//银行卡号
charIdcard[19];//身份证号
intbalance;//余额
Dataopen;//开户时间
intquota;//限额
}Bankcard;
4.定义ATM类型
typedefstruct
{
charcode[5];//机器代码
charaddress[30];//地址
intTotal_money;//取款机总金额
}ATM;
5.定义流水账类型
typedefstructnode
{
charcode[5];//机器代码
charcardnumber[20];//银行卡号
intaccess;//存取,0存款,1取款
Dataoccurrence;//发生日期
intmoney;//发生额
structnode*next;
}Book,*Link;
2.2功能模块结构图
根据需求分析,为了满足用户的功能需求,按照软件开发方法学中的模块划分原则,我将本系统主要划分为两个子系统:
个人用户系统和银行后台系统。
个人用户系统有如下功能:
存款,取款,排序,流水账,密码;银行后台系统有如下功能:
ATM使用情况,录入信息,恢复限额。
各模块之间的关系如图1所示。
图1模块结构图
为了实现上述功能模块,因此定义多个函数以及包含多个头文件便于实现,本系统定义的函数和功能如下:
1.函数
voidload1(Userus[],int*n);加载用户信息
voidload2(Bankcardba[]);加载银行卡信息
voidload3(ATMat[]);加载Atm信息
voidload4(Linkhead);加载流水账
voiddisplay();主界面
voiddisplay1();个人用户界面
voiddisplay2();用户后台界面
intLogin(Userus[],intn);用户登录界面
intLogin2();银行后台登录界面
voidsave1(Userus[],intn);存储用户信息
voidsave2(Bankcardba[],intn);存储银行卡信息
voidsave3(ATMat[],intm);存储Atm信息
voidsave4(Linkhead);存储流水账信息
voidadd(Userus[],Bankcardba[],ATMat[],int*n,int*m);录入用户和银行卡信息
voidinputRecord(Userus[],Bankcardba[],inti);录入一个信息
voidinputATM(ATMat[],inti);录入一个Atm信息
voidoutput(Userus[],Bankcardba[],intn);输出排序后的用户信息
voidPrintRecord(User*u,Bankcard*b);输出一个信息
voidsort(Userus[],Bankcardba[],intn);用户排序
intdeposit(int*p,int*a);存款
intwithdraw(Bankcard*p,ATM*a);取款
intfindAtm(ATMat[],intm);查找atm是否存在
voidgenerate1(Linkhead,charcode[],charcardnumber[],intmoney);生成流水账voidgenerate2(Linkhead,charcode[],charcardnumber[],intmoney);生成流水账
voidchange(User*u);更改密码
voidrecovery(Bankcardba[],Userus[],intn);恢复限额
voidseebook(Linkhead,charcardnumber[]);查看流水账
intPrintbook(Linkp);输出一个流水账
voidseeAtm(Linkhead,ATMat[],intm);查看Atm使用情况
PrintAtm(ATMat,intnumber1,intnumber2,intmoney1,intmoney2);输出所有Atm使用情况。
2.头文件
define.h定义结构体类型、包含系统头文件、以及函数声明
save.h存储数据到文件
display.h显示界面
load.h加载文件到数组或链表
add.h录入信息
output.h输出排序后的信息
sort.h排序(按余额)
deposit.h存款
withdraw.h取款
findAtm.h查找ATM
generateBook.h
change_password.h修改密码
recovery_quota.h恢复限额
seebook.h查看现在
seeAtm.h。
查看ATM使用情况
运行环境
1.硬件环境:
PC机内存8G;硬盘1000G
2.软件环境:
操作系统:
windows7
开发工具和编程语言
开发环境:
VisualC++
编程语言:
C语言
详细设计
在概要设计的基础上,对每个模块进行内部逻辑处理部分详细设计。
下面分别列出各个模块具体实现流程图:
主函数
5.2录入函数
5.3加载和存储函数
5.4输出流水账函数
5.5查看ATM使用情况函数
程序编码
根据详细设计的流程图转化为如下代码,下面列出主函数代码:
#include"define.h"
#include"save.h"
#include"display.h"
#include"load.h"
#include"add.h"
#include"output.h"
#include"sort.h"
#include"deposit.h"
#include"withdraw.h"
#include"findAtm.h"
#include"generateBook.h"
#include"change_password.h"
#include"recovery_quota.h"
#include"seebook.h"
#include"seeAtm.h"
intmain()
{
intn,select,k,g,choice,m,t,money;
Userus[N];
Bankcardba[N];
ATMat[M];
Linkbk;
bk=(Link)malloc(sizeof(Book));bk->next=NULL;
load1(us,&n);
load2(ba);
load3(at,&m);
load4(bk);
while
(1)
{
system("cls");
display();
scanf("%d",&select);
if(select==1)
{
g=findAtm(at,m);
if(g!
=-1)
{
k=Login(us,n);
if(k!
=-1)
{
while
(1)
{
system("cls");
display1();
t=0;
scanf("%d",&choice);
switch(choice)
{
case1:
money=deposit(&ba[k].balance,&at[g].Total_money);generate1(bk,at[g].code,ba[k].cardnumber,money);save2(ba,n);save3(at,m);save4(bk);break;//存款
case2:
money=withdraw(&ba[k],&at[g]);//取款
if(money!
=-1)
{generate2(bk,at[g].code,ba[k].cardnumber,money);save2(ba,n);save3(at,m);save4(bk);}break;
case3:
seebook(bk,ba[k].cardnumber);break;//查看流水账
case4:
if(us[k].kind==0)
sort(us,ba,n);
else
printf("权限不足,请重新选择\n");system("pause");t=0;break;//排序
case5:
change(us[k].password);save1(us,n);break;//修改密码
case6:
t=1;break;
}
if(t==1)
break;
}
}
}
}
elseif(select==9)
{
if(Login2()==1)
{
while
(1)
{
system("cls");
display2();
scanf("%d",&choice);
switch(choice)
{
case1:
seeAtm(bk,at,m);break;//atm使用情况
case2:
add(us,ba,at,&n,&m);break;//录入信息
case3:
recovery(ba,us,n);break;//恢复限额
case4:
return0;//退出
}
}
}
}
else
{
printf("由于您的恶意输入,您的银行卡已被没收,请前往银行找回!
\n");
system("pause");
return0;
}
}
}
运行结果
以下为排序和查询流水账结果测试:
心得体会
本学期,当数据结构大作业刚布置下来的时候感觉很难,因为感觉实现的功能比较多并且时间又短,根本完不成这个任务,在写大作业的过程中也并不是那么顺利,存在着太多的bug,然后就一步步调试,找出错误。
写完大作业时,感觉对指针有了更深的理解。
在整个过程中对我提升最大的就是指针的使用和调试了。
其实学数据结构,想要掌握它的精髓,就必须自己亲自去实现某一个功能,然后逐步调试,明白它的思想,就能很快地掌握它(实践是检验真理的唯一标准)。
源代码
参考文献
[1]严蔚敏.《数据结构(C语言版)》.北京:
清华大学出版社
[2]谭浩强.《C语言程序设计》.(第三版)北京:
清华大学出版社
信息科学与工程学院课程设计成绩评价表
课程名称:
数据结构课程设计
设计题目:
ATM的设计与实现
专业:
计算机科学与技术班级:
1601姓名:
罗淇学号:
201616010107
序号
评审项目
分数
满分标准说明
1
内容
思路清晰;语言表达准确,概念清楚,论点正确;实验方法科学,分析归纳合理;结论严谨,设计有应用价值。
任务饱满,做了大量的工作(20分)。
2
创新
内容新颖,题目能反映新技术,对前人工作有改进或突破,或有独特见解(10分)
3
完整性、实用性
整体构思合理,理论依据充分,设计完整,实用性强(10分)
4
数据准确、可靠
数据准确,公式推导正确(10分)
5
规范性
设计格式、绘图、图纸、实验数据、标准的运用等符合有关标准和规定(10分)
6
纪律性
能很好的遵守各项纪律,设计过程认真;(20分)
7
答辩
准备工作充分,回答问题有理论依据,基本概念清楚。
主要问题回答简明准确。
在规定的时间内作完报告。
(20分)
总分
综
合
意
见
指导教师:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 Atm 简单 实现