C语言实训总结2.docx
- 文档编号:20128167
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:25
- 大小:84.60KB
C语言实训总结2.docx
《C语言实训总结2.docx》由会员分享,可在线阅读,更多相关《C语言实训总结2.docx(25页珍藏版)》请在冰豆网上搜索。
C语言实训总结2
聊城大学
《C语言实训》
题目ATM银行管理模拟系统
指导教师:
王春哲
姓名:
匿名
学号:
班级:
专业:
电子信息科学与技术
地点:
时间:
2012-7-9至2012-7-19
一、项目名称
基于控制台的银行存储系统模拟项目
二、功能要求
模拟ATM银行存储系统,设立管理端和客户端。
在管理端中,实现开户、查询帐户、修改密码、设置利率、结息和销户的操作。
在客户端中。
实现存款、取款、查询账户、转帐和修改密码的操作。
三、需求分析
在模拟ATM银行存储系统中,要实现多个账户要运用结构体,更加方便的操作各个用户,使整个程序更加快捷。
要进行各个操作时,运用函数操作方便,整个程序更加合理化。
在客户和管理员查询时,运用指针操作,方便查询。
在整个程序中要对客户和管理员的操作进行保留,所以要进行文件的读写操作,这样文件才能保存
四、设计思想
模块划分
图1
图二
图三
五、具体实现
主函数
intmain()
{
charchoice;//用于选择
printf("\t\t欢迎进入ATM机银行仿真模拟系统\n");
while
(1)
{
printf("\t\t\t请输入要进入的角色\n");
printf("\t\t*******************\n");
printf("\t\t\t1.客户端\n");
printf("\t\t\t2.管理端\n");
printf("\t\t\t3.退出程序\n");
printf("\t\t*******************\n");
printf("\n");
printf("\t请选择:
");
choice=getch();
switch(choice)
{
case'1':
user();
break;
case'2':
admin();
break;
case'3':
return0;
break;
default:
printf("非法选择,请重新选择\n");
}
}
}
结构体
typedefstruct
{
charname[40];//用户名
charmima[20];//用户密码
charhaoma[40];//用户号码
chartel[40];//账户电话
doublemoney;//存入金额
}Atmuser;
typedefstruct
{
charname1[40];//用户名
charmima1[3];//用户密码
}Atmadmin;
客户端
intkaihumima()
{
charmima[20];
if(strcmp(atm1[current].mima,mima)!
=0)
{
printf("两次输入密码不相同,请重新输入\n");
return0;
}
}
intload1()
{
FILE*fs1;
intcount;
intsucc;
fs1=fopen("AtmuserData.dat","rb");
if(fs1==NULL)
{
printf("不能打开文件\n");
return1;
}
//判断文件是否有数据
succ=fseek(fs1,0,SEEK_END);
if(succ!
=0)
{
printf("文件操作失败\n");
fclose(fs1);
return1;
}
//文件数据大小
count=ftell(fs1);
fseek(fs1,0,SEEK_SET);
total=current=count/sizeof(Atmuser);
if(atm1==NULL)
{
atm1=(Atmuser*)malloc(total*sizeof(Atmuser));
}
if(atm1==NULL)
return1;
//count成功读取几个学生
count=fread(atm1,sizeof(Atmuser),current,fs1);
fclose(fs1);
if(count!
=current)
{
printf("读取文件失败\n");
return1;
}
printf("读取文件成功\n");
return0;
}
intsave1()
{
intcount;
FILE*fs1;
fs1=fopen("AtmuserData.dat","wb");
if(fs1==NULL)
return1;
count=fwrite(atm1,sizeof(Atmuser),current,fs1);
fclose(fs1);
if(count!
=current)
{
printf("保存失败\n");
return1;
}
//printf("保存文件成功\n");
return0;
}
intqukuan()
{
doublemoneyqu;
printf("当前金额:
%lf\n",atm1[q].money);
printf("温馨提示,您输入的金额必须是100的倍数,切一次不能输入大于两千元\n");
printf("请输入:
");
scanf("%lf",&moneyqu);
printf("正在处理请稍后......");
printf("剩余金额数:
%lf",atm1[q].money-moneyqu);
atm1[q].money=atm1[q].money-moneyqu;//取款减少金额
save1();
return0;
}
intcunkuan()
{
charqq,aa;
doublemoneycun;
printf("当前金额:
%lf\n",atm1[q].money);
qq=atm1[q].money;
printf("温馨提示,您输入的金额必须是100的倍数,切一次不能输入大于两千元\n");
printf("请输入:
");
scanf("%lf",&moneycun);
printf("正在处理请稍后......");
printf("剩余金额数:
%lf",atm1[q].money+moneycun);
atm1[q].money=atm1[q].money+moneycun;//存款增加金额
printf("%lf",atm1[q].money);
save1();
return0;
}
intchaxunzhanghu1()
{
printf("账户号码:
%s\n",atm1[q].name);
printf("密码:
%s\n",atm1[q].mima);
printf("姓名:
%s\n",atm1[q].haoma);
printf("电话号码:
%s\n",atm1[q].tel);
printf("金额:
%lf\n",atm1[q].money);
return0;
}
intzhuanzhang()
{
charhaoma[40];
doublemoneyqu;
inti;
printf("剩余金额数:
%lf",atm1[q].money);
printf("请输入要转入的账号");
scanf("%s",haoma);
for(i=0;i { if(strcmp(atm1[i].name,haoma)==0) { zhuanhao=i; printf("请输入要转入的金额"); scanf("%lf",&moneyqu); printf("剩余金额数: %lf",atm1[q].money+moneyqu); atm1[zhuanhao].money=(atm1[zhuanhao].money+moneyqu);//转入账户增加金额 atm1[q].money=atm1[q].money+moneyqu;//转账用户减少金额 printf("转账成功,请注意查收"); save1(); return0; } } printf("用户不存在请重新输入"); } intxiugai() { charmima[20]; charmima2[20]; printf("请输入密码"); scanf("%s",mima); while (1) { if(strcmp(atm1[q].mima,mima)! =0) { printf("密码不正确,请重新输入"); return0; } if(strcmp(atm1[q].mima,mima)==0) break; } while (1) { printf("输入新密码: "); scanf("%s",atm1[q].mima); printf("请重新输入密码: "); scanf("%s",mima); if(strcmp(atm1[q].mima,mima)==0) save1(); break; kaihumima(); } printf("修改成功"); return0; } intuser() { charname[40]; charmima[20]; charchoice2; inti; charr=1; while(r) { printf("请输入用户名: "); scanf("%s",name); printf("请输入密码: "); scanf("%s",mima); for(i=0;i { if(strcmp(atm1[i].name,name)==0)//验证是否存在用户 { if(strcmp(atm1[i].mima,mima)! =0)//验证该用户的密码 { printf("密码不正确,请重新输入"); } if(strcmp(atm1[i].mima,mima)==0) { q=i; r=0; break; } } } if(strcmp(atm1[i].name,name)! =0) printf("该用户不存在"); } while (1) { printf("\t\t\t用户端功能主菜单\n"); printf("\t\t*******************\n"); printf("\t\t\t1.取款\n"); printf("\t\t\t2.存款\n"); printf("\t\t\t3.查询账户\n"); printf("\t\t\t4.转账\n"); printf("\t\t\t5.修改密码\n"); printf("\t\t\t0.返回上一级\n"); printf("\t\t*******************\n"); printf("\t请选择: "); choice2=getch(); printf("\n\n"); switch(choice2) { case'1': qukuan();//取款 break; case'2': cunkuan();//存款 break; case'3': chaxunzhanghu1();//查询账户 break; case'4': zhuanzhang();//转账 break; case'5': xiugai();//修改密码 break; case'0': return0; break; default: printf("非法选择,请重新选择\n"); } } return0; } 管理端 intsave() { intcount; FILE*fs; fs=fopen("AtmadminData.dat","wb");//打开文件 if(fs==NULL) return1; count=fwrite(atm,sizeof(Atmadmin),current,fs);//读取文件数据 fclose(fs); if(count! =current) { printf("保存失败\n"); return1; } return0; } intload() { FILE*fs; intcount; intsucc; fs=fopen("AtmadminData.dat","rb"); if(fs==NULL) { printf("不能打开文件\n"); return1; } succ=fseek(fs,0,SEEK_END);//判断文件是否有数据 if(succ! =0) { printf("文件操作失败\n"); fclose(fs); return1; } count=ftell(fs);//文件数据大小 fseek(fs,0,SEEK_SET); total=current=count/sizeof(Atmadmin); if(atm==NULL) { atm=(Atmadmin*)malloc(total*sizeof(Atmadmin)); } if(atm==NULL) return1; //count成功读取几个学生 count=fread(atm,sizeof(Atmadmin),current,fs); fclose(fs); if(count! =current) { printf("读取文件失败\n"); return1; } printf("读取文件成功\n"); return0; } intkaihu() { charmima[20]; if(atm1==NULL) { atm1=(Atmuser*)malloc(total*sizeof(Atmuser)); } if(atm1==NULL) return1; printf("输入账户号码: "); scanf("%s",atm1[current].name); while (1)//设置密码 { printf("输入密码: "); scanf("%s",atm1[current].mima); printf("请重新输入密码: "); scanf("%s",mima); if(strcmp(atm1[current].mima,mima)==0) break; kaihumima(); } printf("输入账户姓名: "); scanf("%s",atm1[current].haoma); printf("输入电话号码: "); scanf("%s",atm1[current].tel); printf("请输入要存入的金额: "); scanf("%lf",&atm1[current].money); printf("\n账户建立成功账户信息: "); printf("账户号码: %s\n",atm1[current].name); printf("密码: %s\n",atm1[current].mima); printf("姓名: %s\n",atm1[current].haoma); printf("电话号码: %s\n",atm1[current].tel); printf("存入的金额: %lf\n",atm1[current].money); save(); current++; return0; } intchaxunzhanghu() { charname1[40]; inti; printf("请输入要查询的账户号码: "); scanf("%s",name1); printf("正在处理中,请稍后.......\n"); for(i=0;i { if(strcmp(atm1[i].name,name1)==0)//查找账户 { printf("账户号码: %s\n",atm1[i].name); printf("密码: %s\n",atm1[i].mima); printf("姓名: %s\n",atm1[i].haoma); printf("电话号码: %s\n",atm1[i].tel); printf("存入的金额: %lf\n",atm1[i].money); printf("存入信息成功\n请选择其它操作\n"); save(); return0; } } printf("用户不存在请重新输入"); } intxiugaimima() { charmima[20]; charmima2[20]; printf("请输入密码"); scanf("%s",mima); while (1) { if(strcmp("00",mima)! =0)//验证原密码 { printf("密码不正确,请重新输入"); return0; } if(strcmp("00",mima)==0) break; } while (1) { printf("输入新密码: "); scanf("%s",mima2); printf("请重新输入密码: "); scanf("%s",mima); if(strcmp(mima2,mima)==0) break; kaihumima(); } return0; } intshezhililv() { charlilv[40]; printf("当前的利率为0.025"); printf("请输入新利率为"); scanf("%s",lilv); printf("正在处理中,请稍后.......\n"); save(); printf("利率修改成功请执行其他操作\n"); return0; } intxiaohu() { charhaoma[40]; inti; printf("请输入要注销的卡号"); scanf("%s",haoma); for(i=0;i { if(strcmp(atm1[i].name,haoma)==0)//寻找输入的账户 { if(i<(current-1)) memmove(&atm1[i],&atm1[i+1],(current-1-i)*sizeof(Atmuser)); current--; printf("正在处理中,请稍后.......\n"); printf("操作成功! "); save(); return0; } } printf("正在处理中,请稍后.......\n"); printf("该账户不存在! "); return1; } intadmin() { charchoice3; charmima1[20]; if(atm==NULL)//初始时设置密码 { atm=(Atmadmin*)malloc(total*sizeof(Atmadmin)); printf("请设置"); scanf("%s",atm[3].mima1); save(); } while (1)//验证密码 { printf("请输入密码: "); scanf("%s",mima1); if(strcmp("0",mima1)! =0) { printf("密码不正确,请重新输入"); } if(strcmp("0",mima1)==0) break; } while (1) { printf("\t\t\t管理端功能主菜单\n"); printf("\t\t*******************\n"); printf("\t\t\t1.开户\n"); printf("\t\t\t2.查询账户\n"); printf("\t\t\t3.修改密码\n"); printf("\t\t\t4.设置利率\n"); printf("\t\t\t5.结息\n"); printf("\t\t\t6.销户\n"); printf("\t\t\t0.返回上一级\n"); printf("\t\t*******************\n"); printf("\t请选择: "); choice3=getch(); printf("\n\n"); switch(choice3) { case'1': kaihu();//开户 break; case'2': chaxunzhanghu();//查询账户 break; case'3': xiugaimima();//修改密码 break; case'4': shezhililv();//设置利率 break; case'5': //jiexi();//结息 break; case'6': xiaohu();//销户 break; case'0': return0; break; default: printf("非法选择,请重新选择\n"); } } return0; } 六、附录 函数功能 intuser();//用户端 intadmin();//管理端 in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 总结