ATM项目.doc_第1页
ATM项目.doc_第2页
ATM项目.doc_第3页
ATM项目.doc_第4页
ATM项目.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实训报告实训题目: ATM系统的设计与实现 院 系: 计算机科学与工程学院 专 业: 网络工程 班级: 10网络二班 组员姓名: 李德新 指导教师: 罗程果 实训地点: N6 开课时间: 2012 至 2013 学年第 2 学期常熟理工学院计算机科学与工程学院 制账户:account.h银行:bank.h用户:user.h管理员:admin.h 文件操作:file.h界面打印:print.h主函数:main.c/account.h文件#ifndef _ACCOUNT_H_#define _ACCOUNT_H_#include common.htypedef struct char name20; char id20; char passwd20; float balance;account;account * account_create(char *name, char *id, char *passwd, float balance);void account_destory(account *ac);float account_deposit(account *ac, float amount);float account_withdraw(account *ac, float amount);void account_query(account *ac);int account_changepwd(account *ac, char *newpasswd);#endif/account.c文件#include account.haccount * account_create(char *name, char *id, char *passwd, float balance) account *a = (account*)malloc(sizeof(account); strcpy(a-name, name); strcpy(a-id, id); strcpy(a-passwd, passwd); a-balance = balance; return a;void account_destory(account *ac) if(ac != NULL) free(ac); ac = NULL; float account_deposit(account *ac, float amount) if(ac = NULL) return 0; if(amount balance += amount; return ac-balance;float account_withdraw(account *ac, float amount) if(ac = NULL) return 0; if(amount ac-balance) printf(?n); return -1; ac-balance -= amount; return ac-balance;void account_query(account *ac) printf(account_name: %s,taccount_id: %s,taccount_passwd: %s,tbalance: %.2fn, ac-name, ac-id, ac-passwd, ac-balance);int account_changepwd(account *ac, char *newpasswd) if(ac = NULL) return 0; strcpy(ac-passwd,newpasswd); return 1;/bank.h文件#ifndef _BANK_H_#define _BANK_H_#include common.h#include account.htypedef struct char name20; int counter; int maxcounter; account *_array;bank;bank* bank_create(char *name, int max);void bank_destory(bank *pb);int bank_add_account(bank *pb, account *pa);int bank_delete_account(bank *pb, char *id);account* bank_get_account(bank *pb, char *id);void bank_query(bank *pb);int bank_transfer(bank *pb, char *s_id, char *d_id,float amount);#endif/bank.c文件#include bank.hbank* bank_create(char *name, int maxcounter) bank *b = (bank*)malloc(sizeof(bank); strcpy(b-name,name); b-counter = 0; b-maxcounter = maxcounter; b-_array = (account*)malloc(sizeof(account)*b-maxcounter); if(b-_array = NULL) return 0; return b;void bank_destory(bank *pb) if(pb != NULL) free(pb-_array); pb-_array = NULL; free(pb); pb = NULL; void expland(bank *pb)account* _newarray;if(pb-counter = pb-maxcounter-1)printf(expland maxcounter.n);pb-maxcounter+=10;_newarray = (account*)malloc(sizeof(account)*pb-maxcounter);memcpy(_newarray,pb-_array,sizeof(account)*pb-counter);free(pb-_array);pb-_array = _newarray;int bank_add_account(bank *pb, account *pa)if(pb = NULL | pa = NULL) return 0;expland(pb);memcpy(pb-_array+pb-counter,pa,sizeof(account);pb-counter+;return 1;int get_index(bank *pb,char *id) int i; for(i=0;icounter;i+) if(strcmp(pb-_arrayi.id,id) = 0) return i; return -1;int bank_delete_account(bank *pb, char *id) int i,index; char yn; index=get_index(pb,id); if(index = -1) printf(Cant find ,input id error!n); return 0; printf(确定删除该账户:%st(y/n) _ ,pb-_arrayindex.id); yn = getchar(); if(yn = n) return 0; for(i=index;icounter;i+) pb-_arrayi=pb-_arrayi+1; pb-counter-; return 1;account* bank_get_account(bank *pb, char *id) int index; index = get_index(pb,id); if(index = -1) printf(帐户不存在!n); return 0; return &(pb-_arrayindex);void bank_query(bank *pb) int i; printf(n*n); printf(bank_name: %sn,pb-name); printf(bank_name: %s, bank_counter: %d, bank_maxcounter: %dn,pb-name,pb-counter,pb-maxcounter); for(i=0;icounter;i+) account_query(&(pb-_arrayi); int bank_transfer(bank *pb, char *s_id, char *d_id,float amount) account *s = bank_get_account(pb,s_id); account *d = bank_get_account(pb,d_id); account_withdraw(s,amount); account_deposit(d,amount); return 1;/user.h文件#ifndef _USER_H_#define _USER_H_#include common.h#include account.h#include bank.h#include print.htypedef struct user char id20; char pwd20;user;int user_login(bank *pb);int user_withdraw_account(bank *pb,account *ac);int user_deposit_account(bank *pb,account *ac);int user_transfer_account(bank *pb,account *ac);void user_check_account(bank *pb,account *ac);int user_changepwd(bank *pb,account *ac);#endif/user.c文件#include user.hvoid user_choice(bank *pb, account *ac) int ichoice; printf(n输入命令选项(0-4):); scanf(%d,&ichoice); switch(ichoice) case 1: user_withdraw_account(pb,ac); getchar(); break; case 2: user_deposit_account(pb,ac); getchar(); break; case 3: user_transfer_account(pb,ac); getchar(); break; case 4: user_check_account(pb,ac); getchar(); break; case 5: user_changepwd(pb,ac); getchar(); break; case 0: return ; default : fflush(stdin); break; user_choice(pb,ac);int user_login(bank *pb) char input_id20; char input_pwd20; int i; int icounter=0; while(icounter3) printf(输入用户ID:); scanf(%s,input_id); getchar(); printf(输入用户密码:); xin_pwd(input_pwd); printf(n); for(i=0;icounter;i+) if(strcmp(pb-_arrayi.id,input_id)=0 & strcmp(pb-_arrayi.passwd,input_pwd)=0) printf(user login successfully!n); printf(Press any key to user_menu!n); getchar(); user_menu(); user_choice(pb,&(pb-_arrayi); return 1; printf(用户名/密码输错!或账户不存在!n); icounter+; if(icounter = 3) printf(输错超过三次以上,重新操作!n); return -1;int user_withdraw_account(bank *pb,account *ac) float amount; int flag; printf(输入取款金额:); scanf(%f,&amount); getchar(); flag=account_withdraw(ac, amount); if(flag = -1) printf(取款失败!n); return 0; printf(取款成功,余额为:%.2fn,ac-balance); return 1;int user_deposit_account(bank *pb,account *ac) float amount; char yn; while(1) printf(输入存款金额:); scanf(%f,&amount); getchar(); account_deposit(ac, amount); printf(存款成功,余额为:%.2fn,ac-balance); printf(是否继续存款:(y/n) ); yn = getchar(); if(yn = n | yn = N) printf(结束放钞!n); break; continue; return 1;int user_transfer_account(bank *pb,account *ac) float amount; char d_id20; account *ac_temp; printf(余额为:%.2fn,ac-balance); printf(输入转移金额:); scanf(%f,&amount); getchar(); printf(输入对方帐户ID:); scanf(%s,d_id); getchar(); ac_temp = bank_get_account(pb, d_id); if(!ac_temp) printf(转账失败!n); return 0; if(amount (ac-balance) printf(余额不足,转帐失败!n); return 0; bank_transfer(pb, ac-id ,d_id, amount); printf(转账成功,余额为:%.2fn,ac-balance); return 1;int user_changepwd(bank *pb,account *ac) char new1_pwd20; char new2_pwd20; char old_pwd20; while(1) printf(输入原密码:); scanf(%s,old_pwd); getchar(); printf(输入新密码:); scanf(%s,new1_pwd); getchar(); printf(重新确认新密码:); scanf(%s,new2_pwd); getchar(); if(strcmp(ac-passwd,old_pwd)=0) if(strcmp(new1_pwd,new2_pwd)=0) account_changepwd(ac, new1_pwd); printf(修改成功!nn); break; else printf(新密码不匹配,请重新输入!nnn); else printf(原始密码错误,请重输!nnn); void user_check_account(bank *pb,account *ac) account_query(ac);/admin.h文件#ifndef _ADMIN_H_#define _ADMIN_H_#include common.h#include bank.h#includeprint.htypedef struct admin char id20; char pwd20;admin;int admin_login(bank *pb,char *id, char *passwd);int open_account(bank *pb);int remove_account(bank*pb);void query_admin(bank*pb);#endif/admin.c文件#include admin.hvoid admin_choice(bank *pb) int ichoice; printf(n输入命令选项(0-3):); scanf(%d,&ichoice); getchar(); switch(ichoice) case 1: open_account(pb); break; case 2: remove_account(pb); break; case 3: query_admin(pb); break; case 0: return ; default : fflush(stdin); admin_choice(pb);int admin_login(bank *pb,char *id, char *passwd) int icount=1; char input_id20=0; char input_passwd20; admin *ad = (admin*)malloc(sizeof(admin); strcpy(ad-id, id); strcpy(ad-pwd, passwd); while(icountid, input_id)=0 & strcmp(ad-pwd, input_passwd)=0) printf(admin login successfully!n); printf(Press any key to admin_menu!n); getchar(); admin_menu(); admin_choice(pb); return 1; else printf(输入错误.n); icount+; if(icount = 3) printf(输入错误,超过三次!n); return 0; int open_account(bank *pb) char pwd_again20; char ch; int i; int flag1; int flag2=0; printf(开始添加:(y/n); ch=getchar(); while(ch!=n) account *pa = (account*)malloc(sizeof(account); printf(输入帐户:); scanf(%s,pa-name); getchar(); while(flag2 = 0) printf(输入id:); scanf(%s,pa-id); getchar(); for(i=0;icounter;i+) if(strcmp(pa-id, pb-_arrayi.id)=0) printf(该帐户已存在,请重新输入!n); flag1 = 0; break; else flag1 =1; if(flag1 = 0) flag2 = 0; else flag2 = 1; printf(输入passwd:); scanf(%s,pa-passwd); getchar(); printf(再次输入passwd:); scanf(%s,pwd_again); getchar(); while(strcmp(pa-passwd, pwd_again) != 0) printf(密码不一样,请再次输入密码。n); printf(输入passwd:); scanf(%s,pa-passwd); getchar(); printf(再次输入passwd:); scanf(%s,pwd_again); getchar(); printf(输入balance:); scanf(%f,&pa-balance); getchar(); bank_add_account(pb, pa); free(pa); getchar(); printf(是否继续添加:(y/n); ch=getchar(); return 1;int remove_account(bank*pb) char delid20; int iresult; printf(请输入删除帐户ID:); scanf(%s,delid); getchar(); iresult = bank_delete_account(pb, delid); if(iresult = 1) printf(delete account :%s successfully!n,delid); return 1; else printf(delete failure!n); return 0; void query_admin(bank*pb) bank_query(pb);/file.h文件#ifndef _FILE_H_#define _FILE_H_#include bank.hvoid file_save(bank *pb,char *filename);void file_read(bank *pb,char *filename);#endif/file.c文件#include common.h#include file.hvoid file_save(bank *pb,char *filename) FILE *fp; fp = fopen(filename,wb); fwrite(&pb-counter,sizeof(int),1,fp); fwrite(pb-_array,sizeof(account),pb-counter,fp); fclose(fp);void file_read(bank *pb,char *filename) FILE *fp; if(fp = fopen(filename,r) = NULL) return; fread(&pb-counter,sizeof(int),1,fp); fread(pb-_array,sizeof(account),pb-counter,fp); fclose(fp);/print.h文件#ifndef _PRINTF_H_#define _PRINTF_H_void begin_menu();void main_menu();void admin_menu();void user_menu();void last_menu();#endif/print.c文件#include common.h#include print.hvoid begin_menu() printf(ttt*n); printf(ttt Welcome To System ATM n); printf(ttt*n); printf(ttt* * * * *n); printf(ttt* * * * * * * *n); printf(ttt* * * * * * * *n); printf(ttt* * * * * * * *n); printf(ttt* * * * * * *n); printf(ttt* * * * * * * *n); printf(ttt* * * * * * *n); printf(ttt*n);void main_menu() system(cls); printf(ttt*n); printf(ttt* 欢迎来到ATM的世界 *n); printf(ttt* 1.进入管理员系统 *n); printf(ttt* 2.进入用户系统 *n); printf(ttt* 0.退出系统 *n); printf(ttt*n); printf(输入命令选项(0-2):);void admin_menu() system(cls); printf(ttt*n); printf(ttt* 欢迎进入管理员系统 *n); printf(ttt* 1.开创用户 *n); printf(ttt* 2.删除用户 *n); printf(ttt* 3.查询用户信息 *n); printf(ttt* 0.返回主菜单 *n); printf(ttt*n);void user_menu() system(cls); printf(ttt*n); printf(ttt* 欢迎进入用户系统 *n); printf(ttt* 1.取 款 *n); printf(ttt* 2.存 款 *n); printf(ttt* 3.转 帐 *n); printf(ttt* 4.查 询 *n); printf(ttt* 5.修改密码 *n); printf(ttt* 0.返回主菜单 *n); printf(ttt*n);void last_menu() system(cls); printf(ttt*n); printf(ttt* * * * * * * * * *n); printf(ttt* * * * * * * * * * *n); printf(ttt* * * * * * * * * *n); printf(ttt* * * * * * * * *n); printf(ttt* * * * * * * * * * *n); printf(ttt* * * * * * * * * * *n); printf(ttt*n); printf(ttt*n); printf(ttt* * * * * * *n); printf(ttt* * * * * * *n); printf(ttt* * * * *

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论