活期储蓄帐目管理课程设计.docx
- 文档编号:30269027
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:11
- 大小:253.15KB
活期储蓄帐目管理课程设计.docx
《活期储蓄帐目管理课程设计.docx》由会员分享,可在线阅读,更多相关《活期储蓄帐目管理课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
活期储蓄帐目管理课程设计
华北科技学院
课程设计说明书
班级:
网络B08-1姓名:
___吴振宇_______
设计题目:
活期储蓄帐目管理
设计时间:
2010.3.1至2010.3.12
指导教师:
_____________刘明艳______________
评语:
_________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
评阅成绩:
____评阅教师:
_____
一.问题描述
1.活期储蓄帐目管理
活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:
1)能比较迅速地找到储户的帐户,以实现存款、取款记账;
2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要.
二、概要设计
本程序用c语言实现,完成银行管理系统的生成,储户开户、销户、存入、支出等功能。
1)创建文件,以数组形式存储用户数据,开户时自定义输入用户账号、用户姓名、密码、及开户金额;用户登陆时输入正确的账号及密码,完成登陆后即可进行存款、取款、查询余额、修改密码。
2)程序所能达到的功能:
用户开户
账户登陆(存款、取款查询余额、)
账号注销
3).本程序主要包含11个函数
1.账户开户函数:
makeId();
2.用户信息输入:
inputPerson();
3.账户登陆函数:
loginMenu();
4.销户函数:
changeState();updateState(intid,intstate);
5.查询余额函数:
showRestMoney()
6.存款函数:
saveMoney();
7.取款函数:
getMoney();
8.查找id用户函数:
findPerson(intid,charpwd[6]);
9.写入文件函数:
writeIntoFile();
10.读取文件函数readAllFromFile();
11.更新数据函数updateMoney(intid,floatmoney)
4).各函数关系如下:
主函数
账户销户
账户登录
账户开户
取款
查询余额
存款
三、算法设计
1.用户开户
首先在madeid()函数中创建文件指针fp指向db.txt,将指针位置指向文件末尾,创建好id号。
而在inputperson()函数中输入用户的姓名,密码,存入金额等,将数据通过writeIntoFile()函数写入文件。
开始
输入姓名scanf("%s",p.name);
Madeid();创建该用户的id号
输入密码,比较两次输入的密码是否相同strcmp(p.pwd,passCheck)!
=0
输入存入的金额
写入db.txt文件中,调用writeIntoFile()函数
2.用户登录
用户登录时先输入id号,通过findPerson(intid,charpwd[6])函数查找id相等的记录,将文件指针定位到该记录处,接着对输入的密码与文件中的密码进行比较,密码相同则登录成功,密码不相同返回登录界面。
定义findReturn来得到findPerson()函数的返回值,来显示用户是否登录成功。
登录查找函数流程图:
intfindPerson(intid,charpwd[6])从loginMenu()函数中得到id,pwd的值
开始
统计db.txt中记录条数,fseek(fp,0,SEEK_END);
intnumInTXT=ftell(fp)/46;
Id与密码是否匹配
是否
返回findReturn值为1
返回findReturn值为3
读取用户姓名,存款。
fscanf(fp,"%f",&p.money);
3.用户存款:
用户输入要存款的金额,p.money+=money来实现存款,调用updateMoney(p.id,p.money)函数更新文件中用户的金额
updateMoney()函数流程图
开始
统计db.txt中记录条数,fseek(fp,0,SEEK_END);
intnumInTXT=ftell(fp)/46;
fseek(fp,46*i,SEEK_SET);访问每用户的id数据,i++
if(idFind==id)
是否
fseek(fp,46*i+30,SEEK_SET)指向该用户money处
退出
fprintf(fp,"%-13.2f",money)写入数据
4.用户取款
用户输入要取款的金额,先通过checkMoney(p.id,money)函数来判断用户要取的钱是否大于用户的存款,p.money-=money来实现取款,调用updateMoney(p.id,p.money)函数更新文件中用户的金额。
checkMoney()流程图
开始
统计db.txt中记录条数,fseek(fp,0,SEEK_END);
intnumInTXT=ftell(fp)/46;
fseek(fp,46*i,SEEK_SET);访问每用户的id数据,i++
if(idFind==id)
是否
fseek(fp,46*i+30,SEEK_SET)指向该用户money处
returnfalse;
fscanf(fp,"%f",&moneyFind);//读取已存的钱
if(moneyFind>=money)
是否
returntrue;
returnfalse;
四、运行结果和调试分析
菜单界面如图:
一)、开户
1)、选择1,进行开户,按提示输入用户信息,完成后返回主菜单可再次进行选择:
二)、账户登陆
登陆成功后进入个人服务菜单,然后可选择相关操作:
进入相关操作菜单:
1)、存款
2)、取款:
3)、查询余额
三)、销户
调试分析:
1.关于文件的知识学的不够好,很多函数功能不了解,通过上学期学习的《C语言》教材,及图书馆中数据结构系列书籍中关于文件的介绍,我终于学会了文件的一些操作。
例如fseek指针的访问,fprintf与
Fscanf函数的作用。
2.字符串和字符常量的混淆让我在运用他们时很吃力,于是我重新复习了一下《C语言程序设计》中相关知识,解决了与他们有关的相关问题。
3.由于对文件的学习不够深入,加上学习的时间很久了,所以感觉文件部分很生疏。
于是我重新看了一遍《C语言程序设计》中有关文件部分的内容,并从图书馆查阅了相关知识,学会了文件的打开、关闭和读写。
这才使得我写的程序中读写文件部分能够顺利运行。
4.对于结构体中变量的值,我十分困惑,我怀疑结构体变量中的值都只能通过赋值获得。
为了解除我的疑惑,我重新编了一个小的简单的程序来验证我的假设。
结果表明,结构体变量中的值是可以直接输入的,我是被网上的程序误导了。
直到后来,我在仔细的检查中才发现是尾指针使用不当造成的错误。
5.在插入元素时,由于我有时插入的位置在有指针节点的后面,而书上讲的都是插入的位置在有指针节点的前面,所以总有错误。
于是我在纸上一步步画出其插入的运行过程。
在纸上手工操作之后我终于找到了错误的关键,及时调整语句顺序,解决了问题。
这使得我明白了不能总是照抄照搬书本上的知识,而是应该随机应变,这样才能真正提高自己的能力。
6.有时候,语句都没错的情况下,输出依旧有错误。
而在对输出函数仔细检查之后发现输出函数并没有错误。
在尝试中我发现了是释放节点上出了问题。
原来,释放节点是可以节省空间,但不恰当的释放却会使数据丢失。
五、总结体会
第一次做课程设计,开始自己读题时,思路不是很清晰,经老师把每个题目提示看一下后,明白这个程序就是要结合所学数据结构的思想,首先定义了一个结构体,包含了储户的各类信息,如姓名,账号,金额等等,并利用文件将用户信息加以存储。
开户时将输入的信息写入文件,存款和取款时对用户的存款加以处理并更新到文件中。
在分析好活期储蓄帐目管理的功能模块后,开始编写代码,在代码调试的过成中,并不是一帆风顺的,这也是平常练的不够吧,经过几轮删删改改,终于做的差不多了,基本达到了老师的要求,但是还是有很多不足的地方。
通过这次对银行管理系统的编写与调试,巩固了有关结构体的知识及其操作,锻炼了实际应用能力,同时对文件有了更进一步的了解及应用,明白文件的读写等相关知识。
在不断地进行书面设计和上机调试的过程中,认识到掌握设计程序的思路非常重要,要正确处理算法与语法的关系,算法是程序的核心,是灵魂,语法是外壳是工具。
但是光掌握语法也是不够的,应该还要把重点放在解题思路上。
这个实验也让我认识到自己知识的有限,与同学讨论的益处,培养了我的团队意识。
我今后在编程时还需要多练习多思考,继续加油。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 活期 储蓄 帐目 管理 课程设计