atm机课程设计实训报告内容摘要:

程 序 设 计 基 础 实 验 报 告 15 第 5 章 测试 测试结果 ( 1) .主页面 图 ( 1)主页面 ( 2)注册账号 图 ( 2) 注册账号 ( 3)登陆账号 图 ( 3) 登陆账号 程 序 设 计 基 础 实 验 报 告 16 ( 4)服务菜单 图 ( 4) 服务菜单 ( 5)查询服务 图 ( 5) 查询服务 ( 6)取款服务 图 ( 6) 取款服务 ( 7) 转账服务 程 序 设 计 基 础 实 验 报 告 17 图 ( 7) 转账服务 ( 8)修改密码服务 图 ( 8)修改密码服务 ( 9)存款服务 图 ( 9) 存款服务 程 序 设 计 基 础 实 验 报 告 18 结 论 我们这学期刚开学的课程设计是对 ATM 自动取款机的一个设计,这次的设计要求比上学期的实验报告要求要高了很多。 刚开始的时候,老师是让我们先写这一个星期的计划,然后要求我们按计划去做。 比如,首先先构思好 ATM 机的整体思路,在画好各个板块的流程图,在按照流程图去写代码,这样就显得井然有序,思路很清晰。 在之后的课程设计中,由于是单独作业,所以靠自己完成。 这时才发现经过一个暑假, C 语言被我基本忘光了,所以这个课程设计在一定的程度上是在帮我们复习 C语言,同时巩固和掌握它。 我在做课程设计的时候用到的是函数和数组。 函数用来简化程序,数组用来即时存储用户信息。 但是用数组有一个弊端就是下次再登陆系统时,上次开户成功的账号已经不存在了,又要重新开户,这就得用到文件和链表了。 文件其实是在我们上学期的时候就有提到过的,只不过对 它的使用掌握的并不是很好。 在 ATM 中插入链表,我们根本就无从下手,链表本身就是一个难点,更何况还需要我们插入 ATM 中。 所以通过这次课程设计,我看到了我的懒惰和知识匮乏,那么在之后的学习中,我会继续加强已经懂的知识,去了解和深入新的知识,比如下个阶段就是搞懂文件和链表。 我相信这次的课程设计之后,我会更加努力的学好这门课程。 程 序 设 计 基 础 实 验 报 告 19 参考文献 [1] 谭浩强著.C程序设计 (第三版 )[ M].清华大学出版社, 2020. 程 序 设 计 基 础 实 验 报 告 20 附 录 源代码: include includeiostream include include define length sizeof(struct Account) /* length 代表结构体 struct Account 的长度 */ struct Account{ /* 定义账号的结构体 */ char name[20]。 /* 姓名 */ char IdCard[20]。 /* 身份证号码 */ char account[20]。 /* 账号号码 */ char password[7]。 /* 账号密码 */ double money。 /* 账号余额 */ struct Account *next。 }Acc,*p,*head。 int MenuOne()。 void zhuce()。 int login()。 void MenuTwo()。 void chaxun()。 void qukuan()。 void jiaoyi(long qukuan)。 void select()。 void qukuanselect(long jin_e1)。 void zhuanzhang()。 void xiugai()。 void cunkuan()。 void wenjian()。 void Save()。 int main(){ MenuOne()。 system(pause)。 return 0。 } int MenuOne(){ /* 主页面 */ int choice=1。 while(1){ /* 无限循环 */ printf(\t\n)。 printf(\t* *\n)。 printf(\t* 欢迎来到大众银行 *\n)。 printf(\t* *\n)。 printf(\t\n)。 printf( \n)。 printf(选择业务 \n)。 printf(\n)。 printf(\t开通账号 \n)。 printf(\t登录账号 \n)。 程 序 设 计 基 础 实 验 报 告 21 printf(\t退出 \n)。 printf(\n)。 printf(请选择 13:)。 scanf(%d,amp。 choice)。 switch(choice){ case 1: system(cls)。 zhuce()。 /* 进入注册功能 */ break。 case 2: system(cls)。 wenjian()。 login()。 /* 进入登陆页面 */ break。 case 3: printf(谢谢使用,再见 . . .\n)。 /* 退出系统 */ system(pause)。 exit(0)。 break。 default : printf(输 入错误,请重新输入 . . .\n)。 /* 重新输入 */ Sleep(2020)。 system(cls)。 } } } void zhuce(){ FILE *fp。 int flag。 char password_1[7]。 struct Account *p1。 printf(\n\t********************注册账号 ************************\n)。 printf(\n)。 flag=0。 /*输入是否合格的标志 当值为 1 时表示要重新输入 */ wenjian()。 /*读取文件 */ p1=head。 p=amp。 Acc。 while(1){ printf(请输入身份证号码 : )。 scanf(%s,)。 if(strlen()==18) break。 printf(身份证长度不符,请重新输入 . . .\n)。 } printf(请输入账号 : )。 scanf(%s,)。 while(flag!=1amp。 amp。 p1!=NULL){ if((strcmp(,p1account)!=0)) p1=p1next。 else flag=1。 } if(flag==1){ printf(账号已存在,请重新注册 . . .\n)。 Sleep(2020)。 system(cls)。 zhuce()。 } while(1){ 程 序 设 计 基 础 实 验 报 告 22 printf(请输入一个六位数的密码 : )。 scanf(%s,)。 printf(请 再 次 输 入 密 码 : )。 scanf(%s,password_1)。 if(strlen()==6amp。 amp。 strcmp(password_1,)==0) break。 printf(两次输入的密码不一致或者长度不符,请重新输入 . . .\n)。 } printf(请输入姓名 : )。 scanf(%s,)。 =0。 /* 初始金额为 0 */ if((fp=fopen(,ab+))==NULL){ /* 将新账户的信息存入文件 */ printf(cannot open file!\n)。 return。 } if(p!=NULL){ if(fwrite(p,length,1,fp)!=1) printf(file write error!\n)。 } fclose(fp)。 printf(账号注册成功 . . .\n)。 Sleep(2020)。 system(cls)。 MenuOne()。 } int login(){ char zhanghao[20]。 char mima[7]。 int b,flag=0。 /* 帐号或密码输入错误,将重新输入 */ printf(\n\t********************登陆账号 ************************\n)。 printf(\n)。 p=head。 printf(请输入账号 : )。 scanf(%s,zhanghao)。 while(flag!=1amp。 amp。 p!=NULL){ if(strcmp(zhanghao,paccount。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。