用C语言写一个类似于ATM机的程序,有开户(姓名,密码),存款,取款,查询余额,转账的功能,

用C语言写一个类似于ATM机的程序,有开户(姓名,密码),存款,取款,查询余额,转账的功能,,第1张

package comefounderpubutil;

import javautilArrayList;

import javautilVector;

/

  字符串处理工具类

  @author xiewanzhi

 /

public class StringFunction {

public static String convertFromStringArrayToStringBySymbol(String[] stringArray, char symbol) {

StringBuffer sb = new StringBuffer();

for (int i = 0; i < stringArraylength; i++) {

sbappend(stringArray[i]);

sbappend(symbol);

}

return sbtoString();

}

public static String[] convertFromStringToStringArrayBySymbol(String string, String symbol) {

Vector stringVector = convertFromStringToStringVectorBySymbol(string, symbol);

String[] stringArray = new String[stringVectorsize()];

for (int i = 0; i < stringVectorsize(); i++)

stringArray[i] = (String) (stringVectorelementAt(i));

return stringArray;

}

public static String[] convertFromStringToStringArrayBySymbolNO(String string, String symbol) {

Vector stringVector = convertFromStringToStringVectorBySymbolNO(string, symbol);

String[] stringArray = new String[stringVectorsize()];

for (int i = 0; i < stringVectorsize(); i++)

stringArray[i] = (String) (stringVectorelementAt(i));

return stringArray;

}

public static Vector convertFromStringToStringVectorBySymbol(String string, String symbol) {

Vector stringVector = new Vector();

String[] array = stringsplit(symbol);

for (int i = 0; i < arraylength; i++) {

stringVectoraddElement(array[i]);

}

return stringVector;

}

public static Vector convertFromStringToStringVectorBySymbolNO(String string, String symbol) {

Vector stringVector = new Vector();

String[] array = stringsplit(symbol);

for (int i = 0; i < arraylength; i++) {

stringVectoraddElement(array[i]);

}

return stringVector;

}

public static String convertFromStringVectorToStringBySymbol(Vector stringVector, char symbol) {

StringBuffer sb = new StringBuffer();

for (int i = 0; i < stringVectorsize(); i++) {

sbappend(stringVectorelementAt(i));

sbappend(symbol);

}

return sbtoString();

}

public static String fillString(String psStr, char psC, int psLen) {

if (psStrlength() > psLen) {

return psStrsubstring(0, psLen);

} else {

char[] vcTemp = new char[psLen];

for (int i = 0; i < psLen; i++) {

vcTemp[i] = psC;

}

String vsTemp = new String(vcTemp);

String vsResult = psStrconcat(vsTemp);

return vsResultsubstring(0, psLen);

}

}

public static String formatValue(double value, int sep, char ch, int round) {

return "";

}

public static String GB2Uni(String original) {

if (original != null) {

try {

return new String(originalgetBytes("GBK"), "ISO8859_1");

} catch (Exception e) {

eprintStackTrace();

return null;

}

} else

return null;

}

public static String Uni2GB(String original) {

if (original != null) {

try {

return new String(originalgetBytes("ISO8859_1"), "GBK");

} catch (Exception e) {

eprintStackTrace();

return null;

}

} else

return null;

}

public static String generateID(String pre, int value, int num) {

char chs[] = new char[num];

for (int i = 0; i < num; i++) {

chs[num - i - 1] = (char) (48 + value % 10);

value = value / 10;

}

return pretrim() + new String(chs);

}

public static String getTempStr() {

return StringvalueOf(SystemcurrentTimeMillis());

}

public static boolean isIncludeString(String psStr, String psS) {

int viPos = psStrindexOf(psS);

return viPos >= 0;

}

public static String replaceString(String psStr, String psS, String psD) {

int viPos = psStrindexOf(psS);

if (viPos < 0)

return psStr;

int viLength = psSlength();

StringBuffer vsValue = new StringBuffer();

while (viPos >= 0) {

vsValueappend(psStrsubstring(0, viPos));

vsValueappend(psD);

psStr = psStrsubstring(viPos + viLength);

viPos = psStrindexOf(psS);

}

vsValueappend(psStr);

return vsValuetoString();

}

public static String[] splitStringByToken(String vsStr, String symbol) {

String vsString[] = { "", "" };

int viPos1;

viPos1 = vsStrindexOf(symbol);

if (viPos1 < 0) {

vsString[0] = vsStr;

vsString[1] = "";

return vsString;

}

vsString[0] = vsStrsubstring(0, viPos1);

vsString[1] = vsStrsubstring(viPos1 + symbollength(), vsStrlength());

return vsString;

}

public static Vector convertFromStringToStringVectorByString(String string, String symbol) {

Vector stringVector = new Vector();

String vsStr = stringtrim();

String vsTemp = null;

String[] st = null;

while ((!vsStrequals("")) && isIncludeString(vsStr, symbol)) {

st = splitStringByToken(vsStr, symbol);

vsTemp = st[0]trim();

if (!vsTempequals(""))

stringVectoraddElement(vsTemp);

vsStr = st[1]trim();

}

if (!vsStrequals(""))

stringVectoraddElement(vsStr);

return stringVector;

}

public static String getTempStr(int length) {

String str = StringvalueOf(SystemcurrentTimeMillis());

return strsubstring(strlength() - length);

}

public static Vector convertFromStringToStringVectorByStringWithNull(String string, String symbol) {

Vector stringVector = new Vector();

String vsStr = stringtrim();

String vsTemp = null;

String[] st = null;

while ((!vsStrequals("")) && isIncludeString(vsStr, symbol)) {

st = splitStringByToken(vsStr, symbol);

vsTemp = st[0]trim();

stringVectoraddElement(vsTemp);

vsStr = st[1]trim();

}

if (!vsStrequals(""))

stringVectoraddElement(vsStr);

return stringVector;

}

public static String DelZeroForBM(String Bm, int Js, String Struct) {

int i, Len, Length;

Len = Bmlength();

Length = GetStructLength(Struct, Js);

if (Len >= Length) {

Bm = Bmsubstring(0, Length);

}

return Bm;

}

public static String FillZeroForBM(String Bm, String Struct) {

int i, Len, Length;

Len = Bmlength();

Length = GetStructLength(Struct, 0);

for (i = 0; i < Length - Len; i++) {

Bm += "0";

}

return Bm;

}

public static int getJsByCodingStruct(String code, String struct) {

int codeLength = codelength();

int structLength = structlength();

int tempLength = 0;

for (int js = 1; js <= structLength; js++) {

tempLength = GetStructLength(struct, js);

if (codeLength == tempLength)

return js;

}

return 0;

}

public static int GetStructLength(String Struct, int JS) {

int i, Length = 0;

String sub;

Integer ii;

if (JS == 0)

JS = Structtrim()length();

for (i = 0; i < JS; i++) {

sub = Structsubstring(i, i + 1)trim();

ii = Integerdecode("0x" + sub);

// Length += Integer parseInt(sub);

Length += iiintValue();

}

return Length;

}

public static String GetSubBMfromBM(String BM, String Struct, int SJS) {

String Res = "";

int Len;

Len = GetStructLength(Struct, SJS);

if (BMlength() >= Len)

Res = BMsubstring(0, Len);

return Res;

}

public static String FillZeroFromBegin(int num, int leng) {

return FillTagFromBegin(StringvalueOf(num), leng, "0");

}

public static String FillTagFromBegin(String num, int leng, String Tag) {

String Res = "", tempStr1 = "", tempStr2 = "";

tempStr1 = StringvalueOf(num);

for (int i = 0; i < (leng - tempStr1length()); i++) {

tempStr2 += Tag;

}

Res = tempStr2 + tempStr1;

return Res;

}

public static String ClearBMZero(String BM, String BMStruct) {

return ClearBMTag(BM, BMStruct, "0");

}

public static String ClearBMTag(String BM, String BMStruct, String Tag) {

int JSLen = BMStructlength();

String bm = "", ZERO, Tmp;

int Len;

for (int i = 1; i <= JSLen; i++) {

Tmp = BMStructsubstring(i - 1, i);

Len = IntegerparseInt(Tmp);

ZERO = RepeatChar(Tag, Len);

if (!BMstartsWith(ZERO)) {

bm += BMsubstring(0, Len);

BM = BMsubstring(Len);

} else

break;

}

return bm;

}

public static String RepeatChar(String c, int len) {

String Res = "";

for (int i = 0; i < len; i++) {

Res += c;

}

return Res;

}

/

  key1=value1;key2=value2;key3=value3

  

  @param inputString String

  @param hashMap Map

 /

public static void String2HashMap(String inputString, javautilMap hashMap) {

String[] keyValues = StringFunctionconvertFromStringToStringArrayBySymbolNO(inputString, ";");

String[] keyValue;

String key, value;

for (int i = 0; i < keyValueslength; i++) {

if (!""equals(keyValues[i])) {

keyValue = StringFunctionconvertFromStringToStringArrayBySymbolNO(keyValues[i], "=");

if (keyValuelength < 2)

continue;

key = keyValue[0];

value = "";

for (int k = 1; k < keyValuelength; k++) {

value += keyValue[k];

}

hashMapput(key, value);

}

}

}

/

 

  @param hashMap

             Map

  @return String

 /

public static String HashMap2String(javautilMap hashMap) {

Object[] keys = hashMapkeySet()toArray();

String key, value, keyValue = "";

for (int i = 0; i < keyslength; i++) {

key = (String) keys[i];

value = (String) hashMapget(key);

keyValue += key + "=" + value + ";";

}

if (keyValuelength() > 0) {

keyValue = keyValuesubstring(0, keyValuelength() - 1);

}

return keyValue;

}

/

 

  @param value

             String

  @param mark

             String

  @return String[]

 /

public static String[] split(String value, String mark) {

int index = valueindexOf(mark);

javautilList list = new ArrayList();

while (index >= 0) {

listadd(valuesubstring(0, index));

value = valuesubstring(index + marklength());

index = valueindexOf(mark);

}

listadd(value);

String[] rtn = new String[listsize()];

Systemarraycopy(listtoArray(), 0, rtn, 0, rtnlength);

return rtn;

}

public static void main(String[] args) {

String value = "a;;;; ";

String[] rtn = split(value, ";;");

Systemoutprintln(rtn);

}

}

你可以加一个ini文件处理,就是每次开始程序是都到ini 或者 txr 文件中读取你那个密码 ,在更改时写入你更改的密码到ini 或者 txt 文件中 ,ini的编程很简单 你上网查一下就明白了

1、if(amt < 10)return

2、

long checkInt(char amtstr)

{

long errflag = 0;

char p = NULL;

//查找小数点

p = strstr(amtstr, "");

p++;

for(i = 0; i < strlen(p);i++)

{

if(p[0] != 0)

{

errflag = 1;

break;

}

}

p = NULL;

if(1 == errflag)

{

fprintf(stderr, "金额必须为整数");

return -1;

}

return 0;

}

下面的是我自己写的一个, 里面很多细节都没有进行细致的处理, 只是粗略的实现了基本的功能

后面有我的测试数据, 希望能有帮助

#include <stdioh>

#include <stdlibh>

#include <stringh>

typedef struct _account

{

char UID;

char pwd;

int balance;

char UName;

}ACCOUNT, PACCOUNT;

void InitAccount(PACCOUNT pA); // 初始化账户

void showAccount(ACCOUNT A, bool flag); // 显示账户信息, flag表示是否显示全部信息 如果是true则需要输入用户密码

bool deposite(PACCOUNT pA); // 存钱, 内部需要密码验证并输入金额

bool withDraw(PACCOUNT pA); // 取钱, 内部需要密码验证并输入金额

bool transfer(PACCOUNT pA, PACCOUNT pB); // 转账, 需要密码验证, 并输入金额

bool conduct(PACCOUNT pA, int chose, PACCOUNT pB); // 处理, 就是根据菜单项处理用户的 *** 作选择

void modifyPwd(PACCOUNT pA); // 更改用户密码

bool Authentication(PACCOUNT pA); // 密码认证, 3次机会输入密码

void memFree(PACCOUNT pA, PACCOUNT pB); // 在堆上分配的内存的释放

int main(void)

{

// 建立两个账户, 分别是 *** 作账户和接受转账的账户

PACCOUNT pMainAcc = (PACCOUNT)malloc(sizeof(ACCOUNT));

PACCOUNT pAssistAcc = (PACCOUNT)malloc(sizeof(ACCOUNT));

// 初始化两个账户的信息

InitAccount(pMainAcc);

InitAccount(pAssistAcc);

// 进行菜单控制, 提供用户 *** 作

int chose = -1;

while(chose != 0)

{

printf("\n1 存钱\t2 取钱\t3 转账\t4 更改密码\t5 显示账户信息\t0退出\n");

scanf("%d", &chose);

conduct(pMainAcc, chose, pAssistAcc);

}

return 0;

}

bool conduct(PACCOUNT pA, int chose, PACCOUNT pB)

{

bool rtnflag = true;

switch(chose)

{

case 1:

if(!deposite(pA))

printf(" *** 作失败!");

else

printf(" *** 作成功!");

break;

case 2:

if(!withDraw(pA))

printf(" *** 作失败!");

else

printf(" *** 作成功!");

break;

case 3:

if(!transfer(pA, pB))

printf(" *** 作失败!");

else

printf(" *** 作成功!");

break;

case 4:

modifyPwd(pA);

break;

case 5:

showAccount(pA, true);

break;

case 0:

rtnflag = false;

memFree(pA, pB);

break;

}

return rtnflag;

}

void InitAccount(PACCOUNT pA)

{

printf("请初始化账户名, 密码, 姓名, 账户余额\n");

pA->UID = (char )malloc(sizeof(char)20);

pA->pwd = (char )malloc(sizeof(char)20);

pA->UName = (char )malloc(sizeof(char)20);

gets(pA->UID);

gets(pA->pwd);

gets(pA->UName);

scanf("%d", &pA->balance);

getchar();

return ;

}

void showAccount(ACCOUNT A, bool flag)

{

if(flag)

{

int i = 0;

getchar();

char tmpPwd = (char )malloc(sizeof(char)20);

while(strcmp(tmpPwd, Apwd))

{

printf("请输入账户%s的密码:\n", AUID);

gets(tmpPwd);

if(++i > 3)

{

printf("对不起, 密码输入错误!只能显示部分信息!\n");

showAccount(A, false);

free(tmpPwd);

return ;

}

}

printf("账户信息如下:\n账户名\t账户密码\t账户余额\t姓名\n");

printf("%6s\t%8s%8d\t%8\ts\n", AUID, Apwd, Abalance, AUName);

free(tmpPwd);

}

else

{

printf("账户信息如下:\n账户名\t账户余额\t姓名\n");

printf("%6s\t%8d\t%4s\n", AUID, Abalance, AUName);

}

return ;

}

bool deposite(PACCOUNT pA)

{

if(!Authentication(pA))

return false;

int val = 0;

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

scanf("%d", &val);

pA->balance += val;

return true;

}

bool withDraw(PACCOUNT pA)

{

if(!Authentication(pA))

return false;

printf("请输入金额");

int val = 0;

scanf("%d", &val);

if(pA->balance >= val)

{

pA->balance -= val;

}

else

{

printf("对不起, 余额不足!");

return false;

}

return true;

}

bool transfer(PACCOUNT pA, PACCOUNT pB)

{

if(!Authentication(pA))

return false;

printf("请输入金额");

int val = 0;

scanf("%d", &val);

if(pA->balance >= val)

{

pA->balance -= val;

pB->balance += val;

}

else

{

printf("对不起, 余额不足!");

return false;

}

return true;

}

void modifyPwd(PACCOUNT pA)

{

if(Authentication(pA))

{

printf("请输入新的密码!");

free(pA->pwd);

pA->pwd = (char )malloc(sizeof(char)20);

gets(pA->pwd);

}

else

{

printf("对不起, 您没有权限进行密码修改!");

}

}

bool Authentication(PACCOUNT pA)

{

getchar();

int i = 0;

char tmpPwd = (char )malloc(sizeof(char)20);

while(strcmp(tmpPwd, pA->pwd))

{

printf("请输入%s的密码, 3次机会:\n", pA->UID);

gets(tmpPwd);

if(++i == 3)

{

return false;

}

}

return true;

}

void memFree(PACCOUNT pA, PACCOUNT pB)

{

free(pA);

free(pB);

return ;

}

/

运行环境: VC60

请初始化账户名, 密码, 姓名, 账户余额

wed

qweasd

wednesday

800

请初始化账户名, 密码, 姓名, 账户余额

hu

sad

huni

200

1 存钱 2 取钱 3 转账 4 更改密码 5 显示账户信息 0退出

1

请输入wed的密码, 3次机会:

qwe

请输入wed的密码, 3次机会:

qweasd

请输入金额:

54

*** 作成功!

1 存钱 2 取钱 3 转账 4 更改密码 5 显示账户信息 0退出

5

请输入账户wed的密码:

qwe

请输入账户wed的密码:

qweasd

账户信息如下:

账户名 账户密码 账户余额 姓名

wed qweasd 854 s

1 存钱 2 取钱 3 转账 4 更改密码 5 显示账户信息 0退出

4

请输入wed的密码, 3次机会:

123

请输入wed的密码, 3次机会:

qweasd

请输入新的密码!123qwe

1 存钱 2 取钱 3 转账 4 更改密码 5 显示账户信息 0退出

1

请输入wed的密码, 3次机会:

qweasd

请输入wed的密码, 3次机会:

123qwe

请输入金额:

43

*** 作成功!

1 存钱 2 取钱 3 转账 4 更改密码 5 显示账户信息 0退出

5

请输入账户wed的密码:

123qwe

账户信息如下:

账户名 账户密码 账户余额 姓名

wed 123qwe 897 s

1 存钱 2 取钱 3 转账 4 更改密码 5 显示账户信息 0退出

0

Press any key to continue

/

#include <stdioh>

void main()

{

char c, s[100];

int i = 0;

while((c=getch())!='\r')

{

s[i] = c;

printf("");

i++;

}

s[i]='\0';

printf("\n你的输入字符为:%s\n", s);

}

输入完成按回车,会显示你输入的内容。

scanf会直接回显输入的字符,无法实现你所需要的功能,要用缓冲字符输入用getchar

因为你用的scanf("%ld",&m);所以会把40赋值给m,如果你要判断的话,可以利用

ltoa函数来先将数字转换成对应的字符串,如果不知道这个函数怎么用的自己上网查。

接着判断这个字符串是不是有小数点,可以用函数strchr(str,'');不清楚用法的话也可以上网查。

至于自动返回上层,因为你把所有的步骤都写到了一个函数中,所以这是没有很好的办法回到上一个,虽然有个goto的用法,不过不推荐用,你应该把每个可以分开的步骤都封装成一个函数,然后主函数中来调用这些函数,这样的程序比较整体,而且容易排错。

用printf 一类的输出语句,在命令行做界面

因为你不可能读卡,所以只能是手动输入账户和密码

这就需要你保存一个列表

于是 大致功能

1 登陆

2 退出

3 查询余额

4 取钱。

就这么四个 足够了。

转账什么的 就算了。

以上就是关于用C语言写一个类似于ATM机的程序,有开户(姓名,密码),存款,取款,查询余额,转账的功能,全部的内容,包括:用C语言写一个类似于ATM机的程序,有开户(姓名,密码),存款,取款,查询余额,转账的功能,、怎么用C语言编写模拟ATM机、求C语言编写ATM机程序的,几个调用函数,小弟谢谢诸位大哥等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/9993885.html

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

发表评论

登录后才能评论

评论列表(0条)

保存