课程设计 【银行系统】

来源:互联网 发布:wp8软件下载 编辑:程序博客网 时间:2024/06/09 20:44
/*********************************************************** *版权所有 (c)2017,lizhaoyang *文件名称:main.cpp
*文件标识:无 *内容:调用fistshow函数*其他说明: *作者:黎兆阳*完成日期:20171224*修改记录:无 
**************************************************************/

main.cpp: 

#include "shows.h"int main(){   FirstShow();    return 0;}
/*********************************************************** *版权所有 (c)2017,lizhaoyang *文件名称:shows.cpp
*文件标识:无 *内容:各种界面函数*其他说明: *作者:黎兆阳*完成日期:20171224*修改记录:无 
**************************************************************/

shows.cpp:

#include <iostream>#include "function.h"#include "shows.h"#include "linklist.h"using namespace std;//FirstShowvoid FirstShow(){    LinkList *L ;        InitList (L);//初始化线性表        int i=1;    //定义变量i保证顺序将数据插入链表        MidShow(L,i); //主页面}//主界面void MidShow(LinkList *L,int i){        cout<<"                     **********************************"<<endl;        cout<<"                     *                                *"<<endl;        cout<<"                     *      欢迎进入银行系统主页面    *"<<endl;        cout<<"                     *                                *"<<endl;        cout<<"                     **********************************"<<endl<<endl;        cout<<"                                 1 注册"<<endl;        cout<<"                                 2 登录"<<endl;int cmd;//操作类型之界面选择cin>>cmd;    switch(cmd){case 1: Sign(L,i); //输入1注册break;case 2:     //输入2选择界面    ChooseShow(L,i);break;default:break;}}//注册界面void Sign(LinkList *L,int i){    cout<<"                     **********************************"<<endl;        cout<<"                     *                                *"<<endl;        cout<<"                     *      欢迎进入银行系统注册页面  *"<<endl;        cout<<"                     *                                *"<<endl;        cout<<"                     **********************************"<<endl<<endl;cout<<"                            注册客户**** 1"<<endl;cout<<"                            返回上一页面 0"<<endl;       int cmd; //操作类型cin>>cmd;    switch(cmd){    case 1:       CreatAccount(L,i);//输入1开户break;case 0:    MidShow(L,i);//输入0返回主界面break;default:break;}}//选择界面void ChooseShow(LinkList *L,int i){    cout<<"                     **********************************"<<endl;        cout<<"                     *                                *"<<endl;        cout<<"                     *      欢迎进入银行系统选择页面  *"<<endl;        cout<<"                     *                                *"<<endl;        cout<<"                     **********************************"<<endl<<endl;        cout<<"                              1 客户入口****"<<endl;        cout<<"                              0 返回上一界面"<<endl;int cmd;//操作类型之界面选择cin>>cmd;    switch(cmd){case 1:CustomShow(L,i);break;case 0:    MidShow(L,i);break;default:break;}}//客户界面void CustomShow(LinkList *L,int i){cout<<"                     ┏━━━━━━━━━━━━━┓\n";cout<<"                     ┃     欢迎您使用本系统     ┃\n";cout<<"                     ┃━━━━━━━━━━━━━┃\n";cout<<"                     ┃1. 存钱                   ┃\n";cout<<"                     ┃━━━━━━━━━━━━━┃\n";cout<<"                     ┃2. 取钱                   ┃\n";cout<<"                     ┃━━━━━━━━━━━━━┃\n";cout<<"                     ┃3. 转账                   ┃\n";cout<<"                     ┃━━━━━━━━━━━━━┃\n";cout<<"                     ┃4. 修改密码               ┃\n";cout<<"                     ┃━━━━━━━━━━━━━┃\n";cout<<"                     ┃5. 查询账户余额           ┃\n";cout<<"                     ┃━━━━━━━━━━━━━┃\n";cout<<"                     ┃6. 查询所有账户信息       ┃\n";cout<<"                     ┃━━━━━━━━━━━━━┃\n";cout<<"                     ┃7. 返回主界面             ┃\n";cout<<"                     ┃━━━━━━━━━━━━━┃\n";cout<<"                     ┃0. 返回上一界面           ┃\n";cout<<"                     ┗━━━━━━━━━━━━━┛\n";cout<<"                                                   \n";cout<<"                       输入其他任意数字退出本系统  \n";                              int cmd;  //操作类型                          cin>>cmd;                      switch(cmd)  {    case 1:     SaveMoney(L,i); //存钱       break;    case 2:         GetMoney(L,i);   //取钱       break;    case 3:         MoveMoney(L,i); //转账       break;    case 4:         ModifyPassword(L,i);//密码修改       break;    case 5:         AccountMoney(L,i);//账户余额       break;    case 6:                     cout<<"    id   passwd  money "<<endl;         DispList(L);   //输出线性表L所有信息         CustomShow(L,i); //返回客户选择界面          break;    case 7:          MidShow(L,i);           break;    case 0:        ChooseShow(L,i); //返回选择界面        break;    default:        break;  }}
/*********************************************************** *版权所有 (c)2017,lizhaoyang *文件名称:shows.h
*文件标识:无 *内容:各种界面函数的声明*其他说明: *作者:黎兆阳*完成日期:20171224*修改记录:无 
**************************************************************/

shows.h:

#ifndef SHOWS_H_INCLUDED#define SHOWS_H_INCLUDED#include "linklist.h"void MidShow(LinkList *L,int i);     //主界面void Sign(LinkList *L,int i);        //注册界面void ChooseShow(LinkList *L,int i);  //选择界面void CustomShow(LinkList *L,int i);  //客户界面void FirstShow(); //第一个界面#endif // SHOWS_H_INCLUDED
/*********************************************************** *版权所有 (c)2017,lizhaoyang *文件名称:function.cpp
*文件标识:无 *内容:各种功能函数*其他说明: *作者:黎兆阳*完成日期:20171224*修改记录:无 
**************************************************************/

function.cpp:

#include "linklist.h"#include "shows.h"#include <iostream>using namespace std;//开户函数  函数接口 (头指针L,索引变量i)void CreatAccount(LinkList *L,int i){    cout<<"***欢迎使用开户功能!***"<<endl;    cout<<"请输入您的id!"<<endl;    int id;    cin>>id;    ListInsert(L,i,id);      i++;    cout<<"  请输入您的密码!                    "<<endl;    int passwd;    cin>>passwd;    ListInsert(L,i,passwd);  i++;    cout<<"    请输入您的账户初始金额!            "<<endl;    int money;    cin>>money;     ListInsert(L,i,money);   i++;    cout<<"返回主页面"<<endl;       MidShow(L,i);}//存钱功能 case 1     函数接口 (头指针L,索引变量i)***********************************************************************void SaveMoney(LinkList *L,int i){     int j=0;       //存放姓名的元素位置,id在链表中的位置.     int k;       //三次输入密码判断     int passwds;     int moneys;     int &m=passwds;       //m是passwd的引用     int &n=moneys;  //n是moneys的引用    cout<<"***欢迎使用存款功能!***"<<endl;    cout<<"      请输入您的id!                 "<<endl;    int id;    cin>>id;    j=LocateElem(L,id);//按元素查找 (LinkList *L,ElemType e)返回元素位置    GetElem(L,j+1,m);  //求线性表某个数据元素值,返回的m是真实的密码    GetElem(L,j+2,n);  //求线性表某个数据元素值,返回的n是真实的钱数//j+2代表金额在链表中的位置    for(k=0;k<3;k++)   //输入密码次数小于等于3    {         cout<<"请输入您的密码!!"<<endl;         int passwd;         cin>>passwd;        if(m==passwd)   //密码输入正确       {         cout<<"你的密码输入正确          "<<endl;         cout<<"      请输入您的存款金额!!!                 "<<endl;         int money;            for (;;)   //判断金额是否合法         {              cin>>money;         if (money<=0)         {             cout<<"取款金额不正确,请重新输入"<<endl;         }          else             {              break;              }        }         ListInsert (L,j+2,money+n);         cout<<"您的账户本来余额为"<<n<<endl;         cout<<"您本次存入金额为"<<money<<endl;         cout<<"存款成功***显示总金额后***返回客户选择页面"<<endl;         cout<<"总金额="<<money+n<<endl;         int a=n;  //n是账户原本金额         int &b=a;         ListDelete (L,j+3,b);//在链表中删除原始金额           CustomShow(L,i);           break;       }       else  // 密码输入错误        {            if(2-k>0)   //重复输入密码次数            {                 cout<<"您的密码输入错误,您还有"<<2-k<<"次机会重新输入"<<endl;            }            else     //无输入密码机会             {                cout<<"您用尽了机会,即将返回选择页面"<<endl;                ChooseShow(L,i);             }        }    }}//取钱函数 case 2*   函数接口 (头指针L,索引变量i)**********************************************************************void GetMoney(LinkList *L,int i){     int j=0;       //存放姓名的元素位置,id在链表中的位置.     int k;       //三次输入密码判断     int passwds;     int moneys;     int &m=passwds;       //m是passwd的引用     int &n=moneys;  //n是moneys的引用    cout<<"***欢迎使用取款功能!***"<<endl;    cout<<"      请输入您的id!                 "<<endl;    int id;    cin>>id;    j=LocateElem(L,id);//按元素查找 (LinkList *L,ElemType e)返回元素位置    GetElem(L,j+1,m);  //求线性表某个数据元素值,返回的m是真实的密码    GetElem(L,j+2,n);  //求线性表某个数据元素值,返回的n是真实的钱数 ,j+2代表金额在链表中的位置    for(k=0;k<3;k++)   //输入密码次数小于等于3    {         cout<<"请输入您的密码!!"<<endl;         int passwd;         cin>>passwd;        if(m==passwd)   //密码输入正确       {         cout<<"你的密码输入正确          "<<endl;         cout<<"      请输入您的取款金额!!!                 "<<endl;         int money;         for (;;)   //判断金额是否合法         {              cin>>money;         if (money<=0)         {             cout<<"取款金额不能为负数和0,请重新输入"<<endl;         }         if (money>n)         {             cout<<"您的账户余额不足,请重新输入"<<endl;         }          else             {              break;              }         }         ListInsert (L,j+2,n-money);         cout<<"您的账户本来余额为"<<n<<endl;         cout<<"您本次取出金额为"<<money<<endl;         cout<<"取款成功***显示总金额后***返回客户选择页面"<<endl;         cout<<"总金额="<<n-money<<endl;         int a=n;  //n是账户原本金额         int &b=a;         ListDelete (L,j+3,b);//在链表中删除原始金额           CustomShow(L,i);           break;       }       else  // 密码输入错误        {            if(2-k>0)   //重复输入密码次数            {                 cout<<"您的密码输入错误,您还有"<<2-k<<"次机会重新输入"<<endl;            }            else     //无输入密码机会             {                cout<<"您用尽了机会,即将返回选择页面"<<endl;                ChooseShow(L,i);             }        }    }}//转账 case 3******************************************************************************void  MoveMoney(LinkList *L,int i){     int j=0;       //存放姓名的元素位置,id在链表中的位置.     int k;       //三次输入密码判断     int passwds;     int moneys;     int &m=passwds;       //m是passwd的引用     int &n=moneys;  //n是moneys的引用    cout<<"***欢迎使用转账功能!***"<<endl;    cout<<"      请输入您的id!                 "<<endl;    int id;    cin>>id;    j=LocateElem(L,id);//按元素查找 (LinkList *L,ElemType e)返回元素位置    GetElem(L,j+1,m);  //求线性表某个数据元素值,返回的m是真实的密码    GetElem(L,j+2,n);  //求线性表某个数据元素值,返回的n是真实的钱数 ,j+2代表金额在链表中的位置    for(k=0;k<3;k++)   //输入密码次数小于等于3    {         cout<<"请输入您的密码!!"<<endl;         int passwd;         cin>>passwd;        if(m==passwd)   //密码输入正确       {         cout<<"你的密码输入正确          "<<endl;         cout<<"      请输入您的转账金额!!!                 "<<endl;         int money;      for (;;)   //判断金额是否合法         {              cin>>money;         if (money<=0)         {             cout<<"转账金额不能为负数和0,请重新输入"<<endl;         }         if (money>n)         {             cout<<"您的账户余额不足,请重新输入"<<endl;         }          else             {               break;              }         }         ListInsert (L,j+2,n-money);         cout<<"您的账户本来余额为"<<n<<endl;         cout<<"您本次转账金额为"<<money<<endl;         cout<<"转账成功***显示转账后金额***显示对方账户金额********返回客户选择页面"<<endl;         cout<<"总金额="<<n-money<<endl;         int a=n;  //n是账户原本金额         int &b=a;         ListDelete (L,j+3,b);//在链表中删除原始金额         cout<<"      请输入您的转账账户的id!                 "<<endl;  //***********************************         int Id;         cin>>Id;         j=LocateElem(L,Id);//按元素查找 (LinkList *L,ElemType e)返回元素位置         GetElem(L,j+2,n);  //求线性表某个数据元素值,返回的n是真实的钱数 ,j+2代表金额在链表中的位置         ListInsert (L,j+2,n+money);         cout<<"对方账户金额为"<<money+n<<"   转账成功!!!"<<endl;         ListDelete (L,j+3,b);//在链表中删除原始金额         CustomShow(L,i);           break;       }       else  // 密码输入错误        {            if(2-k>0)   //重复输入密码次数            {                 cout<<"您的密码输入错误,您还有"<<2-k<<"次机会重新输入"<<endl;            }            else     //无输入密码机会             {                cout<<"您用尽了机会,即将返回选择页面"<<endl;                ChooseShow(L,i);             }        }    }}//密码修改  case 4void ModifyPassword(LinkList *L,int i){     int j=0;       //存放姓名的元素位置,id在链表中的位置.     int k;         //三次输入密码判断     int passwds;     int &m=passwds;       //m是passwd的引用    cout<<"***欢迎使用密码修改功能!***"<<endl;    cout<<"      请输入您的id!                 "<<endl;    int id;    cin>>id;    j=LocateElem(L,id);//按元素查找 (LinkList *L,ElemType e)返回元素位置    GetElem(L,j+1,m);  //求线性表某个数据元素值,返回的m是真实的密码    for(k=0;k<3;k++)   //输入密码次数小于等于3    {         cout<<"请输入您的密码!!"<<endl;         int passwd;         cin>>passwd;         if(m==passwd)   //密码输入正确       {         cout<<"你的密码输入正确          "<<endl;         cout<<"请输入您的新密码"<<endl;         int newpasswd;         cin>>newpasswd;         ListInsert (L,j+1,newpasswd);         cout<<"您的账户本来的密码是:"<<m<<endl;         cout<<"密码修改成功***显示修改后密码***返回客户选择页面"<<endl;         cout<<"新密码是:"<<newpasswd<<endl;         int a=m;  //n是账户原本金额         int &b=a;         ListDelete (L,j+2,b);//在链表中删除原始金额           CustomShow(L,i);           break;       }       else  // 密码输入错误        {            if(2-k>0)   //重复输入密码次数            {                 cout<<"您的密码输入错误,您还有"<<2-k<<"次机会重新输入"<<endl;            }            else     //无输入密码机会             {                cout<<"您用尽了机会,即将返回选择页面"<<endl;                ChooseShow(L,i);             }        }    }}//账户余额 case 5         ******************************************************************************void AccountMoney(LinkList *L,int i){    int j=0;       //存放姓名的元素位置,id在链表中的位置.    int moneys;    int &n=moneys;  //n是moneys的引用    cout<<"***欢迎使用账户余额功能!***"<<endl;    cout<<"      请输入您的id!                 "<<endl;    int id;    cin>>id;    j=LocateElem(L,id);//按元素查找 (LinkList *L,ElemType e)返回元素位置    GetElem(L,j+2,n);  //求线性表某个数据元素值,返回的n是真实的钱数 ,j+2代表金额在链表中的位置    cout<<"您的账户余额为"<<n<<endl;    cout<<"查看余额成功***显示余额***返回客户选择页面"<<endl;    CustomShow(L,i);}

/*********************************************************** *版权所有 (c)2017,lizhaoyang *文件名称:function.h
*文件标识:无 *内容:各种功能函数*其他说明: *作者:黎兆阳*完成日期:20171224*修改记录:无 
**************************************************************/

function.h:
#ifndef FUNCTION_H_INCLUDED
#define FUNCTION_H_INCLUDED
#include "linklist.h"void CreatAccount(LinkList *L,int i); //开户函数void SaveMoney(LinkList *L,int i); //存钱函数void GetMoney(LinkList *L,int i); //取钱函数void ModifyPassword(LinkList *L,int i); //密码修改void AccountMoney(LinkList *L,int i); //账户余额void MoveMoney(LinkList *L,int i); //转账#endif // FUNCTION_H_INCLUDED
linklist.cpp:
#include <stdio.h>#include <malloc.h>#include "linklist.h"//头插法建立单链表******************************************************************void CreateListF(LinkList *&L,ElemType a[],int n){    LinkList *s;    int i;    L=(LinkList *)malloc(sizeof(LinkList));     //创建头结点    L->next=NULL;    for (i=0; i<n; i++)    {        s=(LinkList *)malloc(sizeof(LinkList));//创建新结点        s->data=a[i];        s->next=L->next;            //将*s插在原开始结点之前,头结点之后        L->next=s;    }}//尾插法建立单链表******************************************************************void CreateListR(LinkList *&L,ElemType a[],int n){    LinkList *s,*r;    int i;    L=(LinkList *)malloc(sizeof(LinkList));     //创建头结点    L->next=NULL;    r=L;                    //r始终指向终端结点,开始时指向头结点    for (i=0; i<n; i++)    {        s=(LinkList *)malloc(sizeof(LinkList));//创建新结点        s->data=a[i];        r->next=s;          //将*s插入*r之后        r=s;    }    r->next=NULL;           //终端结点next域置为NULL}//初始化线性表******************************************************************void InitList(LinkList *&L){    L=(LinkList *)malloc(sizeof(LinkList));     //创建头结点    L->next=NULL;}//销毁线性表******************************************************************void DestroyList(LinkList *&L){    LinkList *p=L,*q=p->next;    while (q!=NULL)    {        free(p);        p=q;        q=p->next;    }    free(p);    //此时q为NULL,p指向尾结点,释放它}//判断线性表是否为空******************************************************************bool ListEmpty(LinkList *L){    return(L->next==NULL);}int ListLength(LinkList *L){    LinkList *p=L;    int i=0;    while (p->next!=NULL)    {        i++;        p=p->next;    }    return(i);}//输出线性表******************************************************************void DispList(LinkList *L){    int n=0;    LinkList *p=L->next;    while (p!=NULL)    {   if(n%3==0&&n!=0)       {        printf("\n");       }        printf("%6ld ",p->data);        n++;        p=p->next;    }    printf("\n");}//求线性表某个数据元素值********************************************************bool GetElem(LinkList *L,int i,ElemType &e){    int j=0;    LinkList *p=L;    while (j<i && p!=NULL)    {        j++;        p=p->next;    }    if (p==NULL)            //不存在第i个数据结点        return false;    else                    //存在第i个数据结点    {        e=p->data;        return true;    }}//按元素值查找******************************************************************int LocateElem(LinkList *L,ElemType e){    LinkList *p=L->next;    int n=1;    while (p!=NULL&&p->data!=e)    {        p=p->next;        n++;    }    if (p==NULL)        return(0);  //没有找到返回NULL;    else        return(n);  //调用函数返回元素位置}//插入数据元素********************************************************************bool ListInsert(LinkList *&L,int i,ElemType e){    int j=0;    LinkList *p=L,*s;    while (j<i-1 && p!=NULL) //查找第i-1个结点    {        j++;        p=p->next;    }    if (p==NULL)    //未找到位序为i-1的结点        return false;    else            //找到位序为i-1的结点*p    {        s=(LinkList *)malloc(sizeof(LinkList));//创建新结点*s        s->data=e;        s->next=p->next;                        //将*s插入到*p之后        p->next=s;        return true;    }} //删除数据元素*******************************************************************bool ListDelete(LinkList *&L,int i,ElemType &e){    int j=0;    LinkList *p=L,*q;    while (j<i-1 && p!=NULL)    //查找第i-1个结点    {        j++;        p=p->next;    }    if (p==NULL)                //未找到位序为i-1的结点        return false;    else                        //找到位序为i-1的结点*p    {        q=p->next;              //q指向要删除的结点        if (q==NULL)        return false;           //若不存在第i个结点,返回false        e=q->data;        p->next=q->next;        //从单链表中删除*q结点        free(q);                //释放*q结点        return true;    }}

linklist.h:

#ifndef LINKLIST_H_INCLUDED
#define LINKLIST_H_INCLUDEDtypedef int ElemType;typedef struct LNode        //定义单链表结点类型{    ElemType data;    struct LNode *next;     //指向后继结点}LinkList;void CreateListF(LinkList *&L,ElemType a[],int n); //头插法建立单链表void CreateListR(LinkList *&L,ElemType a[],int n); //尾插法建立单链表void InitList   (LinkList *&L);                    //初始化线性表void DestroyList(LinkList *&L);                    //销毁线性表void DispList   (LinkList *L);                     //输出线性表int ListLength  (LinkList *L);                     //求线性表长度int LocateElem  (LinkList *L,ElemType e);          //按元素值查找bool ListEmpty  (LinkList *L);                     //判断线性表是否为空bool GetElem    (LinkList *L ,int i,ElemType &e);  //求线性表某个数据元素值bool ListInsert (LinkList *&L,int i,ElemType e);   //插入数据元素bool ListDelete (LinkList *&L,int i,ElemType &e);  //删除数据元素#endif // LINKLIST_H_INCLUDED

项目截图:

运行截图:








原创粉丝点击