zoukankan      html  css  js  c++  java
  • 个人作业三-ATM管理系统

    ATM管理系统

    这个作业属于哪个课程https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/
    这个作业要求在哪里 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11478
    这个作业的目标 培养对于一个完整作业流程和相关数据的处理能力
    学号 3180701301

     

     

     

     

     

    题目要求:

    编写一个ATM管理系统,语言不限,要求应包括以下主要功能:

    (1)开户,销户

    (2)查询账户余额

    (3)存款

    (4)取款

    (5)转账(一个账户转到另一个账户)等...

    允许网上查询参考,但请注意不要直接抄袭,可以理解看懂别人的代码,再自己编写
    代码提交:

    (1)开户,销户

    void regist(){
        system("cls");//清屏
        char rePass[7];
        printf("
    
    
    
    				请输入用户名:");
        //要使用一个字符串接收输入的用户名
        fflush(stdin);//刷新字符缓冲区
        gets(user[count].name);//读取字符串,回车结束
        while(1){
            while(1){
                printf("
    
    				请输入密码:");
                fflush(stdin);//清空输入缓冲区
                inputPass(user[count].pass);
                int length=strlen(user[count].pass);//计算字符串长度,其返回值是一个整数
                if(length==6){
                    break;
                }else{
                    printf("
    
    				密码输入有误!请输入6位密码");
                }
            }
            printf("
    
    				请再次输入密码:");
            fflush(stdin);//清空输入缓冲区
            inputPass(rePass);
            if(strcmp(rePass,user[count].pass)==0){
                break;
            }else{
                printf("
    
    				两次密码输入不一致,请重新输入");
            }
        }
        account=account+1;
            user[count].account=account;
        user[count].money=0;
        system("cls");//清屏
        printf("
    
    
    
    				注册成功
    ");
        printf("
    
    				您的账号为:%d
    ",user[count].account);
        if(count>=1){
            printf("
    
    				前一个注册的账号为:%d
    ",user[count-1].account);
        }
    count++;
    }
    void logout(){
        system("cls");//清屏
        char confirm;//confirm 确认
        printf("
    
    
    
    		您正在使用注销功能");
        printf("
    
    
    
    		%d确认注销?",user[find].account);
        fflush(stdin);//清空输入缓冲区
        scanf("%c",&confirm);
        if(confirm=='y'||confirm=='Y'){
            printf("
    
    
    
    		正在注销%d",user[find].account);
            isLogout=1;
        }else{
            printf("
    
    
    
    		取消注销帐号%d,返回服务界面",user[find].account);
            isLogout=0;
        }
    }

    (2)查询账户余额

    void selectMoney(){
        system("cls");//清屏
        printf("
    
    
    
    				您正在使用查询余额功能");
        printf("
    
    				您的账户余额为:%lf",user[find].money);
    }

    (3)存款

    void saveMoney(){
        system("cls");//清屏
        printf("
    
    
    
    				您正在使用存款功能");
        int RMB;
        printf("
    
    				请输入存款金额:");
        scanf("%d",&RMB);
        user[find].money=user[find].money+RMB;
        printf("
    
    				存款成功");
    }

    (4)取款

    void getMoney(){
        system("cls");//清屏
        printf("
    
    
    
    		您正在使用取款功能");
        int RMB;
        printf("
    
    		请输入取款金额:");
        scanf("%d",&RMB);
        if(user[find].money>=RMB){
            user[find].money=user[find].money-RMB;
            printf("
    
    		取款成功");
        }else{
                printf("
    
    		余额不足");
        }
    }

    (5)转账(一个账户转到另一个账户)

    void transferMoney(){
        system("cls");//清屏
        int username;//账号
        int isFind=0;
        int RMB;//转账金额
        printf("
    
    
    
    		您正在使用转账功能");
        printf("
    
    		请输入对方的帐号:");
        scanf("%d",&username);
        for(int i=0;i<count;i++){
            if(username==user[i].account){
                dFind=i;
                isFind=1;
                break;
            }
        }
        if(isFind==1){
            printf("
    
    		请输入转账金额:");
            scanf("%d,",&RMB);
            if(user[find].money>=RMB){
                user[find].money=user[find].money-RMB;
                user[dFind].money=user[dFind].money+RMB;
                printf("
    
    		转账成功");
            }else{
                printf("
    
    		余额不足");
            }
        }else{
            printf("
    
    		目标帐号不存在");
        }
    }

    (6)功能界面

    void service(){
        char choise;
        while(1){
            system("cls");
            printf("
    
    
    
    		A、查询余额");
            printf("
    
    		B、存款");
            printf("
    
    		C、取款");
            printf("
    
    		D、转账");
            printf("
    
    		E、修改密码");
            printf("
    
    		F、注销");
            printf("
    
    		G、退出系统");
            printf("
    
    		请选择:");
            fflush(stdin);//清屏
            scanf("%c",&choise);
            switch(choise){
                case 'a':
                case 'A':
                    selectMoney();break;//查询余额
                case 'b':
                case 'B':
                    saveMoney();break;//存款
                case 'c':
                case 'C':
                        //printf("
    
    		执行取款功能");break;
                    getMoney();break;//取款
                case 'd':
                case 'D':
                    transferMoney();break;//转账
                case 'e':
                case 'E':
                    printf("
    
    		执行修改密码功能");break;
                    //updatePass();break;//修改密码
                case 'f':
                case 'F':
                    logout();
                    if(isLogout==1){
                        return;//直接结束所处函数
                    }
                    break;//注销
                case 'g':
                case 'G':
                    quit();break;//退出系统
                default:
                    printf("
    
    		您的输入有误,请重新输入!");break;
            }
            printf("
    
    		按任意键继续");
            getch();//不回显函数,不需按回车
        }
    }

    源码:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <windows.h>
    #define NUM 1001
    void denglu();
    void shezhi();
    void enter();
    void enter2();
    void tuichu();
    void zhuanzhang();
    void chaxun();
    void qukuan();
    void cunkuan();
    void xiugai();
    void load();
    
    
    int j=0,k;
    
    
    
    
    struct yonghu
    {
    char ID[20];
    char key[20];
    int account;
    }user[NUM];
    void main()
    {
    enter();//进入界面 
    }
    //主函数结束
    void enter()//一级菜单函数
    {
    int a;
    load();
    system("cls");
    printf(" 			      ATM模拟系统
    ");
    printf(" 			  *******************
    ");
    printf("			  |欢迎使用本银行系统|
    ");
    printf(" 			  ********************
    ");
        printf("
    
    ");
    printf("			 ****您将有以下选择****
    ");
    printf("
    
    ");
    printf(" 			  ++++++++++++++++++++
    ");
    printf(" 			  +      1.设置      +
    ");
    printf(" 			  +      2.登录      +
    ");
        printf(" 			  +      3.退出      +
    ");
    printf(" 			  ++++++++++++++++++++
    ");
    printf("
    
    ");
    printf(" 			   |请输入您的操作号| 
    
    				  ");
        scanf("%d",&a);
      switch(a)
    {
    case 1:system("cls");//清屏
    shezhi();
    break;
        case 2:system("cls");
    denglu();
            break;
    case 3:system("cls");
            tuichu();
    break;
    default:printf("				无此操作项
    请重新选择
    ");
    system("pause");
    system("cls");
    enter();
    }
    }
    void load()
    {
    FILE *fp;
        int i;
    if((fp=fopen("data.txt","r"))==NULL)
        {
            printf("不能打开文件
    ");
            return;
        }
        for(i=0;!feof(fp);i++)
        {
            fread(&user[i],sizeof(struct yonghu),1,fp);
        }
        fclose(fp);
        system("cls");
        printf("文件读取成功
    ");
    }
    void save()      
    {
        FILE *fp;
        if((fp=fopen("data.txt","w"))==NULL)
        {
            printf("无法打开文件
    ");
            exit(0);
        }
        fwrite(user,sizeof(struct yonghu),NUM,fp);
        printf("文件写入完成
    ");
        fclose(fp);
    }
    void shezhi()
    {
    char ch;
    if(user[1000].account!=0)
    {
    j=user[1000].account;
    }
    printf("
    
    				请设置您的卡号:
    				  ");
    scanf("%s",user[j].ID);
        printf("
    				请设置您的密码:
    				  ");
            scanf("%s",user[j].key);
              user[j].account=0;
        printf("卡号:%s 
    余额:%4d
    ",user[j].ID,user[j].account);
    user[1000].account=++j;
    save();
    printf("
    
    				恭喜您注册成功!");
    printf("
    
    
    ");
    system("pause");
    printf("				按回车键返回上一级
    ");
        printf("
    
    
    ");
    system("cls");
    ch=getchar();//用来接收最后的回车符
    if(ch=='
    ')
    {
           enter();
    }
    }
    void tuichu()
    {
    printf("			**********谢谢**********
    ");
        printf("			******感谢您的使用******
    ");
        printf("			******欢迎下次光临******
    ");
        printf("			**********再见**********
    ");
        exit(0);
    }
    void denglu()
    {
    int i,n,m;
    char  id[20],kw[20];
    printf("		    连续输错账号或密码三次,将返回主菜单
    ");
    
    for(i=0;i<3;i++)
    {
    printf("请输入登录账号
    ");
    scanf("%s",id);
    for(k=0;k<NUM-1;k++)
    {
    if(strcmp(id,user[k].ID)==0)
    {
    m=1;
    break;
    }
    else
    m=0;
    }
    if(m==0)
    {
    printf("该账号不存在,剩余输入次数%d
    ",2-i);
    if((2-i)==0)
    {
    printf("账号输入错误3次,即将返回菜单......
    ");
    system("pause");
    enter();
    }
    }
    
    if(m==1)
    {
    printf("请输入登录密码
    ");
    for(n=0;n<3;n++)
    {
    scanf("%s",kw);
    if(strcmp(kw,user[k].key)==0)
    {
    system("cls");
    enter2();
    }
    else
    {
    printf("密码输入错误,剩余输入次数%d
    ",2-n);
    if((2-n)==0)
    {
    printf("密码输入错误3次,即将返回菜单......
    ");
    system("pause");
    enter();
    }
    }
    }
    }
    }
    }
    void enter2()
    {
    int n;
    do
    {
    printf("
    
    
    ");
    printf(" 			+++++++++++++++++++++++++++++
    ");
    printf(" 			+  A T M 系 统 个 人 界 面  +
    ");
    printf(" 			+     您 有 以 下 选 择     +
    ");
    printf(" 			+++++++++++++++++++++++++++++
    ");
    printf(" 			    ++++++++++++++++++++
    ");
    printf(" 			    #     1.  查询     #
    ");
    printf(" 			    #     2.  取款     #
    ");
        printf(" 			    #     3.  转账     #
    ");
    printf(" 			    #     4.  存款     #
    ");
    printf(" 			    #     5.修改密码   #
    ");
    printf(" 			    #     6.返回目录   #
    ");
    printf(" 			    ++++++++++++++++++++
    
    				  ");
    scanf("%d",&n);
        switch(n)
    {
    case 1:system("cls");
    chaxun();
    break;
        case 2:system("cls");
    qukuan();
            break;
    case 3:system("cls");
            zhuanzhang();
    break;
    case 4:system("cls");
            cunkuan();
    break;
    case 5:system("cls");
            xiugai();
    break;
        case 6:system("cls");
            enter();
    break;
    default:printf("				无此操作项
    
    ");
    system("pause");
    system("cls");
    }
    }while(n>4&&n<0);
    }
    
    
    void chaxun()
    {
    char ch;
    printf("			******欢迎使用查询服务******
    ");
    printf("			     您的余额为%d元
    
    ",user[k].account);
    system("pause");
        system("cls");
    printf("
    
    
    ");
    ch=getchar();//用来接收最后的回车符
    if(ch=='
    ')
    {
    enter2();
    }
    }
    void qukuan()
    {
    int i,x;
    char a,ch;
    printf(" 			+++++++++++++++++++++++++++++++
    ");
    printf(" 			+  本银行最低取款金额为100元  +
    ");
        printf(" 			+       您卡号的余额为        +
    ");
    printf(" 			+       %d元                  +
    ",user[k].account);
    printf(" 			+    请选择你要提取的金额:    +
    ");
    printf(" 			+    1: 100元     2:200元     +
    ");
    printf(" 			+    3.500元      4:1000元    +
    ");
    printf(" 			+    5:2000元     6:5000元    +
    ");
    printf(" 			+        7: 自定义金额        +
    ");
    printf(" 			+++++++++++++++++++++++++++++++
    
    				      ");
    scanf("%d",&i);
    if(i==1)   
    {
        x=100;
    }
    else
    if(i==2)
    {
        x=200;
    }
    else
    if(i==3)
    {
        x=500;
    }
    else
    if(i==4)
    {
        x=1000;
    }
    else
    if(i==5)
    {
        x=2000;
    }
    else
    if(i==6)
    {
        x=5000;
    }
    else
    if(i==7)
    {
    printf("				请输入自定义的金额:
    				  ");
    scanf("%d",&x);
    }
    if(x<=user[k].account)
    {
    user[k].account=user[k].account-x;
    printf(" 				您取了%d元钱
    ",x);
                printf(" 				您的余额为%d元
    ",user[k].account);
    }
           else if(x>user[k].account)
    {
    printf("				您卡里的余额不足
    ");
    printf("				请重新输入提取金额:
    ");
    }
    printf(" 				请选择是否继续取款
    ");
        printf(" 				是:Y          否:N
    
    				  ");
    scanf("%s",&a);
    if(a=='Y')
    {
    save();
    qukuan();
    }
    else
    if(a=='N')
    {
    save();
    system("pause");//冻结屏幕
    system("cls");
    printf("
    
    
    ");
    }
    else
    {
    save();
    system("pause");//冻结屏幕
    system("cls");
    printf("
    
    
    ");
    }
    ch=getchar();//用来接收最后的回车符
    if(ch=='
    ')
    {
    system("cls");
    enter2();
            }
    }
    
    
    void cunkuan()
    {
    int a;
    printf("				请输入存入账户的金额:
    
    				  ");
    scanf("%d",&a);
    user[k].account=user[k].account+a;
    save();
    printf(" 				您的余额为%d元
    ",user[k].account);
    system("pause");//冻结屏幕
    system("cls");
    printf("
    
    
    ");
    enter2();
    }
    
    
    void xiugai()
    {
    printf("				请输入新的密码
    				  ");
    scanf("%s",user[k].key);
    save();
        system("pause");//冻结屏幕
    system("cls");
    printf("
    
    
    ");
    enter2();
    }
    
    
    void zhuanzhang()
    {
    int a,b,c,x;
    char kahao[20];
    printf("			       请输入转账卡号:
    				  ");
    scanf("%s",kahao);
    for(a=0;a<NUM-1;a++)
    {
    if(!strcmp(kahao,user[a].ID))
    {
    printf("				  卡号正确
    
    ");
    break;
    }
    }
    if(strcmp(kahao,user[a].ID))
    {
    printf("				  卡号不存在
    
    ");
    system("pause");
    zhuanzhang();
    }
    printf("				请输入转账金额
    				    ");
    scanf("%d",&x);
    if(x>user[k].account)
    {
    printf("				您卡里的余额不足
    ");
    printf("				请重新输入提取金额:
    ");
    }
    else
    {
    user[k].account=user[k].account-x;
    user[a].account=user[a].account+x;
    save();
    }
    system("pause");//冻结屏幕
    system("cls");
    printf("
    
    
    ");
    enter2();
    }

    运行截图:

    系统界面:

     开户:

     

    功能界面:

    查询账户余额:

    取款:

    转账:

     个人小结:

    通过这次作业对结对编程有了一个大概的了解,由于对结对编程还不够熟练 ,所以对现在的我来说我还是比较喜欢一个人编程。

    psp2.1任务内容计划完成需要的时间实际完成需要的时间
    planning 计划 15 15
    estimate 估计这个任务需要多少时间,并规划大致工作步骤 15 30
    development 开发 20 25
    analysis 需求分析 16 16
    design spec 生成设计文档 21 12
    design review 设计复审 6 5
    coding standard 代码规范 5 5
    design 具体设计 10 16
    coding 具体编码 35 35
    code review 代码复审 6 8
    test 测试 10 8
    reporting 报告 6 10
    test reporting 测试报告 3 2
    size measurement 计算工作量 3 2
    postmortem & process improvement plan 总结并提出改进计划 5 8
  • 相关阅读:
    open_basedir restriction in effect,解决php引入文件权限问题 解决方法
    Linux增加虚拟内存方法
    centos下kill、killall、pkill命令区别
    正则表达式全集
    Mysql中外键的 Cascade ,NO ACTION ,Restrict ,SET NULL
    配置frp实现内网穿透
    解决微信授权回调页面域名只能设置一个的问题 [php]
    高性能Mysql主从架构的复制原理及配置详解
    【Git】工作中99%能用到的git命令
    SVN服务器搭建和使用
  • 原文地址:https://www.cnblogs.com/yuwenhan/p/13996303.html
Copyright © 2011-2022 走看看