TG(提高篇)第15讲 实践项目 简单银行系统(函数篇)
来源:互联网 发布:svd分解算法步骤 编辑:程序博客网 时间:2024/05/17 23:21
一、任务和代码
/**Copyright (c)2016,CSDN学院 | C语言及程序设计提高*All rights reserved.*文件名称:TG_p15.c*作 者:管运煌*完成日期:2016年7月20日*简单银行系统,只针对个人的储蓄业务、修改密码、保存数据到文件等*/#include <stdio.h>#include <stdlib.h>int password( ); //验证密码void work(); //业务驱动void ShowMenu( ); //菜单选择double Save(double d); //存款double withdraw(double d); //取款void updatepassword (); //修改密码double getBalance( ); //获得余额void saveBalance(double d); //保存数据int main(){ printf ("欢迎使用天地银行系统!\n"); int pass; pass=password(); if (pass) work(); return 0;}/*功能:验证密码,输入三次失败后退出系统。*/int password(){ int passtry=3,InPassword,Password; FILE *fp; if ((fp=fopen("password.txt","r"))==NULL) { printf ("password.txt can not open!"); exit (0); } fscanf (fp,"%d",&Password); fclose(fp); do { passtry--; printf ("请输入密码:"); scanf ("%d",&InPassword); if(InPassword==Password) break; else { if(passtry>0) printf ("密码错误,请重新输入!您还有%d次机会!\n",passtry); else printf ("不好意思,您不能进入系统!\n"); } }while (passtry); return (passtry);}/*完成所有业务功能(查询、取款、存款、修改密码、数据保存)*/void work(){ int choice; double Balance; Balance=getBalance(); do { ShowMenu(); printf ("请输入服务代码(0-4):"); scanf ("%d",&choice); switch (choice) { case 1: printf ("您帐户余额为:%.2f元!\n",Balance); break; case 2: Balance=Save(Balance); printf ("存款成功!账户余额为:%.2f元!\n",Balance); break; case 3: Balance=withdraw(Balance); printf ("取款成功!账户余额为:%.2f元!\n",Balance); break; case 4: updatepassword(); break; case 0: printf ("欢迎再次使用!\n"); break; default: printf ("输入错误,重新输入!\n"); continue; } }while (choice); saveBalance(Balance);}/*获得Balance.dat文件中余额*/double getBalance(){ double Balance; FILE *fp; if ((fp=fopen("Balance.dat","r"))==NULL) { printf ("Balance.dat can not open!"); exit(0); } fscanf (fp,"%lf",&Balance); return (Balance);}/*展示菜单,并完成选择*/void ShowMenu(){ printf ("1.查询\n"); printf ("2.存款\n"); printf ("3.取款\n"); printf ("4.修改密码\n"); printf ("0.退出\n");}/*完成存钱功能*/double Save(double d){ double Savemoney; printf ("请输入存款金额:"); scanf ("%lf",&Savemoney); d+=Savemoney; return (d);}/*完成取钱功能*/double withdraw(double d){ double withdrawMoney; do { printf ("请输入取款金额:"); scanf ("%lf",&withdrawMoney); if (withdrawMoney<=d) { d-=withdrawMoney; break; } else { printf ("余额不足,请重新输入!\n"); continue; } } while (1); return (d);}/*完成密码修改功能*/void updatepassword(){ int password,password1,password2; FILE *fp; if ((fp=fopen("password.txt","w"))==NULL) { printf ("password.dat can not open(w)!"); exit(0); } printf ("请输入新密码:"); scanf ("%d",&password1); printf ("请再一次输入新密码:"); scanf ("%d",&password2); if (password1==password2) { password=password1; fprintf (fp,"%d",password); } else printf ("两次密码输入不一致,修改失败!\n"); fclose(fp);}/*退出系统时保存数据*/void saveBalance(double d){ FILE *fp; if ((fp=fopen("Balance.dat","w"))==NULL) { printf ("Balance.dat can not open!"); exit(0); } fprintf (fp,"%f",d); fclose (fp);}二、运行结果
三、知识总结
自定义函数使用
四、心得体会
看完老师的视屏,虽然没说要做这个项目,但还是决定试试,毕竟这个小系统之前已经完成过,这次只是使用自定义函数来写。
开始的时候还是挺自信满满的,在正要动手时突然发现眼瞎了,根本不知道怎么动手,晕了一阵,然后翻开笔记:自顶向下,逐步细化,模块化设计、结构化编码……
那就先看程序需要满足什么功能,再确定需要自定义哪些函数吧!拿了本草稿本结合根据老师讲的,先把觉得需要的自定义函数列了出来:密码验证、查钱、取钱、存钱、修改密码、数据保存还有老师说的业务驱动。因为从文件读取、写入信息用得少一直不熟悉,一开始还想加个读取文件在函数,后来还是放弃了,更麻烦~
定义好函数就进入老师讲的“思路”阶段了,怎么样把函数串起来用,对我来说是空白的,这个时候我觉得main函数好像变成最简单的了,只需要完成 进入密码验证程序 和 业务验动程序就可以了,所以,当密码正确的时候,进入业务验动,一个if 判断语句就可以实现啊~这下竟然有中顿悟的感觉~
接下码代码的过程就顺了些,先写密码验证函数,只要确保三次之内密码输入正确返回 1 给主函数主可以,接着就填业务验动函数。
密码正确,就可以显示菜单了,然后要显示菜单,一开始我把 选择菜单的代码也写到了显示菜单里,然后将 客户选择的服务代码返回给 业务驱动函数的一个变量,再使用switch语句,但是出错了~不知道是不是因为void 函数返回的值有问题。
然后巴拉巴拉,根据业务驱动使用函数的顺序一个一个把自定义函数填完~
然后满怀信心地点了下Build
然后出了整整几十条的错误提示!!!
晕菜了!脑子又回到刚开始时候的一片空白!!!
眼睛一瞥,原来有个自定义函数声名的时候忘记分号了,加上,Build!错误少了十几行……
心里头才有勇气查下去,就这样,,根据提示,一个一个来,有数据类型问题、有自定义void函数返回值问题(比如double 类型数据 在读取的时候加了"%.2f"就有报错提醒)、有输入了中文符号问题……
不过还好,改了半个小时总算好了……
参考老师代码,第一次实践自定义函数的使用,所以收获还是挺多的!
- TG(提高篇)第15讲 实践项目 简单银行系统(函数篇)
- (提高篇)第十五讲 项目 简化的银行储蓄系统(函数版)
- 提高第15课时,实践,简单银行系统的初步框架(加强版)v2.0
- C语言提高-第15讲: 小小型应用系统开发指导(函数版银行储蓄系统)
- (提高篇)第一讲 项目 简单的函数运用(一)
- (提高篇)第一讲 项目 简单的函数运用(二)
- 第12周上机实践项目4——银行系统(项目1)
- 第12周上机实践项目4——银行系统(任务2)
- 提高第40课时,实践,简易银行系统开发
- C++程序设计-第13周递归函数及银行系统程序设计上机实践项目
- C++第13周项目5——银行系统用函数组织(v0.2)
- 提高篇第二十六讲项目1-有序数组中插入数据(函数版)
- 提高篇第一讲项目5-当年第几天
- 提高篇编程项目 第十九讲项目二/三 成绩处理 当年第几天(数组方案)
- 提高第26课时,实践1,项目1-有序数组中插入数据(函数版)
- 第12周 项目4-银行系统(任务1)
- 第12周 项目4-银行系统(任务2)
- 第12周 项目6-银行系统(任务3)
- 制定销售和现金流量计划
- 39.Which two statements are true about standard database auditing? (Choose two.)
- C# ListView用法详解
- Git-Git基础
- Android基础-- 利用handler发送消息报:"This message is already in use"解决办法
- TG(提高篇)第15讲 实践项目 简单银行系统(函数篇)
- Python 处理config.ini文件
- [2016/7/20][usaco 2.1]Hamming Codes
- Codeforces 698C. Fix a Tree (并查集)
- 图片的高斯模糊
- [树] cf 698B D Fix a Tree
- opencv鼠标响应事件
- 混日子不是你的错,根源在这里
- 五大常用算法之五:分支限界法