这个代码怎么运行不出来C语言能不能帮完善一下

这个代码怎么运行不出来C语言能不能帮完善一下,第1张

请看以下修改后的代码:

#include <stdioh>

#include <stdlibh>

int main() {

int a, b, c, d, i, q = 4000, r;

printf("-------------------\n");

printf(" 欢迎使用ATM机 \n");

printf("-------------------\n");

printf("请输入您的密码\n");

scanf("%d", &a);

for (b = 0; b < 3; b++) {

if (a == 123) {

printf("请选择您的 *** 作\n");

printf("1查询 ");

printf("2取款\n");

printf("3存款 ");

printf("4转账\n");

printf("5无用选项\n");

break;

} else {

if (b != 2) {

printf("密码错误,请重新输入\n");

scanf("%d", &a);

} else {

printf("密码错误,已达到最大尝试次数\n");

return 0;

}

}

}

scanf("%d", &c);

switch (c) {

case 1:

printf("A您的余额为%d\n", q);

break;

case 2:

printf("取款\n");

printf("请输入取款金额\n");

scanf("%d", &r);

if (r < q) {

printf("取款成功\n");

q = q - r;

} else {

printf("余额不足\n");

}

break;

// 在此处添加其他情况

}

return 0;

}

代码的修改点包括:

将for(b=0;b<3;b++);循环中的分号去掉,因为它会导致循环内部的代码没有执行。

在密码错误时,增加重新输入的逻辑,并在尝试次数达到上限时结束程序。

修改scanf("%d",c);为scanf("%d",&c);,因为scanf函数需要传递变量的指针。

修复了case 1:中的printf("您的余额为%q\n",q);语句,将%q改为了%d,因为q是一个整数。

删除了多余的大括号,以简化代码结构。

修改了case 2:中的scanf("%d\n",&r);为scanf("%d",&r);,删除了多余的换行符。

// ATMcpp : Defines the entry point for the console application

#include "stdafxh"

#include <stdioh>

#include <stringh>

//#include <iostreamh>

#include <stdlibh>

#include <iostreamh>//using namespace std;

#include <windowsh>

int state=0;

#define URL "c:\\1txt"

struct account //结构体定义

{

char name[256];

int cardnum;

int password;

long int money;

// enum type={0,1,2};

char lastlog[512];

};

struct account atm;//全局变量

long offset=0;

int initmenu();

int logo();

int add_money();

int search();

int withdraw();

struct account new_account();

void main() //主函数

{

memset(&atm,0,sizeof(atm));

initmenu();

}

int initmenu()

{

int menu_Num;

while(1)

{ system("cls");

cout<<"\t\t\t\t自助银行系统\n";

cout<<"\t\t############################################\n";

cout<<"\t\t#\t\t 1登录\t\t #\n";

cout<<"\t\t#\t\t 2查询\t\t #\n";

cout<<"\t\t#\t\t 3取现\t\t #\n";

cout<<"\t\t#\t\t 4存款\t\t #\n";

cout<<"\t\t#\t\t 5开户\t\t #\n";

cout<<"\t\t#\t\t 0退出\t\t #\n";

cout<<"\t\t############################################\n";

cout<<"请选择 *** 作编号:";

cin>>menu_Num;

switch (menu_Num)

{

case 1:

logo();

break;

case 2:

if(state)

search();

else

{

printf("请先登录!");

Sleep(2000);

printf("\b\b\b\b ");

}

break;

case 3:

if(state)

withdraw();

else

{

printf("请先登录!");

Sleep(2000);

printf("\b\b\b\b ");

}

break;

case 4:

if(state)

add_money();

else

{

printf("请先登录!");

Sleep(2000);

printf("\b\b\b\b ");

}

break;

case 5:

new_account();

initmenu();

break;

case 0:

printf("请取回您的磁卡\n");

Sleep(2000);

state=0;

memset(&atm,0,sizeof(atm));

break;

default:

cout<<"输入有误!请重新输入!\n";

}

}

}

int logo()//登录

{

int a,b;

FILE fp;

system("cls");

printf("请输入卡号:");

scanf("%d",&a);

printf("\n");

printf("请输入密码:");

scanf("%d",&b);

printf("\n");

// printf("按ESC返回主菜单\n");

if(NULL==(fp=fopen(URL,"r")))

{

printf("数据库连接失败\n");

Sleep(2000);

initmenu();

}

else

{

while(fread(&atm,sizeof(atm),1,fp)!=NULL)

{

offset=ftell(fp);

if((atmcardnum==a)&&(atmpassword==b))

{

printf("登录成功\n");

Sleep(2000);

system("cls");

state=1;

break;//跳出此重循环,continue跳出本次循环

}

}

}

if(state==0)

{

printf("%s\n","帐户或密码错误");

Sleep(2000);

initmenu();

return 0;

}

else

{

return 1;

}

}

int search() //显示帐户余额等信息

{

cout<<"姓名:"<<atmname<<"\n";

cout<<"卡号:"<<atmcardnum<<"\b\b\b\b\n";

cout<<"余额:"<<atmmoney<<"\n";

cout<<"上次登录时间:"<<atmlastlog<<"\n";

return 1;

}

int withdraw()//取钱

{

long int num=0;

FILE fp;

printf("%s:","请输入取款金额");

scanf("%d",&num);

if(atmmoney>=num)

{

atmmoney-=num;

if(NULL==(fp=fopen(URL,"w+")))

{

printf("数据库错误\n");

Sleep(2000);

return 0;

}

else

{

fseek(fp,offset,SEEK_SET);

if((fwrite(&atm,sizeof(atm),1,fp))==NULL)

{

printf("取款失败");

Sleep(2000);

return 0;

}

//吐钱

fclose(fp);

printf("请在30s内取走钞票\n");

Sleep(2000);

}

}

else

{

return 0;

}

return 1;

}

int add_money()//存钱

{

long int num=0;

FILE fp;

if(state)

{

printf("请输入存款金额;");

scanf("%d",&num);

printf("请将钞票放入存钞口\n");

Sleep(4000);

// 验钞成功

atmmoney+=num;

if(NULL==(fp=fopen(URL,"w+")))

{

printf("数据库错误\n");

Sleep(2000);

return 0;

}

else

{

fseek(fp,offset,SEEK_SET);

if((fwrite(&atm,sizeof(atm),1,fp))==NULL)

{

//退还钞票

printf("存钱失败");

Sleep(2000);

return 0;

}

fclose(fp);

printf("存款成功\n");

Sleep(2000);

}

}

else

{

return 0;

}

return 1;

}

struct account new_account() //增加帐户,放入数据库

{

FILE fp;

//缺数据合法性验证

printf("\n请输入姓名:");

scanf("%s",atmname);

printf("\n请输入卡号:");

scanf("%d",&atmcardnum);

printf("\n请输入密码:");

scanf("%d",&atmpassword);

atmmoney=0;

if(NULL==(fp=fopen(URL,"a+")))

{

printf("数据库连接失败\n");

Sleep(2000);

return 0;

}

else

{

if((fwrite(&atm,sizeof(atm),1,fp))==NULL)

{

printf("帐户创建失败");

return 0;

}

}

fclose(fp);

return &atm;

}

细节方面自己去调,如把菜单放在右上角之类的

1、把yhk插入到c语言取款机里面,要将yhk的磁条向下、有磁条的一边向右插入c语言取款机。

2、输入卡密码输入之后有的可以直接进入取款画面,有的还需要按确认键。

3、之后你在屏幕上可以看到"查询""取款""转账""退卡"等选择相对应的按键,就是屏幕两边的8个键,不要着急,看清了再按选项旁边对应的键,取款就按下"取款"。

4、按下"取款"之后要输入取款的金额就可以了。

5、眼睛一定要盯着"出钞口",出钞后的2-5秒如果无人取钞,ATM会把吐钞吞回的。取款时一定清点,发现有可疑的纸币就把纸币冠字编号对准ATM的摄像头多停留几秒,取款完成后按屏幕上提示的"退卡"退出卡片。

#include <stdioh>

int main (void)

{

int i,g,q=10000,qq=0,z;

char mm[6];

const char MM[6]="123456";

printf ("\n\t请输入密码以登入账户:");

while(1)

{

for(i=0;i<6;i++) 

{

mm[i]=getch();

if (mm[i]!='\b')

{

putchar ('');

}

else

{

printf ("\b \b");

i--;

i--;

}

if (mm[i]=='\r')

{

printf ("\b \b");

break;

}

}

if (strcmp(mm,MM)==0) 

{

printf ("\n\t密码正确!登入银行账户!\n");

printf ("\t[1]查询余额\t[2]取钱\n\t选项:");

scanf ("%d",&g);

switch (g)

{

case 1:printf ("\t你的余额剩余%d元\n",q-qq);break;

case 2:printf ("\请输入提取金额:");scanf ("%d",&qq);printf ("\t提取现金%d元\n",qq);break;

default:printf ("\t选项错误!\n");break;

}

break;

}

else

{

printf ("\n密码错误!\n");

printf ("请重新输入密码:");

}

}

本来是想来个简单的结果看到楼下说要登入这些功能。。。

这是简单的

#include <stdioh>

int main (void)

{

double a=10000;

int i;

printf ("请输入你要提取的金额:");

scanf ("%d",&i);

printf ("您的账户余额:%g元",a-i);

    return 0;

}

再来个稍难得吧。。。

#include <stdioh>

int main (void)

{

char mm[6];

double a=10000;

int i=0,g;

printf ("[1]取款[2]查询余额:");

scanf ("%d",&g);

switch (g)

{

case 1:printf ("请输入提取金额:");scanf ("%d",&i);printf ("账户余额%g",a-i);break;

    case 2:printf ("账户余额%g",a-i);break;

    default:printf ("选项错误!\n");break

}

    return 0;

}

从编译器复制下来的代码中文都要乱码。。。

C语言程序:

#include <stdioh>

void showMenu()

{

printf("请选择 *** 作类型:\n");

printf("  1--存钱\n");

printf("  2--取钱\n");

printf("  3--转账\n");

printf("  0--结束\n");

printf("--------------------------\n");

}

void main()

{

  int account1 = 1000; //1号账户余额

int account2 = 1000; //2号账户余额

int choice; // *** 作选择

int num; // *** 作金额

int id; //账户编号

int id1;

do

{

showMenu();

scanf("%d", &choice);

switch(choice)

{

case 1: //存钱

{

printf("账户(1 | 2):");

scanf("%d", &id);

if(id != 1 && id != 2)

{

printf("账户不存在!\n");

break;

}

printf("金额:");

scanf("%d", &num);

if(num <= 0)

{

printf("存入金额必须大于0!");

break;

}

if(id == 1)

{

account1 += num;

printf("1号账户余额:%d\n", account1);

}

else

{

account2 += num;

printf("2号账户余额:%d\n", account2);

}

break;

}

case 2: //取钱

{

printf("账户(1 | 2):");

scanf("%d", &id);

if(id != 1 && id != 2)

{

printf("账户不存在!\n");

break;

}

printf("金额:");

scanf("%d", &num);

if(num <= 0)

{

printf("取款金额必须大于0!\n");

break;

}

if((id == 1 && num > account1) || (id == 2 && num > account2))

{

printf("当前账户余额不足!");

break;

}

if(id == 1)

{

account1 -= num;

printf("1号账户余额:%d\n", account1);

}

else

{

account2 -= num;

printf("2号账户余额:%d\n", account2);

}

break;

}

case 3:

{

printf("转出账户(1 | 2):");

scanf("%d", &id);

if(id != 1 && id != 2)

{

printf("账户不存在!\n");

break;

}

printf("转入账户(1 | 2):");

scanf("%d", &id1);

if(id1 != 1 && id1 != 2)

{

printf("账户不存在!\n");

break;

}

printf("金额:");

scanf("%d", &num);

if(num <= 0)

{

printf("转账金额必须大于0!\n");

break;

}

if((id == 1 && num > account1) || (id == 2 && num > account2))

{

printf("转出账户余额不够!");

break;

}

if(id == 1)

{

account1 -= num;

account2 += num;

printf("1号账户成功转出 %d 元到2号账户\n", num);

printf("1号账户余额:%d\n", account1);

}

else

{

account2 -= num;

account1 += num;

printf("2号账户成功转出 %d 元到1号账户\n", num);

printf("2号账户余额:%d\n", account2);

}

break;

}

default:

{

break;

}

}

} while(choice != 0);

}

运行测试:

按照题目要求编写的C语言程序如下

#include<stdioh>

#include<mathh>

int main()

{

double x;

scanf("%lf",&x);

printf("%f",sqrt(x));

return 0;

}

以上就是关于这个代码怎么运行不出来C语言能不能帮完善一下全部的内容,包括:这个代码怎么运行不出来C语言能不能帮完善一下、C语言 小小的projiect ~~ 小小的ATM、c语言取款机怎样手动输入金额等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10216442.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存