zoukankan      html  css  js  c++  java
  • 随笔4

    ATM管理系统

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

    编写一个ATM管理系统,语言不限,要求应包括以下主要功能:
    (1)开户,销户
    (2)查询账户余额
    (3)存款
    (4)取款
    (5)转账(一个账户转到另一个账户)等...

    二、代码提交
    (1)开户
    void OpenaAcount()//开户
    {
    if (uActual == topNum)
    {
    printf("系统存储已达上线,不能开户");
    return;
    }
    printf("正在开户中…… ");
    printf("系统生成账号为:");
    creatAccNum(uActual);//生成账号
    printf("请输入姓名:");
    scanf("%s", nameGroup[uActual]);//存入用户名
    if (createPWd(uActual) == 1)//创建密码并校验
    {
    printf("请输入存款金额:");
    scanf("%lf", &balance[uActual]);
    printf("您已经存入%lf元", balance[uActual]);
    users[uActual][1] = 0;//写入状态代号为正常,0表示
    uActual++;
    }
    else
    {
    printf("返回系统选项 ");
    }
    }
    (2)销户
    void AccountCancellation()//销户
    {

    int site;//查找位置
    if ((site = verifyAll()) != -1)
    {
        printf("你的账户余额为%0.2lf元
    ", balance[site]);
        printf("是否销户Y/N:");
        if (tolower(getchar()) == 'y')
        {
            users[site][1] = 2;//销户
            printf("销户成功
    ");
        }
        else
        {
            printf("销户失败
    ");
        }
    }
    else
    {
        printf("
    失败
    ");
    }
    return;
    

    }
    (3)查余
    void Qurey()//查询
    {
    int site;
    if ((site = verifyAll()) != -1)//身份验证
    {
    printf("账户余额为%lf", balance[site]);
    }
    }
    (4)存款
    void Deposit()//存款
    {
    int site;
    double uMoney;
    if ((site = verifyAll()) != -1)//身份验证
    {
    printf("请输入存款金额:");
    scanf("%lf", &uMoney);
    balance[site] += uMoney;
    printf("已存款%0.2lf元 余额为%0.2lf元 ", uMoney, balance[site]);
    }
    }
    (5)取款
    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(" 余额不足");
    }
    }
    (6)转账
    void transferMoney(){
    system("cls");//清屏
    int username;//账号
    int isFind=0;
    int RMB;//转账金额
    printf(" 您正在使用转账功能");
    printf(" 请输入对方的帐号:");
    scanf("%d",&username);
    for(int i=0;i<count;i++){
    if(usernameuser[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(" 目标帐号不存在");
    }
    }

    源码

    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(m1)
    {
    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(i2)
    {
    x=200;
    }
    else
    if(i
    3)
    {
    x=500;
    }
    else
    if(i4)
    {
    x=1000;
    }
    else
    if(i
    5)
    {
    x=2000;
    }
    else
    if(i6)
    {
    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();
    }

    三、运行截图
    系统界面

    功能界面

    四、个人小结
    1.

    psp 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
    Planning 计划 20 30
    Estimate 估计这个任务需要多少时间,并规划大致工作步骤 10 10
    Development 开发 120 130
    Analysis 需求分析(包括学习新技术) 12 15
    Design Spec 生成设计文档 5 6
    Design Review 设计复审 5 5
    Coding Standard 代码规范 3 4
    Design 具体设计 12 16
    Coding 具体编码 35 40
    Code Review 代码复审 5 6
    Test 测试(自我测试,修改代码,提交修改) 10 15
    Reporting 报告 10 12
    Test Report 测试报告 6 12
    Size Measurement 计算工作量 20 25
    Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 15 15
    2.编程能力的提升是一个长期的过程;计划与实际总有所偏差,我们要做的就是缩短二者之间的距离。
  • 相关阅读:
    C++ 如何判断所调用的重载函数
    C++ 入门5 类和动态内存分配(一)
    c#动态创建ODBC数据源
    设为首页,加入收藏,联系我们
    ASP.NET 2.0中CSS失效
    typedef的四个用途和两个陷阱(转)
    VC++实现应用程序对插件的支持(转)
    DOM无关事件
    How to Migrate from WCF Web API to ASP.NET Web API
    Using ASP.NET Web API with ASP.NET Web Forms
  • 原文地址:https://www.cnblogs.com/xuexiaomeng/p/13997339.html
Copyright © 2011-2022 走看看