ATM取款机模拟系统-程序设计-报告(完成版)
更新时间:2024-01-22 17:02:01 阅读量: 教育文库 文档下载
信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计
目录
三、编程题部分(银行ATM模拟存取系统)
1、设计内容????????????????第2页
2、设计?????????????????? 第2页
(1)数据分析???????????????? 第2页 (2)程序流程分析?????????????? 第3页
3、编码及调试??????????????? 第13页 4、程序运行截图?????????????? 第32页
四、总结与体会??????????????? 第37页 五、参考文献???????????????? 第39页
1
信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计
三、编程题部分
1、设计内容
完成一个管理类的综合型设计:银行ATM模拟存取系统。要求学生进行数据结构的设计、对函数进行模块化结构化设计、并灵活运用数组、结构体、指针、文件等多种数据类型设计开发系统。通过写程序,学生应掌握用计算机程序设计语言解决实际问题的方法、步骤。该系统应该具有以下功能: 1)账户管理功能 a) 开户:完成账户注册的功能。即输入账户的相关信息。要求账户号长度12位,密码长度不得低于6位,必须使用暗码,账户信息保存到数组中,账户信息最后保存到相关文件中;
b) 账户登录:输入账户、密码,验证是否能够登录该系统; c)密码修改:输入两次相同的密码方可修改。 2)账务管理功能
a) 存款:每笔存款金额大于0元小于等于1000元,以50元为基本单位。需记录交易日期和时间。
b) 取款:每笔取款金额大于等于100元小于等于2000元,以50元为基本单位。需记录交易日期和时间。
c) 转账:每笔转账金额大于等于100元小于等于5000元。需记录交易日期和时间。
3)查询功能 a) 存款记录查询 b) 取款记录查询 c) 转账记录查询 d) 余额查询
4)文件功能及其它功能:数据都应保存在相关文件中。
2、设计
(1) 数据分析(描述定义的各主要变量的作用及意义);
char zhanghao[16];/*用户账号*/ char xingming[9];/*用户姓名*/ char mima[7];/*账户密码*/ char shengfenzheng[19];/*用户身份证号*/ float yue;/*账户余额*/ char kaihushijian[50];/*开户时间*/ char zhanghao[16];/*交易的账号*/ char jiaoyishijian[50];/*交易时间*/ char leixing[5];/*交易类型*/ float jiaoyijine;/*交易金额*/ float jiaoyiyue;/*交易后的余额*/ char duifangzhanghao[12];/*交易时的对方账号*/
2
信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计
int zhanghuxuhao=0,jiaoyixuhao=0,dangqianxiabiao=0,duifangzhanghuxiabiao=0;/*账户
序号,交易序号,当前登录的账户下标,转账时对方的账户下标*/ 注册函数:
int baiwei,shiwei,gewei,len;/*定义账号的后三位*/ char mima2[7];/*注册时第二次输入的密码*/
登录函数: char zhanghao[16],mima[7];/*登录时输入的账号和密码*/
装载和保存文件函数: FILE *fp;/*定义文件指针*/
char wenjianming[13];/*定义输入的文件名*/ 存、取款,转账函数:
float jine;/*输入的存、取款,转账金额*/
char t[30];/*把取得的存、取款,转账时间赋给该数组*/ 转账函数:
char duifangzhanghao[16],c;/*输入的对方账号赋给该数组。在判断是否继续时,把输入的字符Y或N赋给c,以便读入选择*/ 修改密码函数:
char mima[7],xinmima1[7],xinmima2[7];/*旧密码,第一次输入的新密码,第二次输入的新密码*/
(2)程序流程分析(描述主程序的基本构成、函数设计、函数的调用关系、各部分的流程图等。)
主程序的基本构成::
struct Zhanghu
{};/*账户的结构体*/ typedef struct
{}Jiaoyi;/*交易记录的结构体*/ int menu(); /*主菜单函数*/
void zhuce(); /*主菜单功能函数—注册函数*/ void denglu(); /*主菜单功能函数登录函数*/ void zhuangzai(); /*主菜单功能函数装载数据函数*/ void baocun(); /*主菜单功能函数保存数据函数*/
int denglu_menu(); /*登录菜单函数*/
void cunkuan(); /*登录菜单功能函数—存款函数*/ void qukuan(); /*登录菜单功能函数—取款函数*/ void zhuanzhang(); /*登录菜单功能函数—转账函数*/ void chaxun(); /*登录菜单功能函数—查询函数*/
void xiugaimima(); /*登录菜单功能函数—修改密码函数*/
int chaxun_menu(); /*查询菜单函数*/
void chaxun_yue(); /*查询菜单功能函数—查询余额函数*/
3
信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计
void chaxun_mingxi(); /*查询菜单功能函数—查询明细函数*/ void chaxun_cunkuan(); /*查询菜单功能函数—查询存款函数*/ void chaxun_qukuan(); /*查询菜单功能函数—查询取款函数*/ void chaxun_zhuanzhang();/*查询菜单功能函数—查询转账函数*/
函数设计:
本程序在函数设计上采用结构化程序设计方法,自顶向下,逐步根据功能设计函数,逐步细化设计,由浅入深,模块化设计,保证了程序的可读性和质量。先设计主菜单(一级菜单)的功能函数,再设计二级菜单的功能函数,自顶而下,逐步细化。如图示意:
(顶层设计) 注 册 怎(第二层 样设计) 注二级菜单 册
(第三层设计)
主菜单功能 登录 装载 保存 存款 取款 转账 查询 怎样读入 怎样保存
4
信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计
函数调用关系: main strcpyzhuce strlenstrcmpstrcmpcunkuan strcmp denglu qukuan zhuangzhang strcpy chaxun_menu denglu_menu chaxun_yue chaxun chaxun_mingxi chaxun_cunkuan chaxun_qukuan xiugaimima fopen fscanf fgets zhuangzai chaxun_zhuanzhang fopen fclose fprint baocun fclose menu 5
信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计
注册函数的流程图:
开始 定义数据变量,调用时间函数,设置账号的随机分配
输入姓名
输入两次密码
N 两次密码相同
Y 输入身份证号
也 号位数既不为 15 Y 不为18
N 输入存款金额
输出账户和第一次
交易的数据清单
结束
6
信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计
登录函数的流程图: 开始 定义个变量,i=0 输入账号 N i 7 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 修改密码函数的流程图: 开始 输入账号 输入旧密码 密码正确 N return; Y 输入两次新密码 N N 两次密码输次数为3 入相同 Y Y return; 密码修改成功 结束 8 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 存款函数的流程图: 开始 system(\ 输入存款金额jine jineP!=0||jine<=0 jineP!=0||jine<=0 Y N 调用时间函数 return; 调用strcpy函数复制账号、类型、时间。计算余额 存款成功 输出存款的交易记录 结束 返回 取款函数的流程图: 开始 system(\ 输入取款金额jine 取款金额大于账户余额 Y N jineP!=0|| jine<=0 输出提示, return; N Y return; 调用时间函数 调用strcpy函数复制账号、类型、时间。计算余额 输出存款的交易记录 结束 返回 9 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 转账函数的流程图: 开始 输入对方账号 Y 是否与当前登录return; 账号相同 N N return; i Y 输入的账号与已注 Y i=zhanghuxuhao 册的某一账号相同 N 输出对方账号的姓名 i++; N return; 是否继续 Y 输入转账金额jine Y return; jine大于账户余额 N jine<=0 Y N 显示警告信息 10 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 N return; 是否继续 Y 执行转账语句 装载函数的流程图: 输出转账交易记录 开始 输入要读入数结束 据的文件名 找不到该文 Y 返回 件名 N N i N Y i 从文件中读入交易记录的数据 i++ 信息 i++ 关闭文件 结束 11 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 保存函数的流程图: 开始 输入要保存数 据的文件名 新建该文件, 若 Y 返回 打不开文件 N N i N Y i 把交易记录的数据信息输出到 i++ 保存文件 i++ 关闭文件 结束 12 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 3、编码及调试 #include #define ZHANGHUSHU 100 /*账户的结构体*/ struct Zhanghu { char zhanghao[16];/*用户账号*/ char xingming[9];/*用户姓名*/ char mima[7];/*账户密码*/ char shengfenzheng[19];/*用户身份证号*/ float yue;/*账户余额*/ char kaihushijian[50];/*开户时间*/ }; typedef struct /*交易记录的结构体*/ { char zhanghao[16];/*交易的账号*/ char jiaoyishijian[50];/*交易时间*/ char leixing[5];/*交易类型*/ float jiaoyijine;/*交易金额*/ float jiaoyiyue;/*交易后的余额*/ char duifangzhanghao[12];/*交易时的对方账号*/ } Jiaoyi; struct Zhanghu zhanghu[100];/*定义账户的结构体数组,可以注册100个账户*/ int zhanghuxuhao=0,jiaoyixuhao=0,dangqianxiabiao=0,duifangzhanghuxiabiao=0;/*账户序号,交易序号,当前登录的账户下标,转账时对方的账户下标*/ Jiaoyi jiaoyi[1000];/*定义交易记录的结构体数组,可以保存1000条交易记录*/ int menu(); /*声明 主菜单 函数*/ void zhuce(); /*声明 注册 函数*/ void denglu(); /*声明 登录 函数*/ void zhuangzai(); /*声明 装载数据 函数*/ void baocun(); /*声明 保存数据 函数*/ int denglu_menu(); /*声明 登录菜单 函数*/ 13 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 void cunkuan(); /*声明 存款 函数*/ void qukuan(); /*声明 取款 函数*/ void zhuanzhang(); /*声明 转账 函数*/ void chaxun(); /*声明 查询 函数*/ void xiugaimima(); /*声明 修改密码 函数*/ int chaxun_menu(); /*声明 查询菜单 函数*/ void chaxun_yue(); /*声明 查询余额 函数*/ void chaxun_mingxi(); /*声明 查询明细 函数*/ void chaxun_cunkuan(); /*声明 查询存款 函数*/ void chaxun_qukuan(); /*声明 查询取款 函数*/ void chaxun_zhuanzhang();/*声明 查询转账 函数*/ void main()/*主函数*/ { system(\设置运行界面的背景颜色为蓝色*/ printf(\欢迎使用ATM终端机!\\n\\n\\n\\t\\t\\t\ system(\暂停功能*/ system(\清屏*/ for(;;)/*空循环语句*/ { switch(menu()) /*主菜单选择判断*/ { case 1:zhuce();/*调用注册函数*/ printf(\ break; case 2:denglu();/*调用登录函数*/ printf(\ break; case 3:zhuangzai();/*调用装载数据的函数*/ printf(\ break; case 4:baocun();/*调用保存数据的函数*/ printf(\ break; case 0: printf(\欢迎使用ATM终端机管理系统。谢谢!\\n\结束程序*/ printf(\ system(\ exit(0); 14 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 } } } int menu() /*定义主菜单函数*/ { char c; do { system(\每次选择运行前清屏*/ printf(\ printf(\终端机管理系统主菜单********\\n\主菜单选择*/ printf(\ printf(\注册|\\n\ printf(\登录|\\n\ printf(\装载数据|\\n\ printf(\保存数据 |\\n\ printf(\退出 |\\n\ printf(\ printf(\ printf(\ printf(\请作出选择(0-4):\ c=getchar(); /*读入选择*/ }while(c<'0'||c>'4'); return(c-'0'); /*c变为空后返回重新选择*/ } /***************定义主菜单里的各功能函数函数**********************/ void zhuce() /*定义注册函数*/ { int baiwei,shiwei,gewei,len;/*定义账号的后三位*/ char mima2[7];/*注册时第二次输入的密码*/ char t[30];/*开户时间*/ int i,j=0; time_t rawtime; struct tm *timeinfo; time(&rawtime);/*调用时间函数,取得开户时间*/ timeinfo=localtime(&rawtime); strcpy(t,asctime(timeinfo)); for(i=0;i 15 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 { t[i]='\\0'; break; } strcpy(zhanghu[zhanghuxuhao].zhanghao,\复制账号的前12位*/ baiwei=zhanghuxuhao/100; shiwei=zhanghuxuhao/10; gewei=zhanghuxuhao; zhanghu[zhanghuxuhao].zhanghao[12]=baiwei+'0'; zhanghu[zhanghuxuhao].zhanghao[13]=shiwei+'0'; zhanghu[zhanghuxuhao].zhanghao[14]=gewei+'0'; zhanghu[zhanghuxuhao].zhanghao[15]='\\0'; system(\运行前清屏*/ printf(\注册功能————ZHUCE GONGNENG\\n\\n\\n\ printf(\请输入姓名:\ fflush(stdin);/*消耗输入字符后的回车操作*/ scanf(\ do { printf(\请输入6位数密码:\ fflush(stdin); scanf(\ len=strlen(zhanghu[zhanghuxuhao].mima); if(len!=6)/*判断密码是否为6位*/ { printf(\您的密码不是6位数!\ system(\ return; } //此处用字符串长度函数来判断密码的位数 printf(\请再次输入密码:\ fflush(stdin); scanf(\ if(strcmp(zhanghu[zhanghuxuhao].mima,mima2)!=0)/*判断两次密码输入是否相同*/ { j++; printf(\您的密码输入错误!您还有%d次机会输入密码!\\n\ } if(j==3)/*密码输入错误不得超过三次*/ { system(\ 16 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 return; } } while (strcmp(zhanghu[zhanghuxuhao].mima,mima2)!=0); do { printf(\请输入身份证号:\ fflush(stdin); scanf(\ len=strlen(zhanghu[zhanghuxuhao].shengfenzheng); if(len!=18&&len!=15)/*判断身份证号位数是否为15位或18 位*/ printf(\身份证号错误!请输入15位或18位身份证号!\\n\ }while(len!=18&&len!=15); printf(\请输入存入金额:\ fflush(stdin); scanf(\ if((int)zhanghu[zhanghuxuhao].yueP!=0)/*存款金额必须为50的整数倍*/ { printf(\本终端机只接受50元或100元面值的存款!\ system(\ return; } strcpy(zhanghu[zhanghuxuhao].kaihushijian,t);/*复制开户时间*/ strcpy(jiaoyi[jiaoyixuhao].zhanghao,zhanghu[zhanghuxuhao].zhanghao);/**/ strcpy(jiaoyi[jiaoyixuhao].leixing,\存\复制交易类型*/ strcpy(jiaoyi[jiaoyixuhao].jiaoyishijian,t);/*复制交易时间*/ jiaoyi[jiaoyixuhao].jiaoyijine=zhanghu[zhanghuxuhao].yue;/*第一次交易的账户余额值赋给交易经额的值*/ jiaoyi[jiaoyixuhao].jiaoyiyue=zhanghu[dangqianxiabiao].yue;/*第一次交易的账户余额值赋给交易余额的值*/ printf(\开户成功!\\t\ system(\暂停功能*/ //输出账户第一次交易的数据清单 printf(\账号\\t\\t交易类型\\t交易金额\\t余额\\t\\t交易时间\\n\ printf(\ 17 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 printf(\ %s\ printf(\ printf(\ %.2f\ printf(\ %s\\t\\n\\n\ zhanghuxuhao++;/*账户序号加一*/ jiaoyixuhao++;/*交易序号加一*/ printf(\ system(\暂停*/ } void denglu() /******定义登录函数*******/ { char zhanghao[16],mima[7];/*登录时输入的账号和密码*/ int i=0,j=0; system(\清屏*/ printf(\登录功能————DENGLU GONGNENG\\n\\n\\n\进入登录得功能界面*/ printf(\输入账号:\ scanf(\输入账号*/ for( i=0;i printf(\输入密码:\ scanf(\ 18 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 if(strcmp(mima,zhanghu[i].mima)!=0) { j++; printf(\您的密码输入错误!您还有%d次机会输入密码!\\n\\n\ } if(j==3)/*密码输入错误不得超过三次*/ { system(\ return; } }while(strcmp(mima,zhanghu[i].mima)!=0); for(;;)/*空循环语句*/ { switch(denglu_menu()) /***登陆界面选择判断***/ { case 1:cunkuan();/*调用存款函数*/ printf(\ break; case 2:qukuan();/*调用取款函数*/ printf(\ break; case 3:zhuanzhang();/*调用转账函数*/ printf(\ break; case 4:chaxun();/*调用查询函数*/ printf(\ break; case 5:xiugaimima();/*调用修改密码函数*/ printf(\ break; case 0: return;/*返回上一级菜单界面*/ } } } int denglu_menu()/**********************定义**************************/ { char c; do { 19 登录菜单数 函信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 system(\每次选择运行前清屏*/ printf(\*********欢迎进入 登录界面!*********\\n\\n\/*登录界面菜单选择*/ printf(\存款|\\n\ printf(\取款|\\n\ printf(\转账|\\n\ printf(\查询 |\\n\ printf(\修改密码 |\\n\ printf(\返回 |\\n\ printf(\ printf(\请作出选择(0-5):\ c=getchar(); /*读入选择*/ }while(c<'0'||c>'5'); return(c-'0'); /*c变为空后返回重新选择*/ } void zhuangzai() /*定义装载函数*/ { FILE *fp;/*定义文件指针*/ int i; char wenjianming[13];/*定义输入的文件名*/ printf(\请输入打开的文件名(文件名.txt):\ fflush(stdin); scanf(\输入要读入数据的文件名*/ if ((fp=fopen(wenjianming,\找不到输入的文件名*/ { printf(\无法打开该文件!\ system(\ return; } fscanf(fp,\ fscanf(fp,\账号\\t\\t姓名\\t密码\\t身份证号\\t余额\\t开户时间\\n\ for(i=0;i 20 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 { fscanf(fp,\ fgets(jiaoyi[i].jiaoyishijian,30,fp); fscanf(fp,\ &jiaoyi[i].jiaoyijine,&jiaoyi[i].jiaoyiyue); fgets(jiaoyi[i].duifangzhanghao,16,fp); fscanf(fp,\ } fclose(fp);/*关闭文件*/ printf(\读入成功!\\n\\n\ printf(\ system(\} void baocun() /***定义保存函数***/ { FILE *fp;/*文件指针*/ int i; char wenjianming[13]; printf(\请输入文件名(输入格式为:文件名.txt):\ fflush(stdin); scanf(\输入要保存的文件名*/ if((fp=fopen(wenjianming,\ { printf(\无法打开文件!\\n\\t\\t\\t\ system(\ return; } fprintf(fp,\ fprintf(fp,\账号\\t\\t姓名 \\t密码\\t身份证号\\t\\t\\t余额\\t\\t\\t开户时间\\n\ for(i=0;i 21 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 system(\} void cunkuan() /*************************定义存款函数***********************/ { float jine;/*输入的存款金额*/ char t[30];/*把取得的存款时间赋给该数组*/ int i; time_t rawtime; struct tm *timeinfo; system(\清屏*/ printf(\存款功能————CUNKUAN GONGNENG\\n\\n\\n\进入存款功能界面*/ printf(\本终端机只接收50元或100元币值人民币!\\n\\n\\t\\t\\t请输入存款金额:\提示信息*/ scanf(\输入存款金额*/ if((int)jineP!=0||jine<=0)/*存款金额必须为50的整数倍且为正数*/ { printf(\请输入面值为50或100的存款金额!请勿输入负数或0!\\n\\t\\t\\t\ system(\ return; } else/*调用时间函数,把取得的存款时间赋给t数组*/ { time(&rawtime); timeinfo=localtime(&rawtime); strcpy(t,asctime(timeinfo)); for(i=0;i strcpy(jiaoyi[jiaoyixuhao].zhanghao,zhanghu[dangqianxiabiao].zhanghao);/*把当前登录账号复制给交易记录里的账号*/ strcpy(jiaoyi[jiaoyixuhao].leixing,\存\复制交易类型*/ strcpy(jiaoyi[jiaoyixuhao].jiaoyishijian,t);/*复制交易时间*/ jiaoyi[jiaoyixuhao].jiaoyijine=jine;/*把存款金额赋给交易金额*/ zhanghu[dangqianxiabiao].yue+=jiaoyi[jiaoyixuhao].jiaoyijine;/*计算存款后的账户余额*/ jiaoyi[jiaoyixuhao].jiaoyiyue=zhanghu[dangqianxiabiao].yue;/*交易后的余额等于账户余额*/ 22 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 printf(\存款成功!\\t\\t\ system(\ printf(\账号\\t\\t交易类型\\t交易金额\\t交易余额\\t\\t交易时间\\n\输出账户存款交易的数据清单 printf(\ printf(\ %s\ printf(\ printf(\ %.2f\ printf(\ %s\\t\ jiaoyixuhao++;/*交易序号加一*/ printf(\ system(\} void qukuan() /***********************定义取款函数**************************/ { float jine;/*定义取款金额*/ char t[30];/*把取得的取款时间赋给该数组*/ int i; time_t rawtime; struct tm *timeinfo; system(\清屏*/ printf(\取款功能————QUKUAN GONGNENG\\n\\n\\n\进入取款功能界面*/ printf(\本终端机只可取50或100元币值人民币!\\n\\n\\t\\t\\t请输入取款金额:\ scanf(\/*输入取款金额*/ if(jine> zhanghu[dangqianxiabiao].yue)/*账户余额是否足够取款*/ { printf(\您的余额不足!\ system(\ return; } if((int)jineP!=0||jine<=0)/*取款金额必须为50的整数倍且为正数*/ { printf(\请输入面值为50或100的存款金额!请勿输入负数或0!\\n\\t\\t\\t\ system(\ 23 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 return; } else/*调用时间函数,把取得的交易时间赋给t数组*/ { time(&rawtime); timeinfo=localtime(&rawtime); strcpy(t,asctime(timeinfo)); for(i=0;i strcpy(jiaoyi[jiaoyixuhao].zhanghao,zhanghu[dangqianxiabiao].zhanghao);/*把当前登录账号复制给交易记录里的账号*/ strcpy(jiaoyi[jiaoyixuhao].leixing,\取\复制交易类型*/ strcpy(jiaoyi[jiaoyixuhao].jiaoyishijian,t);/*复制交易时间*/ jiaoyi[jiaoyixuhao].jiaoyijine=jine;/*取款金额值赋给交易金额*/ zhanghu[dangqianxiabiao].yue-=jiaoyi[jiaoyixuhao].jiaoyijine;/*计算取款后的账户余额*/ jiaoyi[jiaoyixuhao].jiaoyiyue=zhanghu[dangqianxiabiao].yue;/*取款后余额等于账户余额*/ printf(\取款成功!\\t\\t\ system(\ printf(\账号\\t\\t交易类型\\t交易金额\\t交易余额\\t\\t交易时间\\n\输出账户和交易的数据清单 printf(\ printf(\ %s\ printf(\ printf(\ %.2f\ printf(\ %s\\t\ jiaoyixuhao++;/*交易序号加一*/ printf(\ system(\} void zhuanzhang() /******************************定义转账函数 24 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 ********************************/ { char t[30];/*时间数组*/ int i; time_t rawtime; struct tm *timeinfo; float jine;/*转账金额*/ char duifangzhanghao[16],c;/*输入的对方账号赋给该数组。在判断是否继续时,把输入的字符Y或N赋给c,以便读入选择*/ system(\清屏*/ printf(\ 转账功能————ZHUANZHANG GONGNENG\\n\\n\\n\进入转账功能界面*/ printf(\请输入对方账号:\ scanf(\输入对方账号*/ if(strcmp(zhanghu[dangqianxiabiao].zhanghao,duifangzhanghao)==0)/*判断输入的账号是否与当前用户的账号相同*/ { printf(\对不起!用户不能给自己转账!\\t\ system(\ return; } for( i=0;i time(&rawtime); timeinfo=localtime(&rawtime); strcpy(t,asctime(timeinfo)); for(i=0;i 25 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 if(t[i]=='\\n') { t[i]='\\0'; break; } } printf(\对方姓名:*%s\只显示出对方用户的名,不显示出姓*/ printf(\是否继续?(Y/N): \ fflush(stdin); scanf(\读入选择*/ if(c!='y'&&c!='Y') { printf(\退出转账功能!欢迎使用其它功能!\\t\ system(\ return; } else do { printf(\请输入转账金额:\ scanf(\ if(jine<=0)/*转账金额不得为非正数*/ { printf(\请不要输入负数或0!\ system(\ } if(jine>zhanghu[dangqianxiabiao].yue)/*转账金额在账户余额范围内*/ { printf(\对不起!您的余额不足,请在余额范围内进行转账。\\n\\t\\t\ system(\ return; } }while(jine<=0); printf(\请用户谨慎考虑,以防受骗!\提示谨慎信息*/ printf(\是否确定转账?(Y/N): \ fflush(stdin); scanf(\读入选择*/ if(c!='y'&&c!='Y') { printf(\退出转账功能!欢迎使用其它功能!\ system(\ return; 26 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 } strcpy(jiaoyi[jiaoyixuhao].zhanghao,zhanghu[dangqianxiabiao].zhanghao);/*把当前用户账号复制给此次交易记录的账号*/ strcpy(jiaoyi[jiaoyixuhao].leixing,\转出\复制交易类型*/ strcpy(jiaoyi[jiaoyixuhao].duifangzhanghao,zhanghu[duifangzhanghuxiabiao].zhanghao);/*复制交易的对方账号*/ strcpy(jiaoyi[jiaoyixuhao].jiaoyishijian,t);/*复制交易时间*/ jiaoyi[jiaoyixuhao].jiaoyijine=jine;/*复制交易金额*/ zhanghu[dangqianxiabiao].yue-=jiaoyi[jiaoyixuhao].jiaoyijine;/*计算转账后的账户余额*/ jiaoyi[jiaoyixuhao].jiaoyiyue=zhanghu[dangqianxiabiao].yue; jiaoyixuhao++; strcpy(jiaoyi[jiaoyixuhao].zhanghao,zhanghu[duifangzhanghuxiabiao].zhanghao);/*复制接受转帐金额的用户账号*/ strcpy(jiaoyi[jiaoyixuhao].leixing,\转入\ strcpy(jiaoyi[jiaoyixuhao].duifangzhanghao,zhanghu[dangqianxiabiao].zhanghao);/*复制转账的用户账号*/ strcpy(jiaoyi[jiaoyixuhao].jiaoyishijian,t);/*复制转账的时间*/ jiaoyi[jiaoyixuhao].jiaoyijine=jine; zhanghu[duifangzhanghuxiabiao].yue+=jiaoyi[jiaoyixuhao].jiaoyijine;/*计算金额转入后的账户余额*/ jiaoyi[jiaoyixuhao].jiaoyiyue=zhanghu[duifangzhanghuxiabiao].yue;/*账户余额值赋给交易后的余额值*/ jiaoyixuhao++; printf(\恭喜您!转账成功!\\t\\t\ system(\ printf(\账号\\t\\t交易类型\\t转出金额\\t余额\\t交易时间\\n\输出账户和交易的数据清单 printf(\ printf(\ %s\ printf(\ printf(\ %.2f\ printf(\ %s\\t\\n\ printf(\对方账号:%s\\n\输出对方用户的账号*/ 27 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 printf(\ system(\} void xiugaimima() /****************************定义 修改密码 函数****************************/ { char mima[7],xinmima1[7],xinmima2[7]; int j=0; printf(\请输入原来的密码:\ scanf(\输入旧密码*/ if(strcmp(mima,zhanghu[dangqianxiabiao].mima)!=0)/*判断旧密码正确与否*/ { printf(\您的密码输入错误!\ system(\ return; } do { printf(\请输入新密码:\ scanf(\ printf(\请再一次输入新密码:\输入两次新密码*/ scanf(\ if(strcmp(xinmima1,xinmima2)!=0)/*判断输入的两次新密码是否相等*/ { j++; printf(\您的密码输入错误!您还有%d次机会输入密码!\\n\ } if(j==3)/*新密码输入错误不得超过三次*/ { system(\ return; } }while(strcmp(xinmima1,xinmima2)!=0); strcpy(zhanghu[dangqianxiabiao].mima,xinmima1);/*拷贝新密码到账户信息里*/ printf(\您的密码修改成功!\ system(\ return; } void chaxun() /***定义查询函数***/ { for(;;)/*空循环语句*/ 28 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 { switch(chaxun_menu()) /*查询界面选择判断*/ { case 1:chaxun_yue();/*调用查询余额函数*/ printf(\ break; case 2:chaxun_mingxi(); /*调用查询明细函数*/ printf(\ break; case 3:chaxun_cunkuan(); /*调用查询存款函数*/ printf(\ break; case 4:chaxun_qukuan(); /*调用查询取款函数*/ printf(\ break; case 5:chaxun_zhuanzhang(); /*调用查询转账函数*/ printf(\ break; case 0: return; } } } int chaxun_menu()/*定义查询菜单函数*/ { char c; do { system(\每次选择运行前清屏*/ printf(\*********欢迎进入 查询界面!*********\\n\\n\/*查询界面菜单选择*/ printf(\查询余额|\\n\ printf(\查询明细|\\n\ printf(\查询存款|\\n\ printf(\查询取款|\\n\ printf(\查询转账|\\n\ printf(\返回|\\n\ printf(\ 29 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 printf(\请作出选择(0-5):\ c=getchar(); /*读入选择*/ }while(c<'0'||c>'5'); return(c-'0'); /*c变为空后返回重新选择*/ } void chaxun_yue() /*定义查询余额函数*/ { printf(\这是查询余额功能\\n\\n\\t\\t\\t\ printf(\您的账户余额为:%.2f\\n\\n\\t\\t\\t\输出账户余额*/ system(\} void chaxun_mingxi() /*定义查询明细函数*/ { int i; system(\清屏*/ printf(\查询明细————CHAXUN MINGXI\\n\\n\\t\\t\\t\进入查询明细界面*/ printf(\您的账号:%s\ printf(\交易类型 交易金额 交易余额\\t\\t交易时间\\t对方账号\\n\输出账户和交易的数据清单 for(i=0;i printf(\ %s\ printf(\ %.2f\ printf(\ printf(\ %s\ printf(\ %s\\n\\n\ } printf(\ system(\} void chaxun_cunkuan() /*定义查询存款函数*/ { int i; system(\ printf(\查询存款————CHAXUN CUNKUAN\\n\\n\\t\\t\\t\ printf(\您的账号:%s\ printf(\交易类型\\t交易金额\\t交易余额\\t\\t交易时间\\n\输出账户和交易的数据清单 30 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 for(i=0;i if( strcmp(jiaoyi[i].zhanghao,zhanghu[dangqianxiabiao].zhanghao)==0&&strcmp(jiaoyi[i].leixing,\存\ { printf(\ \\t%s\ printf(\ printf(\ printf(\ %s\\n\\n\ } printf(\ system(\} void chaxun_qukuan() /*定义查询取款函数*/ { int i; system(\ printf(\查询取款————CHAXUN QUKUAN\\n\\n\\t\\t\\t\ printf(\您的账号:%s\ printf(\交易类型\\t交易金额\\t交易余额\\t\\t交易时间\\n\输出账户和交易的数据清单 for(i=0;i if( strcmp(jiaoyi[i].zhanghao,zhanghu[dangqianxiabiao].zhanghao)==0&&strcmp(jiaoyi[i].leixing,\取\ { printf(\ \\t%s\ printf(\ printf(\ printf(\ %s\\n\\n\ } printf(\ system(\} void chaxun_zhuanzhang() /*定义查询转账函数*/ { int i; 31 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 char leixing[5]; system(\ printf(\查询转账————CHAXUN ZHUANZHANG\\n\\n\\t\\t\\t\ printf(\您的账号:%s\ printf(\交易类型 交易金额 交易余额\\t交易时间\\t对方账号\\n\输出账户和交易的数据清单 for(i=0;i if( strcmp(jiaoyi[i].zhanghao,zhanghu[dangqianxiabiao].zhanghao)==0&&strcmp(leixing,\转\判断为当前用户的转账记录*/ { printf(\ printf(\ %.2f\ printf(\ %.2f\ printf(\ printf(\ } } printf(\ system(\} 4、程序运行截图 32 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 33 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 34 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 35 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 36 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 四、 总结与体会 思想“备战” 心情忐忑 暑假之前就在想,收假回来就要进行C语言程序设计课程设计,上个学期C语言学得那么……考试还可以,让我去做两周的程序设计还不崩溃。而且听说还要独立完成一个比较大的程序设计,一想到这心里就弄得心慌慌的。于是,考完试后,痛下决心,带C语言的课本回家,整个暑假啃这本书,还拿不下它吗! 整个暑假?? 事实是,书本“浏览”一遍后,就被我于心不忍的留在了房间的角落里。返校之前,找到C语言课本,擦掉上面的灰尘,发出感叹:“这书白带回来了,那两周该怎么过啊??” 无奈,回到学校,上课前一晚,简单的回顾了一下课本。第二天,怀着忐忑不安的心情,踏上了通往机房的“崎岖路途”。 课程设计第一天 上课第一天,心情总算舒缓下来。讲解了一个贪吃蛇游戏的程序,体验了20分钟的游戏过程,还好,能听得懂,没想象的那么难。可是,“好戏”总是在后头,暗暗跟自己说“加油吧!时间足够的!”,上课比较认真的听了,课下的安排也挺松的,又随便看了下课本。好吧,青春总是要有挑战的,虽然这算不上什么挑战。一个星期只上三天课,时间足够自己安排。那就发挥“悬梁刺股”的奋斗精神,事实上,虽然还没到达这种地步,这两周过的确实挺辛苦的。早上一起床就打开电脑(当然不是玩电脑,很专注的编程),除了吃饭和上课几乎不离开宿舍。好几次,电脑还没崩溃,我就想崩溃了?? 课程设计第一周完——开始有一点点成就感 不得不说,老师们很尽职尽责,讲解的很详细。好几次,找了很多次都不知道错在哪里,一头雾水,经老师这么一点拨,豁然开朗。大一上学期学完C语言还懵懵懂懂的,现在才过了一周,连我都感到很惊讶,自己对C程序的编程思路变得比以前清晰了不少,编程能力也提高了不少。这一改变让我很欣喜,在编程上更有自信了。说实话,经过这一周,课程设计已经把我对C语言编程的胃口完全吊起来了,对编程的“恐惧”和乏味早就丢到 天边的哪一个角落里去啦。 课程设计第二周(上):充满自信的开始——收获 虽然说编程能力确实提高了不少,但也不是编程总是一帆风顺的。在宿舍里调试程序时,有时候总是编译出错,检查后又找不出错误,总是急的心烦意乱。实在编不下去了,走出宿舍,在校园里随便走走。回来后,心平气和,再看程序,多看几遍,就发现了错误。因此,编程的时候,心情愉悦也是很重要的,至少能少犯错,提高编程效率。另外,每当自己编程打结的时候,就和做同一个程序设计的同学互相讨论,总是能发现一些意外之处,能很好的完善程序。互相交流,都能受益。让我认识到,编程真的是需要互相借鉴,互相学习,互相交流的一件事。在编程想法和编程思路上,自己想不到的别人想得到,或者别人想不到的自己有想到了。因此,跟同学多交流,多学习,也是提高自己编程能力的方法之一。 37 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 课程设计第二周(下)——成果 课程设计已经快要接近尾声了,程序功能也在完善中。无数次运行程序,测试ATM模拟系统程序的功能。看着调试后的程序无误的运行结果,心里很高兴。 无数次代码的翻滚让眼睛疲累,无数次的手指在键盘上快速的敲打,无数次的调试,终于能见成效。很感谢老师的帮助,没老师的指导帮助,确实是很困难的。 课程设计——尾声 两周的时间,在专注忙碌的调试程序中就要过去。两周的学习,两周的改变,两周的提高,在这两周所收获的,比一个学期都要多。两周,把C语言课本的十章都融会贯通。一个学期学完还比较迷茫的知识,现在已豁然开朗。当然,没一个学期的系统学习也是不行的,毕竟,两周的提高都是建立在对基础知识的了解和掌握上。奋斗了十多个日日夜夜,今天终于要交出自己的劳动成果了。感慨啊,虽然不希望常常这样辛苦,却不得不说,这十多个日日夜夜,真的很过瘾。 呐喊:青春,让我流汗,让我不要忘记奋斗的乐趣 短短的两周,不仅是编程能力的改变,还有认识上的提高。高考以后,好久没有体会这种在学习中奋斗的感觉了。高考已过,这两周也即将结束,然而对于奋斗的历程确还只是开始,我希望不要让安逸的生活渐渐磨灭我奋斗的斗志,我渴望能在年纪尚未老去前多流汗,我渴望奋斗的乐趣不会随着岁月的流逝而流失,我渴望奋斗到身体衰老以致不能行走,只为一个念想?? 在调试程序中收获的编程小心得和小技巧: (1) 在VC++6.0中编译时,若用到for循环语句,不要在for语句内定义 i,不然肯定会编译出错; (2) 编完程序,要仔细检查圆括号和大括号有没有配对齐; (3) 一些有用的库函数:system(\每次运行前清屏*/ system(\暂停功能,可以让运行界面暂停,昂任意键在继续 system(\设置运行界面的背景颜色,数字为字体颜色的代号,大写字母为背景颜色的代号*/ 另外,在调用system(\类函数时,要写预处理指令#include 险作用*/ exit(0);/*直接终止程序*/ 38 信息工程与自动化学院 计算机科学与技术专业 C程序设计语言课程设计 五、 参考文献 谭浩强著. C程序设计(第四版). 北京:清华大学出版社,2010 谭浩强著. C程序设计(第四版)学习辅导. 北京:清华大学出版社,2010 谭浩强著. C程序设计教程. 北京:清华大学出版社,2007 谭浩强著. C++程序设计. 北京:清华大学出版社,2011 39
正在阅读:
人教版九年级英语单词表(带音标)03-08
浅谈甘肃国有公路施工企业工程项目管理10-01
一件令人钻心痛苦的事作文700字06-29
如家酒店成功管理因素分析08-07
我眼中的最美教师作文600字07-12
累人的一天作文400字06-26
多元统计分析上机考试11-07
词根记忆大全-用最简单的方法快速学英语05-19
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 取款机
- 程序设计
- 完成
- 模拟
- 报告
- 系统
- ATM
- SF6断路器应用
- 第二部分(直流电机的电力拖动,思考题与习题)
- 2018全国中考物理试题《物态变化》试题汇编
- 工程质量管理手册
- 脚手架施工方案(306)
- 西师版数学第三单元分数除法导学案
- 电视信号检测训练 - 图文
- 学生代表大会策划书
- 2016年各班团员新成员
- 江浦高级中学高三英语考前50天复习计划(5)
- 河南大学奖学金、三好学生、优秀学生干部登记表
- 高亮度LED芯片生产工艺流程
- 设备安装质量员习题 - 单项选择题4
- 桥涵结构物技术交底
- 九年级数学模拟试题(七)
- 某地产项目下半年营销策略计划 - 图文
- 2018-2024年中国厨房电器市场深度分析与未来发展趋势研究报告(目录) - 图文
- 2012年陕西高等学校科学技术奖获奖项目一览表-陕西师范大学科学 - 图文
- SWMM简介及简单应用
- 大地测量实习报告 - 图文