自动存包柜 C语言程序
C语言 ATM 程序设计
C语言 ATM 程序设计概述:本文将详细介绍如何使用C语言设计一个简单的ATM(自动取款机)程序。
ATM程序的主要功能包括用户登录、查询余额、取款、存款和退出等。
1. 用户登录:用户需要输入正确的账户号码和密码才干成功登录。
账户号码和密码可以存储在一个预定义的用户数据库中。
用户输入账户号码和密码后,程序将验证其有效性并赋予相应的登录状态。
2. 查询余额:用户成功登录后,可以选择查询余额。
程序将从用户数据库中获取用户的余额信息并显示在屏幕上。
3. 取款:用户成功登录后,可以选择取款。
用户需要输入取款金额,程序将验证用户账户余额是否足够。
如果余额足够,则扣除相应金额并更新用户数据库中的余额信息;如果余额不足,则提示用户余额不足。
4. 存款:用户成功登录后,可以选择存款。
用户需要输入存款金额,程序将将其加到用户账户的余额中,并更新用户数据库中的余额信息。
5. 退出:用户可以选择退出程序。
退出前,程序将提示用户是否确认退出,并根据用户的选择执行相应的操作。
6. 错误处理:程序需要对用户的输入进行错误处理。
例如,当用户输入错误的账户号码或者密码时,程序应该赋予相应的错误提示;当用户输入非法金额时,程序应该赋予相应的错误提示。
7. 数据存储:程序需要使用文件或者数据库来存储用户的账户信息和余额信息。
可以使用文本文件、二进制文件或者关系型数据库等。
8. 用户界面:程序需要提供一个友好的用户界面,以便用户能够轻松地进行操作。
可以使用控制台界面或者图形界面,根据需要选择合适的界面设计。
9. 安全性:程序需要确保用户的账户信息和余额信息的安全性。
可以使用加密算法来加密用户的密码,在存储和传输过程中保护用户的隐私。
10. 测试和调试:在完成程序的编写后,需要进行充分的测试和调试,以确保程序的稳定性和正确性。
可以编写测试用例,并对程序进行单元测试和集成测试。
总结:本文详细介绍了使用C语言设计一个简单的ATM程序的要求和功能。
超市储物柜模拟系统C程序
/*----------------------------------------------------------------|| 名称:超市储物柜模拟系统| | 学校:广西交通职业技术学院| | 系:信息工程系| | 专业:电子信息工程技术| | 设计者:杨旭涛| | QQ:237155875 | | * 仅供研究,不得用于商业用途!* | |----------------------------------------------------------------*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code LCD_Display_Common_i[16]={"Welcome To Use! "};uchar code LCD_Display_Common_j[16]={"Design By Mr.Tom"};uchar code LCD_Display_Full_i[16]= {" All Full! "};uchar code LCD_Display_Full_j[16]= {" Plese Wait! "};uchar code LCD_Display_GetPassw_i[16]= {"Your Password: "};uchar code LCD_Display_Box1Password_i[16]= {"Box1 Password: "};uchar code LCD_Display_Box2Password_i[16]= {"Box2 Password: "};uchar code LCD_Display_Box3Password_i[16]= {"Box3 Password: "};uchar code LCD_Display_Box4Password_i[16]= {"Box4 Password: "};uchar LCD_Display_i[16];uchar LCD_Display_j[16];sbit a=P2^0; //定义3x4键盘端口,发送a,b,c,d,扫描x,y,zsbit b=P2^1; //sbit c=P2^2; //sbit d=P2^3; //sbit x=P2^4; //sbit y=P2^5; //sbit z=P2^6; //sbit Box1=P3^0; //define Box(x) Port 定义箱子继电器端口sbit Box2=P3^1;sbit Box3=P3^2;sbit Box4=P3^3;sbit Key_Box1=P1^4; //定义箱子的取物按键端口sbit Key_Box2=P1^5; //sbit Key_Box3=P1^6; //sbit Key_Box4=P1^7; //sbit Cus_In=P3^7; //进超市人数+sbit Cus_Out=P3^6; //出超市人数-sbit Bee=P3^4; //蜂鸣器输出端口sbit Shock=P3^5; //震动输入端口sbit LCD_E=P1^0; //define 1602 Esbit LCD_RW=P1^1; //define 1602 RWsbit LCD_RS=P1^2; //define 1602 RSuchar temp_a,temp_b,temp_c,temp_d,temp_e,temp_f; //输入密码暂存变量uchar Num,Interface,Customer; //定义各种标志位uchar Passw_Box1_a,Passw_Box1_b,Passw_Box1_c,Passw_Box1_d,Passw_Box1_e,Passw_Box1_f;//各箱子的密码移位暂存位uchar Passw_Box2_a,Passw_Box2_b,Passw_Box2_c,Passw_Box2_d,Passw_Box2_e,Passw_Box2_f;//uchar Passw_Box3_a,Passw_Box3_b,Passw_Box3_c,Passw_Box3_d,Passw_Box3_e,Passw_Box3_f;//uchar Passw_Box4_a,Passw_Box4_b,Passw_Box4_c,Passw_Box4_d,Passw_Box4_e,Passw_Box4_f;//uchar Show_P_a,Show_P_b,Show_P_c,Show_P_d,Show_P_e,Show_P_f;/*----------------------------------------------------------------|| 延时子函数||----------------------------------------------------------------*/void delay(uint t){while(t--);}/*----------------------------------------------------------------|| 定时器初始化子函数||----------------------------------------------------------------*/void Timer0_Init(){TMOD=0x01; //方式选择TH0=(65535-100)/256; //TL0=(65535-100)%256; //初值设定ET0=1;//开定时器T0的中断EA =1;//开总中断TR0=1;//启动T0}/*----------------------------------------------------------------|| LCD子函数||----------------------------------------------------------------*/void Write_Bit_Com(uchar com) //*********写命令*********//{LCD_E=0; //关闭使能端LCD_RW=0; //写命令LCD_RS=0; //表示选择命令P0=com; //将命令赋给P0口delay(10); //等待命令赋完LCD_E=1; //给以上升沿开始写命令delay(10); //等待命令写完LCD_E=0; //关闭使能端}void Write_Bit_Date(uchar date) //*********写数据********//{LCD_E=0; //关闭使能端LCD_RW=0; //写数据LCD_RS=1; //表示选择数据P0=date; //将数据赋给P0口delay(10); //等待数据赋完LCD_E=1; //给以上升沿开始写命令delay(10); //等待数据写完LCD_E=0; //关闭使能端}void Init_LCD() //********初始化液晶*******//{LCD_E=0; //关闭使能Write_Bit_Com(0x38); //设置显示模式Write_Bit_Com(0x0c); //开显示,示显示光标,光标不闪烁(不显示不闪烁为0x0d)Write_Bit_Com(0x06); //设置显示移动自加1Write_Bit_Com(0x01); //清屏}void Display_Common() //常态显示,欢迎语,进出人数计数{uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_Common_i[i]);delay(100);}LCD_Display_j[0]=0x30+Customer/10;LCD_Display_j[1]=0x30+Customer%10;LCD_Display_j[2]=' ';LCD_Display_j[3]=' ';LCD_Display_j[4]=' ';LCD_Display_j[5]=' ';LCD_Display_j[6]=' ';LCD_Display_j[7]=' ';LCD_Display_j[8]=' ';LCD_Display_j[9]=' ';LCD_Display_j[10]=' ';LCD_Display_j[11]=' ';LCD_Display_j[12]=' ';LCD_Display_j[13]=' ';LCD_Display_j[14]=' ';LCD_Display_j[15]=' ';Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_j[j]);delay(100);}}void Display_Input_Box1() //box 1 password input 箱子一密码输入界面{uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_Box1Password_i[i]);delay(100);}LCD_Display_i[0]=' ';LCD_Display_i[1]=' ';LCD_Display_i[2]=' ';LCD_Display_i[3]=' ';LCD_Display_i[4]=' ';LCD_Display_i[5]=0x30+temp_f;LCD_Display_i[6]=0x30+temp_e;LCD_Display_i[7]=0x30+temp_d;LCD_Display_i[8]=0x30+temp_c;LCD_Display_i[9]=0x30+temp_b;LCD_Display_i[10]=0x30+temp_a;LCD_Display_i[11]=' ';LCD_Display_i[12]=' ';LCD_Display_i[13]=' ';LCD_Display_i[14]=' ';LCD_Display_i[15]=' ';Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_i[j]);delay(100);}}void Display_Input_Box2() //box 2 password input 箱子二密码输入界面{uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_Box2Password_i[i]);delay(100);}LCD_Display_i[0]=' ';LCD_Display_i[1]=' ';LCD_Display_i[2]=' ';LCD_Display_i[3]=' ';LCD_Display_i[4]=' ';LCD_Display_i[5]=0x30+temp_f;LCD_Display_i[6]=0x30+temp_e;LCD_Display_i[7]=0x30+temp_d;LCD_Display_i[8]=0x30+temp_c;LCD_Display_i[9]=0x30+temp_b;LCD_Display_i[10]=0x30+temp_a;LCD_Display_i[11]=' ';LCD_Display_i[12]=' ';LCD_Display_i[13]=' ';LCD_Display_i[14]=' ';LCD_Display_i[15]=' ';Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_i[j]);delay(100);}}void Display_Input_Box3() //box 3 password input{uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_Box3Password_i[i]);delay(100);}LCD_Display_i[0]=' ';LCD_Display_i[1]=' ';LCD_Display_i[2]=' ';LCD_Display_i[3]=' ';LCD_Display_i[4]=' ';LCD_Display_i[5]=0x30+temp_f;LCD_Display_i[6]=0x30+temp_e;LCD_Display_i[7]=0x30+temp_d;LCD_Display_i[8]=0x30+temp_c;LCD_Display_i[9]=0x30+temp_b;LCD_Display_i[10]=0x30+temp_a;LCD_Display_i[11]=' ';LCD_Display_i[12]=' ';LCD_Display_i[13]=' ';LCD_Display_i[14]=' ';LCD_Display_i[15]=' ';Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_i[j]);delay(100);}}void Display_Input_Box4() //box 4 password input {uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_Box4Password_i[i]);delay(100);}LCD_Display_i[0]=' ';LCD_Display_i[1]=' ';LCD_Display_i[2]=' ';LCD_Display_i[3]=' ';LCD_Display_i[4]=' ';LCD_Display_i[5]=0x30+temp_f;LCD_Display_i[6]=0x30+temp_e;LCD_Display_i[7]=0x30+temp_d;LCD_Display_i[8]=0x30+temp_c;LCD_Display_i[9]=0x30+temp_b;LCD_Display_i[10]=0x30+temp_a;LCD_Display_i[11]=' ';LCD_Display_i[12]=' ';LCD_Display_i[13]=' ';LCD_Display_i[14]=' ';LCD_Display_i[15]=' ';Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_i[j]);delay(100);}}void Display_GetPassw() //获取密码显示界面{uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_GetPassw_i[i]);delay(100);}LCD_Display_i[0]=' ';LCD_Display_i[1]=' ';LCD_Display_i[2]=' ';LCD_Display_i[3]=' ';LCD_Display_i[4]=' ';LCD_Display_i[5]=0x30+Show_P_f;LCD_Display_i[6]=0x30+Show_P_e;LCD_Display_i[7]=0x30+Show_P_d;LCD_Display_i[8]=0x30+Show_P_c;LCD_Display_i[9]=0x30+Show_P_b;LCD_Display_i[10]=0x30+Show_P_a;LCD_Display_i[11]=' ';LCD_Display_i[12]=' ';LCD_Display_i[13]=' ';LCD_Display_i[14]=' ';LCD_Display_i[15]=' ';Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_i[j]);delay(100);}delay(60000); //密码显示时间,延时6ms*3delay(60000);delay(60000);Interface=0; //返回常态界面}void Display_BoxFull() //满箱显示{uchar i,j;Write_Bit_Com(0x80+0x00);for(i=0;i<16;i++){Write_Bit_Date(LCD_Display_Full_i[i]);delay(100);}Write_Bit_Com(0x80+0x40);for(j=0;j<16;j++){Write_Bit_Date(LCD_Display_Full_j[j]);delay(100);}delay(60000);delay(60000);delay(60000);Interface=0; //返回常态界面}/*----------------------------------------------------------------|| 键盘扫描子函数||----------------------------------------------------------------*/void Key_Scanf() //temp_a的量表示键值,默认为0,键值移位后才改变{a=1,b=1,c=1,d=0;x=1,y=1,z=1;if(z==0){delay(200);if(z==0){while(z==0);{ if(Box1==0){Box1=1;Interface=1;Passw_Box1_a=Num%10;Passw_Box1_b=Num/10%1 0;delay(1);Passw_Box1_c=Num%10;delay(2);Passw_Box1_d=Num/100%10;delay(4);Passw_Box1_ e=Num%10;delay(6);Passw_Box1_f=Num/10%10;Show_P_a=Passw_Box1_a;Show_P_b=Passw_Box1_b;Show_P_c=Passw_Box1_c;Show_P_d=Pass w_Box1_d;Show_P_e=Passw_Box1_e;Show_P_f=Passw_Box1_f;} //若Box1空,则弹出继电器;定时器取值做为密码,显示获取密码界面elseif(Box2==0){Box2=1;Interface=1;Passw_Box2_a=Num%10;Passw_Box2_b=Num/10%10;delay(3);Passw_Box2_c=Num%10;delay(1);Passw_Box2_d=Num/100%10;delay(2);Passw_Box2_e=Num%10 ;delay(5);Passw_Box2_f=Num/10%10;Show_P_a=Passw_Box2_a;Show_P_b=Passw_Box2_b;Show_P_c=Passw_Box2_c;Show_P_d=Pass w_Box2_d;Show_P_e=Passw_Box2_e;Show_P_f=Passw_Box2_f;} //若Box2空,则弹出继电器elseif(Box3==0){Box3=1;Interface=1;Passw_Box3_a=Num%10;Passw_Box3_b=Num/10%10;delay(7);P assw_Box3_c=Num%10;delay(3);Passw_Box3_d=Num/100%10;delay(5);Passw_Box3_e=Num%10 ;delay(2);Passw_Box3_f=Num/10%10;Show_P_a=Passw_Box3_a;Show_P_b=Passw_Box3_b;Show_P_c=Passw_Box3_c;Show_P_d=Pass w_Box3_d;Show_P_e=Passw_Box3_e;Show_P_f=Passw_Box3_f;} //若Box3空,则弹出继电器elseif(Box4==0){Box4=1;Interface=1;Passw_Box4_a=Num%10;Passw_Box4_b=Num/10%10;delay(3);P assw_Box4_c=Num%10;delay(2);Passw_Box4_d=Num/100%10;delay(4);Passw_Box4_e=Num%10 ;delay(5);Passw_Box4_f=Num/10%10;Show_P_a=Passw_Box4_a;Show_P_b=Passw_Box4_b;Show_P_c=Passw_Box4_c;Show_P_d=Pass w_Box4_d;Show_P_e=Passw_Box4_e;Show_P_f=Passw_Box4_f;} //若Box4空,则弹出继电器else {Interface=2;}}}} //否则出现满箱提示!if(x==0){delay(200);if(x==0){while(x==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=7;delay(10);}}}if(y==0){delay(200);if(y==0){while(y==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=3;delay(10);}}}a=1,b=1,c=0,d=1;x=1,y=1,z=1;if(z==0){delay(100);if(z==0){while(z==0);{//if((Interface==3)&(Passw_Box1_a==temp_a)&(Passw_Box1_b==temp_b)&(Passw_Box1_c==temp _c)&(Passw_Box1_d==temp_d)&(Passw_Box1_e==temp_e)&(Passw_Box1_f==temp_f)){Box1=0;I nterface=0;}elseif(Interface==3){if((Passw_Box1_a!=temp_a)|(Passw_Box1_b!=temp_b)|(Passw_Box1_c!=temp_c )|(Passw_Box1_d!=temp_d)|(Passw_Box1_e!=temp_e)|(Passw_Box1_f!=temp_f)){Bee=1;delay(2 0000);delay(20000);Bee=0;delay(20000);delay(20000);Bee=1;delay(50000);delay(50000);Bee=0;I nterface=0;}} //密码正确后,弹箱;否则Bee短响警告if((Interface==4)&(Passw_Box2_a==temp_a)&(Passw_Box2_b==temp_b)&(Passw_Box2_c==temp _c)&(Passw_Box2_d==temp_d)&(Passw_Box2_e==temp_e)&(Passw_Box2_f==temp_f)){Box2=0;I nterface=0;}elseif(Interface==3){if((Passw_Box1_a!=temp_a)|(Passw_Box1_b!=temp_b)|(Passw_Box1_c!=temp_c)|(Passw_Box1_d!=temp_d)|(Passw_Box1_e!=temp_e)|(Passw_Box1_f!=temp_f)){Bee=1;delay(2 0000);delay(20000);Bee=0;delay(20000);delay(20000);Bee=1;delay(50000);delay(50000);Bee=0;I nterface=0;}}if((Interface==5)&(Passw_Box3_a==temp_a)&(Passw_Box3_b==temp_b)&(Passw_Box3_c==temp _c)&(Passw_Box3_d==temp_d)&(Passw_Box3_e==temp_e)&(Passw_Box3_f==temp_f)){Box3=0;I nterface=0;}elseif(Interface==3){if((Passw_Box1_a!=temp_a)|(Passw_Box1_b!=temp_b)|(Passw_Box1_c!=temp_c )|(Passw_Box1_d!=temp_d)|(Passw_Box1_e!=temp_e)|(Passw_Box1_f!=temp_f)){Bee=1;delay(2 0000);delay(20000);Bee=0;delay(20000);delay(20000);Bee=1;delay(50000);delay(50000);Bee=0;I nterface=0;}}if((Interface==6)&(Passw_Box4_a==temp_a)&(Passw_Box4_b==temp_b)&(Passw_Box4_c==temp _c)&(Passw_Box4_d==temp_d)&(Passw_Box4_e==temp_e)&(Passw_Box4_f==temp_f)){Box4=0;I nterface=0;}elseif(Interface==3){if((Passw_Box1_a!=temp_a)|(Passw_Box1_b!=temp_b)|(Passw_Box1_c!=temp_c )|(Passw_Box1_d!=temp_d)|(Passw_Box1_e!=temp_e)|(Passw_Box1_f!=temp_f)){Bee=1;delay(2 0000);delay(20000);Bee=0;delay(20000);delay(20000);Bee=1;delay(50000);delay(50000);Bee=0;I nterface=0;}}delay(10);}}}if(x==0){delay(200);if(x==0){while(x==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=8;delay(10);}}}if(y==0){delay(200);if(y==0){while(y==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=4;delay(10);}}}a=1,b=0,c=1,d=1;x=1,y=1,z=1;if(x==0){delay(200);if(x==0){while(x==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=9;delay(10);}}}if(y==0){delay(200);if(y==0){while(y==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=5;delay(10);}}}if(z==0){delay(200);if(z==0){while(z==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c; temp_c=temp_b;temp_b=temp_a;temp_a=1;delay(10);}}}a=0,b=1,c=1,d=1;x=1,y=1,z=1;if(x==0){delay(200);if(x==0){while(x==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=0;delay(10);}}}if(y==0){delay(200);if(y==0){while(y==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c ;temp_c=temp_b;temp_b=temp_a;temp_a=6;delay(10);}}}if(z==0){delay(200);if(z==0){while(z==0);{temp_f=temp_e;temp_e=temp_d;temp_d=temp_c; temp_c=temp_b;temp_b=temp_a;temp_a=2;delay(10);}}}if(Key_Box1==0){if(Box1==1){Interface=3;}}if(Key_Box2==0){if(Box1==1){Interface=4;}}if(Key_Box3==0){if(Box1==1){Interface=5;}}if(Key_Box4==0){if(Box1==1){Interface=6;}}if(Cus_In==1){delay(100);if(Cus_In==1){while(Cus_In==1);{Customer++;if(Customer==100)Cu stomer=0;}}} //人数出入超市判断,进入则变量Customer+if(Cus_Out==1){delay(100);if(Cus_Out==1){while(Cus_Out==1);{if(Customer>1)Customer--;}}} //人数出入超市判断,进入则变量Customer-if(Shock==1){Bee=1; delay(60000);}else Bee=0;}/*----------------------------------------------------------------|| 主函数||----------------------------------------------------------------*/void main(){Init_LCD(); //Init the lcd1602Timer0_Init(); //Init the timer of s52Box1=0; //make the box is emptyBox2=0; //Box3=0; //Box4=0; //Bee=0; //Shock=0; //shock port isBee=1; //bee init,bee some timedelay(60000); //Bee=0; //while(1){Key_Scanf();//if(Interface==0)Display_Common(); //Common welcome interfaceif(Interface==1)Display_GetPassw(); //When get a password interfaceif(Interface==2)Display_BoxFull(); //When box all of full interfaceif(Interface==3)Display_Input_Box1(); //When user input passwordif(Interface==4)Display_Input_Box2();if(Interface==5)Display_Input_Box3();if(Interface==6)Display_Input_Box4();}}void t0time(void) interrupt 1{TR0=0; //TH0=(65535-100)/256; //write primitive value to timer TL0=(65535-100)%256; //TR0=1;Num++;if(Num==65530)Num=123; //don't change the value }。
C语言ATM自动存取款机全套代码
C语言ATM自动存取款机全套代码#include#include#include#include#include#define N 6char b[N]={'8','8','8','8','8','8'};//存放密码int money=5000;int securitytime=3;void Login();void JieMian();void SaveMoney();void GetMoney();void Query();void Return();//密码验证函数,验证成功返回1,否则返回0void Login(){char a[20],ch; //用户登录密码,用以验证int i=0,n=1,k;printf("\n\t\t欢迎使用ICBC ATM自动存取款机\n"); printf("\n请输入密码:");for(n=1;n<=5;n++){while((a[i]=getch())!=13){ i=i+1;printf("*");//将用户输入的密码以*显示}for(k=0;k<6;k++)if(a[k]!=b[k]) break;if (k==6){printf("\n密码正确,请继续!!\n");JieMian(); }else//printf("\n密码错误,请重新输入:\n");printf("\n密码错误,您还有%d次机会,请重新输入:\n",5-n);}printf("\n您已经输入5次错误,您的卡将被没收,请去相关网点办理!\n");exit(1);}// 界面设计void JieMian(){int SelectKey;//system("cls");//清屏幕函数while(1){puts("\n= = = = = = = = = = = = = = = =");puts("| 请选择相应功能: |");puts("| 1. 修改密码PassWord |");puts("| 2. 查询功能Query |");puts("| 3. 取款功能Get Money |");puts("| 4. 存款功能Save Money | ");puts("| 5. 转帐功能Trans Money | ");puts("| 6. 退出功能Return | ");puts("\n= = = = = = = = = = = = = = = = ");printf("\n请选择功能:");scanf("%d",&SelectKey);switch(SelectKey){ case 1:printf("\n修改密码功能\n");//PassWord();break;case 2:printf("\n查询功能\n");Query();break;case 3:printf("\n取款功能\n");GetMoney();break;case 4:printf("\n存款功能\n");SaveMoney();break;case 5:printf("\n转帐功能\n");//Trans();break;case 6:printf("\n退出功能\n");Return();break;}}}/*Query查询功能*/void Query(){system("cls");puts("================================== ==");printf("| Your Query balance is $%ld |\n",money);puts("| Press any key to return... |");puts("================================== ==");return;}/*GetMoney取钱功能*/void GetMoney(){char GetMoney;char kahao[20];long y;//输入待转入的相关信息//卡号,姓名do{puts("=================================");puts("| Please select GetMoney: |");puts("| 1. $100 |");puts("| 2. $200 |");puts("| 3. other |");puts("| 4. Return |");puts("=================================");GetMoney = getch();}while(GetMoney!='1'&&GetMoney!='2'&&GetMoney!='3' && GetMoney!='4');switch(GetMoney){case '1':system("cls");if(money>100){puts("================================== =========");puts("| Your GetMoney is $100,Thank you! |");puts("| Press any key to return... |");puts("===========================================");money=money-100;printf("\n您的余额为%d",money);}else printf("\n您的余额不足!");getch();break;case '2':system("cls");if(money>200){puts("================================== ======");puts("| Your GetMoney is $200,Thank you! |");puts("| Press any key to return... |");puts("================================== ======");money=money-200;printf("\n 您的余额为%d",money);}else printf("\n您的余额不足!");getch();break;case '3':system("cls");printf("please get some money:");scanf("%ld",&y);if(money>y){money=money-y;printf("\n您的余额为%d",money);}else{printf("\n您的余额不足!");printf("\n您的余额为%d",money);}getch();break;case '4': break;}return;}/*SaveMoney存钱功能*/void SaveMoney(){ char SaveMoney;long y;do{system("cls");puts("================================== ========");puts("| Please select Save Money: |");puts("| 1. $100 |");puts("| 2. $500 |");puts("| 3. $1000 |");puts("| 4. other |");puts("| 5. Return |");puts("================================== ========");SaveMoney = getch();}while(SaveMoney!='1'&&SaveMoney!='2'&& SaveMoney!='3'&&SaveMoney!='4'&&SaveMoney!='5');switch(SaveMoney){ case '1':{{system("cls");puts("================================== =========");puts("| Your save money is $100,Thank you! |");puts("| Press any key to return... |");puts("================================== ========");}money=money+100;printf("\n您的余额为%d",money);getch();}break;case '2':{system("cls");puts("================================== ============");puts("| Your Save Money is $500,Thank you! |");puts("| Press any key to return... |");puts("================================== ============");money=money+500;printf("\n您的余额为%d",money);getch();}break;case '3':{system("cls");puts("============================================");puts("| Your Save Money is $1000,Thank you! |");puts("| Press any key to return... |");puts("================================== ==========");money=money+1000;printf("\n您的余额为%d",money);getch();}break;case '4':{system("cls");puts("================================== ===========");puts("| Your Save some Money,Thank you! |");puts("| Press any key to return... |");puts("================================== ===========");puts("please save some money:");scanf("%ld",&y);if(y%100!=0)printf("该存款机只能处理整百的操作,请核查!!");else{money=money+y;printf("\n您的余额为%d",money);}getch();}break;case '5':break; }return;}/*Return,退出功能*/void Return(){system("cls");puts("================================== ==");puts("| Thank you for your using! |");puts("| RETURN! |");puts("================================== ==");exit(1);}//主函数int main(){Login();}上一页下一页。
超市存包系统C语言
课 程 设 计2015——2016学年 第2学期课程名称C 语言高级程序设计 学 院 计算机科学与技术学院小组成员1小组成员2 小组成员3 任课教师目录1.所选题目与要求——————————————————12.问题分析—————————————————————13.算法设计—————————————————————14.程序源代码————————————————————35.运行效果—————————————————————66.研究总结—————————————————————71.所选题目与要求超市门口的存物柜有n个小柜,一个柜门控制器。
柜门控制器上有“存”和“取”两个按钮(可以用“0”表示“存”,“1”表示“取”)。
顾客按“存”时,控制器检查是否有空柜子:如果有空柜子,就会自动打开其中一个柜子,顾客将东西放入柜子中,锁门时会输出一张用于取包的小密码纸条,上面有7位数字密码。
密码的头两位对应柜子编号加上10,密码中剩下的5位是利用随机函数rand()任意产生。
如果没有空柜子则提示“柜子已满!”。
当顾客按“取”按钮时,要输入小密码纸条上指定的7位数字密码:若密码正确,则对应的柜子门就自动打开,控制器显示“请取走物品!”;否则控制器提示“欢迎下次光临!”,顾客取走物品后关门,则该柜子可继续为其他顾客提供服务。
现编程实现柜门控制器的功能。
2.问题分析实现对n个小柜子状态的管理问题。
存过物品的柜子会对应一个“有密码”状态,用字符串(7个数字字符)表示的密码。
最初或已取走物品后的柜子会对应初始状态—“无密码”用户所有的存取操作会构成一个由0或1构成的请求序列,如:0,0,0,1,1,0,1,0,0,1……一次操作只能对应一个用户,同时对应控制器的一次处理,完成一次操作,并使柜子的状态发生变化。
3.算法设计流程图(借用的群里图,结构一致顺过来用用)(1)输入寄存箱数量int num(int n) { //输入可存柜数printf("请输入可存柜总数");scanf("%d",&n);printf("\n");while(n<=0||n>=25) {printf("寄存柜数量错误, 请重新输入\n\n");printf("寄存柜数量>");scanf("%d",&n);printf("\n"); }return n;}(2)判断是否有空闲的箱子,输出柜号void knum(int *c,int *n,int *k) //判断有没有空柜子,若有从小到大输出柜子int i=0;for(i=0;i<*n;i++){if (c[i]==1){c[i]=2;*k=i;printf("柜号%d\t",*k+1);break;}else *k=-1;}}(3)输出空箱子密码char code(char a[24][8],int *k) { //随机七位密码,前两位是空柜号数+10 int i=0,x=0;if(*k!=-1){for(i=0;i<5;i++) {x=rand()%10+0;a[*k][i+2]=x;}a[*k][0]=(*k+10)/10;a[*k][1]=(*k)%10+1;printf("请记住密码=");for(i=0;i<7;i++)printf("%d",a[*k][i]);printf("\n");}(4)检测输入的密码是否正确void test(char a[24][8],int *c){ //检验密码是否输错int i=0,j=0,l=0;char b[8];int t[8];int r[8];printf("请输入七位密码=");scanf("%s", b);printf("\n");j=(int)(b[0]-'0')*10+(int)(b[1]-'0')-11;for(i=0;i<8;i++){t[i]=(int)(a[j][i]-'\0');r[i]=(int)(b[i]-'0');if(t[i]==r[i]) l++;}if(l==7){printf("%d号请取走物品!\n",j+1);c[j]=1;}else printf("密码错误*****欢迎下次光临!\n");}4.程序源代码/**************************都是背后有肮*交易的淫~小组作业*****************/#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>int num(int n);void knum(int *c,int *n,int *k);char code(char a[24][8],int *k);void test(char a[24][8],int *c);void main(void) { //主函数printf("*****************都是背后有肮*交易的淫~小组作业********************\n");printf("********************小组成员:任海亮(组长)***********************\n");printf("********************小组成员:陈思(组花)***********************\n");printf("********************小组成员:钟金玮(组胖)***********************\n");int n=24,k=0,choice=0,i=0;char a[24][8]={'\0'};char b[8]={'\0'};int c[24]={0};for (i=0;i<24;i++) c[i]=1;srand(time(0));n=num(n);while(1){printf("存请按0;取请按1>");scanf("%d",&choice);switch(choice){case 0:knum(c,&n,&k);a[24][8]=code(a, &k);break;case 1:test(a,c);break;}}}int num(int n) { //输入可存柜数 printf("请输入可存柜总数(最大24个)");scanf("%d",&n);printf("\n");while(n<=0||n>=25) {printf("寄存柜数量错误, 请重新输入\n\n");printf("寄存柜数量>");scanf("%d",&n);printf("\n"); }return n;}void knum(int *c,int *n,int *k) { //判断有没有空柜子,若有从小到大输出柜子int i=0;for(i=0;i<*n;i++){if (c[i]==1){c[i]=2;*k=i;printf("柜号%d\t",*k+1);break;}else *k=-1;}}char code(char a[24][8],int *k) { //随机七位密码,前两位是空柜号数+10 int i=0,x=0;if(*k!=-1){for(i=0;i<5;i++) {x=rand()%10+0;a[*k][i+2]=x;}a[*k][0]=(*k+10)/10;a[*k][1]=(*k)%10+1;printf("请记住密码=");for(i=0;i<7;i++)printf("%d",a[*k][i]);printf("\n");}if(*k==-1) printf("柜子已满!\n\n");return a[24][8];}void test(char a[24][8],int *c){ //检验密码是否输错int i=0,j=0,l=0;char b[8];int t[8];int r[8];printf("请输入七位密码=");scanf("%s", b);printf("\n");j=(int)(b[0]-'0')*10+(int)(b[1]-'0')-11;for(i=0;i<8;i++){t[i]=(int)(a[j][i]-'\0');r[i]=(int)(b[i]-'0');if(t[i]==r[i]) l++;}if(l==7){printf("%d号请取走物品!\n\n",j+1);c[j]=1;} else printf("密码错误*****欢迎下次光临!\n\n");}5.运行效果6.研究总结(研究过程、交流讨论、收获和小组成员的分工)①分工:钟金玮做柜子数输出模块陈思做检查是否有空柜子和生成密码模块任海亮做检查密码是否输错和置零模块与编写主程序及汇总实验报告②总结:跟着李民老师学习了半学期的C语言,原本以为没啥好听的我们却收获良多,老师将概念案例化,这样的效率要远超自己看书。
C语言ATM机代码,简单版。
C语⾔ATM机代码,简单版。
#include <stdio.h>void main(){int i,j;int code=0,flag=0;int choice1=0,choice2=0,choice3=0;int RMB=100000,WB=100000;int cash1=0,cash2=0;char instruct='n';printf("************************************************************\n");printf("* *\n");printf("* *\n");printf("* 欢迎使⽤怪精 ATM取款机 *\n");printf("* *\n");printf("* 监制: rain version number:1.0.1 *\n");printf("* *\n"); printf("* *\n"); printf("************************************************************\n");printf("请键⼊您的密码:\n"); /*密码为9527*/for(i=0;i<3;i++){scanf("%d",&code);system("cls");if(code==9527){break;}if(code!=9527){printf("密码有误!请重新输⼊:\n");flag+=1;}}if(flag==3){printf("密码错误超限,请回去⾯壁思过,再见!");return;}while(instruct=='N'|| instruct=='n' ){if(code==9527){printf("请选择您所需服务!\n");printf("1.查询余额 2.取款 3.退出");scanf("%d",&choice1);system("cls");switch(choice1){case 1:printf("1.⼈民币 2.外汇");scanf("%d",&choice2);system("cls");switch(choice2){case 1:printf("您的⼈民币账户余额:¥%d\n",RMB);break;case 2:printf("您的外币账户余额:$%d\n",WB);break;}break;case 2:printf("1.⼈民币 2.外币");scanf("%d",&choice3);system("cls");switch(choice3){case 1:printf("请输⼊取款⾦额:\n");scanf("%d",&cash1);RMB=RMB-cash1;printf("您的账户余额为:¥%d\n",RMB); break;case 2:printf("请输⼊取款⾦额:\n");scanf("%d",&cash2);WB=WB-cash2;printf("您的账户余额为:$%d\n",WB); break;}break;case 3:break;}printf("是否退出程序<y表⽰是,n表⽰否>:"); scanf("%s",&instruct);}}}。
C++模拟ATM机存取款管理系统设计
温馨提示程序语言:C、C++、C#、Python(红色字体表示本课设使用的程序设计语言)图形功能选项:Win32控制台程序(黑框、文本界面)、Win32程序、MFC、WinForm、DirectX10(黑体标明表示本课设的程序图形类别,默认为非图形界面Win32控制台程序)数据结构:基础类型、数组、链表、双向链表、搜索树(非平衡二叉树)、平衡二叉树、链表与平衡二叉树相结合、堆栈、队列、串、图(黑体标明表示本课设使用的数据结构)C++语言项:STL库(黑体标明表示使用C++的STL库)编译环境:Windows 7 64位旗舰版(Linux及其他环境请谨慎下载)集成开发环境:Visual C++ 6.0、DEVC++、CodeBlocks、Visual Studio 2015均可通过编译。
(浅蓝色字体表示需要运行修改后的版本,请用户自行选择源代码测试)分多头文件编译:否(所有代码基本都包含在一个文件内,如需试验头文件功能,请自行参考相关文献)内容说明:1、课设题目及预览内容将在第二页开始展示。
2、代码行数:241行3、目录所示内容,本文基本涵盖,如无内容,会在本页进行说明。
4、附录绝对包含用户使用手册及程序完整源代码和详细注释。
5、如需下载其他头文件(例如DirectX需另行配置),本文会在此进行说明。
6、本文撰写内容仅供学习参考,另外,由于本人水平有限,编写之处难免存在错误和纰漏,恳请各位老师或同学批评指正。
《面向对象程序设计》课程设计报告书设计题目:模拟ATM机存取款管理系统设计指导老师:学生班级:学生学号:学生姓名:同组人员:时间:2017.12.课程设计任务书第一章概述使用ATM柜员机可以节约人力资源,方便用户进行简单常用的操作,并且为用户全天候的服务,提高银行效率,给人们提供了非常大的便利。
本文就以C++语言设计一项简单的模拟ATM柜员机程序。
运行程序时,当输入给定的卡号和密码(初始卡号和密码都为123456)后,系统就能登录ATM柜员机系统,用户可以进入功能实现界面,有查询余额,取款,存款,修改密码等功能。
经典C语言版含文件的ATM银行取款机系统源代码与程序设计基础实训I文档
帮助业务需要为用户提供系统的操作帮助。
各阶段具体要求:
1、需求分析阶段
熟悉系统业务,从业务中抽取出系统的需求,形成完善的需求说明书。
2、系统设计阶段
根据需求,进行程序设计,包括定义系统的界面、定义系统数据的存储方式等,形成完善的设计说明书。
3、编码实现阶段
(1)完成代码编写
(2)要求代码编写规范
4、系统测试阶段
(1)完成功能调试
(2)要求完成必要的测试工作
5、交付实施阶段
(1)提交可正常执行的系统
(2)提交系统需求说明书、设计说明书、程序代码
(3)撰写课程设计报告书
(4)要求规范地书写文档
设计工作量:
(1)软件设计:完成问题陈述中所提到的所有需求功能。
(2)论文:要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。
课程设计任务书
课程名称:程序设计基础课程设计
设计题目:银行ATM存取款系统、个人通信录系统(任选一题)
已知技术参数和设计要求:
需求说明及要求
题目一:银行ATM存取款系统
银行ATM存取款系统业务描述如下:
银行ATM存取款系统能为用户提供存款、取款、查询、转账和修改密码的功能。为了模拟真实的ATM业务环境,本系统必须实现存款、取款、查询、转账、修改密码以及开户的功能。用户通过开户业务在本系统开立银行账户,之后可以通过该银行账户登陆ATM系统,在系统中实现存款、取款、查询账户信息、修改密码的操作。本系统各个业务有如下注意点:
参考资料
资料名称
《C程序设计第三版》
作者
谭浩强
出版社
清华大学出版社
出版时间
2005
2
3
c语言银行自动存取款机模拟
C语言银行自动存取款机模拟介绍本文档将介绍如何使用C语言编写一个简单的银行自动存取款机模拟程序。
该程序可以模拟银行客户进行存款和取款操作,并实时更新账户余额。
功能此银行自动存取款机模拟程序具有以下功能:•登录功能:用户可以输入账号和密码进行登录。
•存款功能:用户可以输入存款金额进行存款,存款成功后会更新账户余额。
•取款功能:用户可以输入取款金额进行取款,取款成功后会更新账户余额。
•查询余额功能:用户可以查看账户余额。
•退出功能:用户可以选择退出程序。
程序设计数据结构在程序中,需要定义一个结构体来表示银行客户的账户信息。
每个账户包含账号、密码和余额:struct Account {int accountNumber;char password[20];double balance;};登录功能首先,用户需要输入账号和密码进行登录。
可以定义一个函数来实现登录功能:int login(struct Account *accounts, int numAccounts, int accountNumber, char *password) {for (int i = 0; i < numAccounts; i++) {if (accounts[i].accountNumber == accountNumber && strcmp(accounts[i].password, password) == 0) {return i; // 返回账号在数组中的索引}}return -1; // 登录失败,返回-1}存款和取款功能存款和取款功能可以分别定义两个函数来实现。
存款函数会增加账户余额,取款函数会减少账户余额。
```c void deposit(struct Account *account, double amount) { account->balance += amount; }void withdraw(struct Account *account, double amount) { if (account->balance >= amount) { account->balance -= amount; printf(。
C语言ATM(有文件输入输出)
{
double cun;
system("cls");
fp=fopen("银行后台.txt","rb+");
if(fp==NULL)
{
printf("打开失败\n");
return;
}
while(fread(&k,sizeof(k),1,fp))
{
if(k.zhanghao==z)
int temp=3;
system("cls");
printf("*请输入密码*\n");
scanf("%d",&code);
while(code!=k.mima)
{
temp--;
system("cls");
printf("*密码错误,请重新输入*\n");
printf("*您还有");
printf("%d",temp);
{
break;
}
}
printf("请输入您要存入的金额:");
scanf("%lf",&cun);
if(cun<0)
{
system("cls");
printf("非法存款\n");
printf("请重新输入\n");
scanf("%lf",&cun);
}
k.yu_e+=cun;
system("cls");
c语言atm机的编程
C语言ATM机的编程1. 简介ATM(Automated Teller Machine)机是一种自动提款机,它能够为用户提供多种服务,如取款、存款、查询余额、转账等。
本文将介绍如何使用C语言编写一个简单的ATM机程序。
2. 功能需求我们的ATM机程序需要实现以下功能: 1. 用户登录:用户可以输入正确的账号和密码进行登录。
2. 查询余额:用户登录成功后可以查询账户余额。
3. 存款:用户登录成功后可以存入指定金额到账户中。
4. 取款:用户登录成功后可以从账户中取出指定金额。
5. 转账:用户登录成功后可以将指定金额转入其他账户。
3. 程序设计我们将使用结构体来表示用户信息及其相关操作。
首先定义一个结构体User,其中包含用户名、密码和余额三个字段:typedef struct {char username[20];char password[20];double balance;} User;接下来,我们需要实现几个函数来完成不同的操作。
首先是登录函数login():int login(User* users, int numUsers) {char username[20];char password[20];printf("请输入用户名: ");scanf("%s", username);printf("请输入密码: ");scanf("%s", password);for (int i = 0; i < numUsers; i++) {if (strcmp(username, users[i].username) == 0 && strcmp(password, users[i].password) == 0) {printf("登录成功!\n");return i; // 返回用户索引}}printf("用户名或密码错误!\n");return -1; // 登录失败}登录函数会提示用户输入用户名和密码,并与已有的用户信息进行匹配。
用C#做的控制台ATM取款机程序
break;
default:
Console.WriteLine("您的输入有误,请重新输入");
using System.Linq;
using System.Text;
namespace BankBank
{
class Bank
{
//创建Users类对象数组
Users [] user = new Users[3];
//系统菜单 ຫໍສະໝຸດ user[2] = new Users();
user[2]._account = "179708064369";
user[2]._name = "刘华";
user[2]._password = "4567";
AddMoneyInput();
}
else
{
return -3;
}
}
}
}
银行类
using System;
using System.Collections.Generic;
{
user[0] = new Users();
user[0]._account = "179708064356";
user[0]._name = "王丽丽";
user[0]._password = "1234";
case 2:
AddMoneyInput();
Menu();
break;
C语言实现ATM机存取款系统
C语⾔实现ATM机存取款系统本⽂实例为⼤家分享了C语⾔实现ATM机存取款系统的具体代码,供⼤家参考,具体内容如下利⽤结构体和构造函数并且采⽤输⼊输出⽂件实现ATM机系统。
主要功能有:利⽤三种⽅法查询、开户、登陆、菜单、取款、修改密码、存款、转账、创建个⼈信息、输出、删除、增加、退出。
是⼀个功能齐全,完备的ATM机系统。
#include<stdio.h>#include<string.h>#include<stdlib.h>struct per //定义结构体{char name[20];char ID[20];int money;char mima[6];struct per * next;};typedef struct person //定义另⼀结构体{struct per kehu;struct person *next;}L;void chaxun(struct per *head); //各个函数的声明void kaihu(struct per *head);void denglu(struct per *head);void caidan(struct per *head);void qukuan(struct per *head);void xgmm(struct per *head);void cunkuan(struct per *head);void zhuanzhang(struct per *head);void chuangjian(struct person **Phead);void shuchu(struct person *Phead);void shanchu(struct person **Phead);void zengjia(struct person **Phead);void chaxun1(struct person *Phead);void chaxun2(struct person *Phead);void chaxun3(struct person *Phead);void tuichu();void menu();/*主函数*///void main(){char x;char choose; //choose为定义输⼊选择的变量int flag=1;struct person *Phead=NULL; //Phead为定义⼆层头指针struct per *head=NULL; //head为定义⼀层头指针printf("*****************************\n");printf("**欢迎使⽤ATM⾃动取款机系统**\n");printf("*****************************\n");printf("——————————————\n");printf("| 1 开户 |\n");printf("——————————————\n");printf("| 2 登陆 |\n");printf("——————————————\n");system("cls");switch(x){case '1':system("cls");kaihu(head); //调⽤开户函数break;case '2':system("cls");denglu(head); //调⽤登陆函数break;case '3':system("cls");menu(); //调⽤后台菜单函数break;}while(flag){system("cls");menu(); //调⽤后台菜单函数choose=getchar();switch(choose){case '1':chuangjian(&Phead);shuchu(Phead); //调⽤后台输出函数system("pause");system("cls");break;case '2':chaxun1(Phead); //调⽤后台卡号查询函数system("pause");system("cls");break;case '3':chaxun2(Phead); //调⽤后台姓名查询函数system("pause");system("cls");break;case '4':chaxun3(Phead); //调⽤后台余额查询函数system("pause");system("cls");break;case '5':shanchu(&Phead); //调⽤后台删除⽤户函数system("pause");system("cls");break;case '6':zengjia(&Phead); //调⽤后台增加⽤户函数system("pause");system("cls");break;case '7':shuchu(Phead); //调⽤后台输出函数函数system("pause");system("cls");break;case '8':shuchu(Phead);system("pause");system("cls");break;case '0':flag=0;printf("The end.\n");break;}}}/*开户函数*/void kaihu(struct per *head){head=NULL;FILE *fp; //定义⽂件指针struct per *p1=NULL,*p2=NULL; //p1,p2为定义链表指针 p1=(struct per*)malloc(sizeof(struct per)); //开辟内存单元scanf("%s",p1->mima);p1->money=0;p1->next=NULL;printf("您的个⼈信息为");printf("姓名:%s \n卡号:%s \n余额:%4d\n",p1->name,p1->ID,p1->money); if(NULL==head) //为新⽤户开辟内存单元{head=(struct per *)malloc(sizeof(struct per));head->next=p1; //进⾏头插法,将其作为第⼀个节点}else //为新增客户开辟内存单元{for(p2=head;p2->next!=NULL;p2=p2->next); //进⾏尾插p2->next=p1;}if((fp=fopen("save.txt","ab+"))==NULL) //打开⽂件{printf("cannot poen file\n");return;}if(fwrite(p1,sizeof(struct per),1,fp)!=1) //将链表信息写⼊⽂件中printf("file write error\n");fclose(fp);printf("\n");printf("恭喜您开户成功,请登录\n");system("pause");system("cls");denglu(head);}//登陆函数/void denglu(struct per *head){char d[20];char mima[20];int i,j;FILE *fp; //定义⽂件指针struct per *p,*q=NULL;if((fp=fopen("save.txt","rb+"))==NULL) //打开⼀个⼆进制⽂件,为读⽅式{printf("不能打开⽂件\n"); //如不能打开,则结束程序}p=(struct per*)malloc(sizeof(struct per)); //申请空间head=p;while(!feof(fp)) //循环读数据直到⽂件尾结束{if(1!=fread(p,sizeof(struct per),1,fp))break; //如果没读到数据,跳出循环p->next=(struct per *)malloc(sizeof(struct per)); //为下⼀个结点申请空间q=p; //保存当前节点的指针,作为下⼀结点的前驱p=p->next; //指针后移,新读⼊数据链到当前表尾}q->next=NULL; //最后⼀个结点的后继指针为空fclose(fp);printf(" **********************\n");printf(" ***欢迎来都建设银⾏***\n");printf(" **********************\n");for(j=1;j<4;j++) //限制卡号输⼊的次数的循环{printf("请输⼊您的卡号\n");scanf("%s",d);for(q=head;q!=NULL;q=q->next) //遍历链表{if(strcmp(q->ID,d)!=0) //核对账号{continue; //跳出循环}scanf("%s",mima);if(strcmp(q->mima,mima)!=0) //核对密码{printf("密码不正确。
基于C的自动化仓储管理系统设计与实现
基于C的自动化仓储管理系统设计与实现仓储管理系统是现代物流行业中不可或缺的重要组成部分,它通过科学的管理和信息化技术的应用,提高了仓储效率、降低了成本,为企业创造了更大的价值。
在自动化技术不断发展的今天,基于C语言的自动化仓储管理系统设计与实现成为了一个备受关注的课题。
本文将深入探讨基于C语言的自动化仓储管理系统的设计与实现过程。
一、系统需求分析在设计任何系统之前,首先需要进行系统需求分析,明确系统的功能和性能需求。
自动化仓储管理系统的主要功能包括货物入库、出库管理、库存盘点、订单处理等。
同时,系统需要具备良好的稳定性、可靠性和扩展性,以应对日益复杂多变的市场需求。
二、系统架构设计基于C语言的自动化仓储管理系统通常采用客户端/服务器架构,客户端负责与用户交互,服务器负责处理业务逻辑和数据存储。
通过这种架构,可以实现系统功能模块化、易于维护和扩展的优势。
三、数据库设计数据库设计是自动化仓储管理系统中至关重要的一环。
合理的数据库设计可以提高系统的数据存取效率和数据一致性。
在基于C语言开发的系统中,通常会选择轻量级数据库如SQLite作为数据存储引擎,以满足系统对数据操作的需求。
四、界面设计与交互体验优化良好的界面设计和交互体验对于用户操作友好性至关重要。
在自动化仓储管理系统中,界面简洁明了、操作流畅高效是提升用户体验的关键。
通过合理布局界面元素、优化交互逻辑,可以使用户更加便捷地完成操作。
五、算法优化与性能提升在自动化仓储管理系统中,算法优化和性能提升是开发过程中需要重点考虑的问题。
通过对关键算法进行优化,如货物定位算法、库存盘点算法等,可以提高系统运行效率和响应速度,进而提升整体性能。
六、安全性与权限控制数据安全是任何信息系统都必须重视的问题。
在自动化仓储管理系统中,数据泄露或篡改可能带来严重后果。
因此,在设计与实现过程中需要加强对数据安全性的考虑,并设置严格的权限控制机制,确保只有授权人员可以访问敏感数据。
C语言编程银行ATM存取款系统实现源码
C语⾔编程银⾏ATM存取款系统实现源码⽬录⼀、课程设计的⽬的⼆、课程设计的题⽬三、设计内容银⾏ATM存取款系统实现的效果源码业务流程1、⽤户开户2、登录流程3、密码修改这⾥使⽤的运⾏⼯具是DEV C++。
⽼铁们⼀定要看仔细了。
是DEV C++仅供借鉴:这个是⼤⼀时期写的。
⼤四的时候整理了⼀下(本⼈C语⾔学的也不太好)。
肯定很多不⾜和存在漏洞的地⽅、仅供借鉴、仅供借鉴。
⼀、课程设计的⽬的掌握C语⾔程序设计的基础知识、基本理论、原理和实现技术。
⼆、课程设计的题⽬银⾏ATM存取款系统三、设计内容(主要技术关键的分析、解决思路和⽅案⽐较等)银⾏ATM存取款系统银⾏ATM存取款系统业务描述如下:银⾏ATM存取款系统能为⽤户提供存款、取款、查询、转账和修改密码的功能。
为了模拟真实的ATM业务环境,本系统必须实现存款、取款、查询、转账、修改密码以及开户的功能。
⽤户通过开户业务在本系统开⽴银⾏账户,之后可以通过该银⾏账户登陆ATM系统,在系统中实现存款、取款、查询账户信息、修改密码的操作。
本系统各个业务有如下注意点:(1)登陆系统⽤户登陆之前,必须在登陆界⾯输⼊其银⾏账户,通过其正确输⼊的银⾏账户登陆系统。
(2)开户业务要使⽤本系统必须⾸先执⾏开户业务开⽴新的银⾏账户,并且将此新开的银⾏存储于⽂件当中。
同时,系统以⾝份证号码作为开户的充分条件,即⼀个⾝份证号码只能开⽴⼀次银⾏账户。
(3)存款业务客户登陆系统后,选择存款业务,即可以将输⼊的存款⾦额存⼊相应的账户。
(4)取款业务客户登陆系统后,选择取款业务,即可以将输⼊的取款⾦额从相应的银⾏账户取出,但是取款⾦额必须⼤于⽬前的账户余额。
(5)查询业务客户登陆系统后,可以选择查询业务,查询账户余额。
(6)转账业务客户登陆系统后,可以选择转账业务,进⾏转账。
注意的是转账的⽬的账户必须是本系统已经存在的银⾏账户。
(7)修改密码客户登陆系统后,可以选择修改密码业务,进⾏密码修改。
超市存包系统C语言
课程设计课程名称C语言高级程序设计学院计算机科学与技术学院小组成员1小组成员2小组成员3任课教师2015——2016学年第2学期目录1.所选题目与要求——————————————————12.问题分析—————————————————————13.算法设计—————————————————————14.程序源代码————————————————————35.运行效果—————————————————————66.研究总结—————————————————————71.所选题目与要求超市门口的存物柜有n个小柜,一个柜门控制器。
柜门控制器上有“存”和“取”两个按钮(可以用“0”表示“存”,“1”表示“取”)。
顾客按“存”时,控制器检查是否有空柜子:如果有空柜子,就会自动打开其中一个柜子,顾客将东西放入柜子中,锁门时会输出一张用于取包的小密码纸条,上面有7位数字密码。
密码的头两位对应柜子编号加上10,密码中剩下的5位是利用随机函数rand()任意产生。
如果没有空柜子则提示“柜子已满!”。
当顾客按“取”按钮时,要输入小密码纸条上指定的7位数字密码:若密码正确,则对应的柜子门就自动打开,控制器显示“请取走物品!”;否则控制器提示“欢迎下次光临!”,顾客取走物品后关门,则该柜子可继续为其他顾客提供服务。
现编程实现柜门控制器的功能。
2.问题分析实现对n个小柜子状态的管理问题。
存过物品的柜子会对应一个“有密码”状态,用字符串(7个数字字符)表示的密码。
最初或已取走物品后的柜子会对应初始状态—“无密码”用户所有的存取操作会构成一个由0或1构成的请求序列,如:0,0,0,1,1,0,1,0,0,1……一次操作只能对应一个用户,同时对应控制器的一次处理,完成一次操作,并使柜子的状态发生变化。
3.算法设计流程图(借用的群里图,结构一致顺过来用用)(1)输入寄存箱数量int num(int n) { //输入可存柜数printf("请输入可存柜总数");scanf("%d",&n);printf("\n");while(n<=0||n>=25) {printf("寄存柜数量错误, 请重新输入\n\n");printf("寄存柜数量>");scanf("%d",&n);printf("\n"); }return n;}(2)判断是否有空闲的箱子,输出柜号void knum(int *c,int *n,int *k) //判断有没有空柜子,若有从小到大输出柜子int i=0;for(i=0;i<*n;i++){if (c[i]==1){c[i]=2;*k=i;printf("柜号%d\t",*k+1);break;}else *k=-1;}}(3)输出空箱子密码char code(char a[24][8],int *k) { //随机七位密码,前两位是空柜号数+10 int i=0,x=0;if(*k!=-1){for(i=0;i<5;i++) {x=rand()%10+0;a[*k][i+2]=x;}a[*k][0]=(*k+10)/10;a[*k][1]=(*k)%10+1;printf("请记住密码=");for(i=0;i<7;i++)printf("%d",a[*k][i]);printf("\n");}(4)检测输入的密码是否正确void test(char a[24][8],int *c){ //检验密码是否输错int i=0,j=0,l=0;char b[8];int t[8];int r[8];printf("请输入七位密码=");scanf("%s", b);printf("\n");j=(int)(b[0]-'0')*10+(int)(b[1]-'0')-11;for(i=0;i<8;i++){t[i]=(int)(a[j][i]-'\0');r[i]=(int)(b[i]-'0');if(t[i]==r[i]) l++;}if(l==7){printf("%d号请取走物品!\n",j+1);c[j]=1;}else printf("密码错误*****欢迎下次光临!\n");}4.程序源代码/**************************都是背后有肮*交易的淫~小组作业*****************/#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>int num(int n);void knum(int *c,int *n,int *k);char code(char a[24][8],int *k);void test(char a[24][8],int *c);void main(void) { //主函数printf("*****************都是背后有肮*交易的淫~小组作业********************\n");printf("********************小组成员:任海亮(组长)***********************\n");printf("********************小组成员:陈思(组花)***********************\n");printf("********************小组成员:钟金玮(组胖)***********************\n");int n=24,k=0,choice=0,i=0;char a[24][8]={'\0'};char b[8]={'\0'};int c[24]={0};for (i=0;i<24;i++) c[i]=1;srand(time(0));n=num(n);while(1){printf("存请按0;取请按1>");scanf("%d",&choice);switch(choice){case 0:knum(c,&n,&k);a[24][8]=code(a, &k);break;case 1:test(a,c);break;}}}int num(int n) { //输入可存柜数 printf("请输入可存柜总数(最大24个)");scanf("%d",&n);printf("\n");while(n<=0||n>=25) {printf("寄存柜数量错误, 请重新输入\n\n");printf("寄存柜数量>");scanf("%d",&n);printf("\n"); }return n;}void knum(int *c,int *n,int *k) { //判断有没有空柜子,若有从小到大输出柜子int i=0;for(i=0;i<*n;i++){if (c[i]==1){c[i]=2;*k=i;printf("柜号%d\t",*k+1);break;}else *k=-1;}}char code(char a[24][8],int *k) { //随机七位密码,前两位是空柜号数+10 int i=0,x=0;if(*k!=-1){for(i=0;i<5;i++) {x=rand()%10+0;a[*k][i+2]=x;}a[*k][0]=(*k+10)/10;a[*k][1]=(*k)%10+1;printf("请记住密码=");for(i=0;i<7;i++)printf("%d",a[*k][i]);printf("\n");}if(*k==-1) printf("柜子已满!\n\n");return a[24][8];}void test(char a[24][8],int *c){ //检验密码是否输错int i=0,j=0,l=0;char b[8];int t[8];int r[8];printf("请输入七位密码=");scanf("%s", b);printf("\n");j=(int)(b[0]-'0')*10+(int)(b[1]-'0')-11;for(i=0;i<8;i++){t[i]=(int)(a[j][i]-'\0');r[i]=(int)(b[i]-'0');if(t[i]==r[i]) l++;}if(l==7){printf("%d号请取走物品!\n\n",j+1);c[j]=1;} else printf("密码错误*****欢迎下次光临!\n\n");}5.运行效果6.研究总结(研究过程、交流讨论、收获和小组成员的分工)分工:钟金玮做柜子数输出模块陈思做检查是否有空柜子和生成密码模块任海亮做检查密码是否输错和置零模块与编写主程序及汇总实验报告②总结:跟着李民老师学习了半学期的C语言,原本以为没啥好听的我们却收获良多,老师将概念案例化,这样的效率要远超自己看书。
C语言中的智能仓储与物流管理
C语言中的智能仓储与物流管理C语言是一种流行的编程语言,被广泛应用于各种领域,包括智能仓储与物流管理系统。
在现代商业环境中,物流管理和仓储操作越来越复杂,需要高效的系统来帮助管理和优化各种流程。
C语言由于其高效性和灵活性,被广泛应用于智能仓储与物流管理系统的开发中。
智能仓储与物流管理系统涉及到多个方面,包括库存管理、订单处理、运输管理、数据分析等。
使用C语言来开发这样的系统,可以保证系统的高效性和稳定性。
C语言的强大功能和灵活性使得开发人员可以根据具体的需求来设计和实现各种功能模块,从而实现系统的自动化和智能化管理。
在智能仓储系统中,库存管理是一个重要的环节。
使用C语言可以实现库存的实时监控、库存的入库和出库管理、库存的定位和调度等功能。
通过系统的自动化管理,可以有效减少人为错误和提高库存的利用率。
同时,C语言还可以实现对库存数据的实时分析和统计,为企业提供决策支持。
另外,订单处理也是智能仓储系统中不可或缺的功能之一。
通过C语言的程序设计,可以实现订单的自动接收、处理和分发。
开发人员可以设计相应的算法来优化订单处理流程,提高订单处理效率和准确性。
同时,系统还可以实现订单的跟踪和实时监控,为用户提供及时的订单信息。
在运输管理方面,C语言可以实现对物流运输过程的监控和调度。
开发人员可以使用C语言来设计智能算法,实现运输路径的优化和车辆的调度管理。
通过实时跟踪和监控,可以保证货物的安全和及时送达,提高整个物流运输系统的效率。
智能仓储与物流管理系统中数据的分析和报告也是非常重要的。
C语言可以实现对大量数据的处理和分析,为企业提供详尽的数据报告和分析结果。
开发人员可以设计各种数据报表和图表,帮助企业管理者全面了解仓储和物流运营情况,为企业的决策提供有效支持。
综上所述,C语言在智能仓储与物流管理系统中具有非常重要的应用前景。
其高效性、灵活性和稳定性使得开发人员可以设计并实现各种复杂功能模块,从而提高企业的物流管理效率和降低成本。
C语言ATM程序模拟
C语言A T M程序模拟As a person, we must have independent thoughts and personality.一、课题要求1、当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统。
2、查询余额:初始余额为10000元。
3、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
4、ATM存款:不能出现负存款。
5、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
二、代码#include ""#include ""#include ""#include ""#include ""void gotoxy(int x,int y); 改密码 *\n");printf("* 2.查询余额 *\n");printf("* 3.取款 *\n");printf("* 4.实时存款 *\n");printf("* 5.退出 *\n");printf("********************************\n");switch(getch()){case '1': mima(); break;case '2': yu_e(); break;case '3': qukuan(); break;case '4': cunkuan(); break;case '5': exit(); break;default:printf("error\n");}}回 2.退出 *\n");printf("* *\n"); printf("* *\n"); printf("********************************\n"); switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}. *\n");printf("* *\n"); printf("* *\n");printf("********************************\n"); delay();delay();system("cls");printf("********************************\n"); printf("* *\n"); printf("* 您的余额为 *\n"); printf("* *\n"); printf(" ");printf("%d",YU_E);printf("\n* *\n"); printf("* 1.返回 2.退出 *\n"); printf("********************************\n"); switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}它 *\n");printf("* *\n"); printf("* 7.返回 8.退出 *\n"); printf("********************************\n");switch(getch()){case '1': panduan(100); break;case '2': panduan(200); break;case '3': panduan(500); break;case '4': panduan(800); break;case '5': panduan(1000); break;case '6':system("cls");printf("********************************\n");printf("* *\n");printf("* 请输入您要取款的金额 *\n");printf("* *\n");printf("* *\n");printf("* *\n");printf("* *\n");printf("********************************\n");gotoxy(14,4);scanf("%d",&temp);panduan(temp); break;case '7':caozuo(); break;case '8':exit(); break;}}回 2.退出 *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}beishu=z%100;if(beishu!=0){system("cls");delay();printf("********************************\n");printf("* *\n");printf("* 本ATM机只支持 100 的人民币 *\n");printf("* 请重新操作 *\n");printf("* *\n");printf("* 1.返回 2.退出 *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}if(z==5000||z>5000){system("cls");printf("********************************\n");printf("* *\n");printf("* 每次取款不能超过 5000 元 *\n");printf("* 请重新操作 *\n");printf("* *\n");printf("* 1.返回 2.退出 *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}YU_E=YU_E-z;success();}. *\n");printf("* *\n"); printf("* *\n"); printf("********************************\n"); delay();delay();system("cls");printf("********************************\n"); printf("* *\n"); printf("* 操作已成功 *\n"); printf("* *\n"); printf("* 1.返回 2.退出 *\n"); printf("* *\n"); printf("* *\n"); printf("********************************\n"); switch(getch()){case '1':caozuo(); break;case '2':exit(); break;}}. *\n");printf("* *\n");printf("* *\n");printf("********************************\n");delay();delay();enter_ATM();}//================================================================/ ///============== 简单转移函数=============//void zhuangyi(){mima();}//========================================//三、部分效果截图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(temp_node->lock_stat == 0)//该柜子是可用的
{
printf("\n存在可用的存包柜,您的存包柜是第%d个\n", temp_node->id);
{
if(temp_node->pass[i] != temp[i])
{
break;
}
else
{
int i;
bag_link temp_link;
printf("\n\n/**程序将会初始化超市存包柜系统信息**/\n");
printf("请输入超市存包柜个数:>");
scanf("%d", &num);
*link = (bag_link)malloc(sizeof(bag_infor));
printf("*******************************************\n");
printf("\n\n请选择操作项目:>");
scanf("%d", &menu);
if(menu == 1)
}
temp_node = (*link)->next;
while(temp_node)
{
if(temp_node->lock_stat == 1)
{
for(i = 0; i < 6; i++)
{
printf("谢谢您的使用!再见");
break;
}
else
{
printf("输入错误!!!");
printf("******C存包柜问题模拟程序******\n");
while(1)
{
printf("*******************MENU********************\n");
printf("* *\n");
struct bag_infor *next;
} bag_infor, *bag_link;
int get_length(bag_link *link)
{
bag_link temp_node;
int i = 0;
if(*link == NULL)
{
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
typedef struct bag_infor
{
int id;
int pass[6];
int lock_stat;//0 为可用 1为不可用
{
printf("\nError:内存分配失败,程序退出!");
return;
}
temp_link->id = i + 1;
temp_link->lock_stat = 0;
}
}
}
if(flag == 1)
{
break;
}
temp_node = temp_node->next;
}
{
//printf("%d", rand() % 10);
temp_node->pass[i] = (rand() % 10);
printf("%d",temp_node->pass[i]);
}
}
}
}
void get_bag(bag_link *link)
{
char pass[6];
int temp[6];
int i;
int flag = 0;
bag_link temp_node;
if(flag == 1)
{
printf("\n\n成功打开存包箱\n");
printf("你的存包箱是第%d个\n", temp_node->id);
printf("请妥善保管你的财务,谢谢你的使用\n\n\n");
}
void enter_bag(bag_link *link)
{
int count = get_length(link);
int i;
int flag = 0;
int choice;
if(count == 0)
{
printf("\n\n超市存包系统没有进行初始化,不能使用!\n\n");
}
else
{
while(1)
{
printf("\n请放入一枚一元硬币:1->确定 2->取消\n");
printf("请操作:>");
scanf("%d", &choice);
while(temp_node)
{
temp_node = (*link)->next;
free(link);
*link = temp_node;
}
}
int main()
{
bag_link bags = NULL;
int menu;
{
init_bag(&bags);
printf("\n\n系统初始化成功.............\n\n");
if(choice == 1)
{
bag_link temp_node;
temp_node = (*link)->next;
while(temp_node)
printf("* 1,初始化存包系统 *\n");
printf("* 2,存包 *\n");
printf("* 3,取包 *\n");
printf("\n欢迎使用取包功能\n");
printf("请输入你的密码:>");
scanf("%s", pass);
for(i = 0; i < 6; i++)
{
temp[i] = (int)(pass[i] - '0');
{
printf("\n!存包柜已满,不能进行存包!\n");
}
break;
}
else if(choice == 2)
break;
}
temp_node = temp_node->next;
}
if(flag == 0)
if(i == 5)//最后的数据都是相等的
{
temp_node->lock_stat = 0;
flag = 1;
}
return i;
}
temp_node = (*link)->next;
while(temp_node)
{
i = i + 1;
temp_node = temp_node->next;
}
return i;
}
else
{
printf("\n\n密码输入不正确,不能完成取包操作!\n\n");
}
}
void init_bag(bag_link *link)
{
int num;
(*link)->next = NULL;
for(i = 0; i < num; i++)
{
temp_link = (bag_link)malloc(sizeof(bag_infor));
if(temp_link == NULL)
temp_link->next = (*link)->next;
(*link)->next = temp_link;
}
}
void destory_bag(bag_link *link)
{
bag_link temp_node;
temp_node = *link;
printf("* 4,关闭系统 *\n");
printf("* *\n");
printf("* *\n");
printf("\n请记住您的密码信息:\n");
srand( (unsigned)time( NULL ) );
for(i = 0; i < 6; i++)
}
printf("\n\n");
flag = 1;
temp_node->lock_பைடு நூலகம்tat = 1;