期末课程设计--银行储蓄系统
2017-12-22 10:09
393 查看
list.h函数:
运行结果:
开户:
存款:
取款:
销户:
转账:
查询:
查询所有:
/* *版权所有 (C)2017,DuXinye * *文件名称:list.h *文件标识:无 *内容摘要:本文件的作用是定义结构体并声明函数 *其他说明:无 *当前版本:V1.0 *作者:杜昕晔 *完成日期:2017/12/22 */
#include <cstring> #include <iostream> using namespace std; typedef struct LNode //定义单链表结点类型 { string name; double money; char mima[20]; int guashi; int shenfen; struct LNode *next; //指向后继结点 } LinkList; //尾插法建立单链表 void kaihu(LinkList *&L); //开户 void cunkuan(LinkList *&L); //存款 void qukuan(LinkList *&L);//取款 void xiaohu(LinkList *&L);//销户 void zhuanzhang(LinkList *L);//转账 void chaxun(LinkList *L);//查询 void ListInsert(LinkList *&L);//插入数据元素 void chaxunsuoyou(LinkList *L);//查询所有 bool ListEmpty(LinkList *L);//判断是否为空表 int LocateElem(LinkList *L,string name);//按元素值查找 void InitList(LinkList *&L);//初始化线性表view.cpp函数:
/* *版权所有 (C)2017,DuXinye * *文件名称:view.cpp *文件标识:无 *内容摘要:本文件的作用是实现视图 *其他说明:无 *当前版本:V1.0 *作者:杜昕晔 *完成日期:2017/12/22 */
/* *功能描述:显示模块 *输入参数:无 *输出参数:跳转银行操作页面 *其他说明:无 */ #include <iostream> #include <stdio.h> using namespace std; void jiemian() { printf("*********银行储蓄平台******************\n"); printf("**1 开户 2 存款 3 取款*********\n"); printf("**4 销户 5 转账 6 查询*********\n"); printf("**7 查询所有 *********\n"); }list.cpp函数:
/* *版权所有 (C)2017,DuXinye * *文件名称:list.cpp *文件标识:无 *内容摘要:本文件的作用是实现头文件中声明的自定义函数 *其他说明:无 *当前版本:V1.0 *作者:杜昕晔 *完成日期:2017/12/22 */
#include <cstring> #include <iostream> #include <stdlib.h> #include <stdio.h> #include <string> #include "list.h" using namespace std; bool ListEmpty(LinkList *L) // 判断链表是否为空 { return (L->next==NULL); } void InitList(LinkList *&L)//初始化链表 { L = (LinkList *)malloc(sizeof(LinkList)); L->next = NULL; } int LocateElem(LinkList *L,string name)//按元素位置查找,根据输入的名字判断是链表的第几个 { int i = 1; LinkList *p = L->next; while(p!=NULL && p->name!=name) { p = p->next; i++; } if(p==NULL)//如果名字不存在,返回0,如果找到,返回他在第几个 return 0; else return i; } /* *功能描述:开户 *输入参数:姓名,身份证号,密码,存款金额 *输出参数:用户存入的信息 *其他说明:消息字段之间用分号(;)分隔 */ void kaihu(LinkList *&L) { LinkList *s,*r; //s指向第一个用户 r=L; //r始终指向终端结点,开始时指向头结点 while (r->next != NULL) { r = r->next; } cout<<"请输入姓名:"; cin>>s->name; cout<<"请输入身份证号:"; cin>>s->shenfen; cout<<"请输入密码:"; cin>>s->mima; cout<<"请输入存款金额:"; cin>>s->money; if(s->money<=0) { cout<<" 您输入的存款金额为负!请继续输入。"<<endl; cin>>s->money; } r->next = s; //将新用户插入到链表 s->next=NULL; //新用户作为尾结点 cout<<"开户成功"<<endl; } /* *功能描述:存款 *输入参数:姓名,密码,存款金额 *输出参数:存款成功 *返回值:0-账户不存在 其他-存在 *其他说明:消息字段之间用分号(;)分隔 使用查询功能可以确定存款成功 */ void cunkuan(LinkList *&L) { LinkList *r; string name; double money; string mima; cout<<"请输入姓名:"; cin>>name; cout<<"请输入密码:"; cin>>mima; cout<<"请输入存款金额:"; cin>>money; if(money<=0) { cout<<" 您输入的存款金额为负!请继续输入。"<<endl; cin>>money; } int locate = LocateElem(L,name); //调用他返回的位置,查找名字是否存在 if(locate==0) //如果返回的是0 { cout<<"账户不存在!请重新输入。"<<endl; } else { r = L; //r始终指向终端结点,开始时指向头结点 int i; for(i=0;i<locate;i++) //直到查找到输入的姓名 { r = r->next; } if(r->mima == mima) { r->money = r->money + money; } else { cout<<"密码不正确"<<endl; } } cout<<"存款成功"<<endl; } /* *功能描述:取款 *输入参数:姓名,密码,取款金额 *输出参数:取款成功 *返回值:0-账户不存在 其他-存在 *其他说明:消息字段之间用分号(;)分隔 使用查询功能可以确定取款成功 */ void qukuan(LinkList *&L) { LinkList *r; int i; string name; double money; string mima; int shenfen; cout<<"请输入姓名:"; cin>>name; cout<<"请输入密码:"; cin>>mima; cout<<"请输入取款金额:"; cin>>money; if(money<=0) { cout<<" 您输入的存款金额为负!请继续输入。"<<endl; cin>>money; } int locate = LocateElem(L,name); //调用他返回的位置,查找名字是否存在 if(locate==0) //若返回值为0,则用户不存在 { cout<<"账 ae20 户不存在!请重新输入。"<<endl; } else { r = L;//r始终指向终端结点,开始时指向头结点 int i; for(i=0;i<locate;i++) { r = r->next; } if(r->mima == mima) { while(r->money - money < 0) { cout<<"余额不足,重新输入:"; cin>>money; } r->money = r->money - money; } else { cout<<"密码不正确"<<endl; } } cout<<"取款成功"<<endl; } /* *功能描述:销户 *输入参数:姓名,密码 *输出参数:销户成功 *返回值:0-账户不存在 其他-存在 *其他说明:消息字段之间用分号(;)分隔 */ void xiaohu(LinkList *&L)//销毁单链表 { LinkList *last , *r; string name; string mima; int locate; cout<<"请输入姓名:"; cin>>name; cout<<"请输入密码:"; cin>>mima; locate = LocateElem(L,name); if(locate == 0) { cout<<"该用户不存在"<<endl; } else { r = L; int i; for(i=0;i<locate-1;i++)//找上一个结点 { r = r->next; } last = r->next; //要删除的 if(last->mima == mima) { r->next = r->next->next; cout<<"销户成功"<<endl; }else { cout<<"密码不正确"<<endl; } } } /* *功能描述:转账 *输入参数:姓名,密码,转账姓名,转账金额 *输出参数:转账成功 *其他说明:消息字段之间用分号(;)分隔 */ void zhuanzhang(LinkList *L) { LinkList *r,*s; int send,to; string sendname; string mima; string toname; double money; cout<<"请输入姓名:"; cin>>sendname; cout<<"请输入密码:"; cin>>mima; cout<<"请输入您要转账的姓名:"; cin>>toname; cout<<"转账金额:"; cin>>money; send = LocateElem(L,sendname); to = LocateElem(L,toname); if(send == 0) { cout<<"您输入的转款或收款人有误"<<endl; } else if(to == 0) { cout<<"您输入的转款或收款人有误"<<endl; } else { r = L; s = L; int i; for(i=0;i<send;i++) { r = r->next; } for(i=0;i<to;i++) { s = s->next; } if(r->mima == mima) { while(r->money - money < 0) { cout<<"余额不足,重新输入:"; cin>>money; } r->money = r->money - money; s->money = s->money + money; cout<<"转账成功"<<endl; } else { cout<<"密码不正确"<<endl; } } } /* *功能描述:查询 *输入参数:姓名,密码 *输出参数:用户银行卡中的信息 *其他说明:消息字段之间用分号(;)分隔 */ void chaxun(LinkList *L) //输出单链表 { cout<<"您的用户名:"<<endl; string name; cin>>name; cout<<"您的密码:"<<endl; string mima; cin>>mima; LinkList *r ; int locate = LocateElem(L,name); if(locate==0){ cout<<"账户不存在!请重新输入。"<<endl; } else{ r = L; int i; for(i=0;i<locate;i++){ r = r->next; } if(r->mima == mima){ cout<<"您的姓名: "<<r->name<<" 您的金额为:"<<r->money<<endl; }else{ cout<<"密码不正确"<<endl; } } } /* *功能描述:查询所有 *输入参数:无 *输出参数:银行的所有用户信息 *其他说明:消息字段之间用分号(;)分隔 该功能只有银行管理员才可以运行 */ void chaxunsuoyou(LinkList *L) { LinkList *p=L->next; int i = 0; while (p!=NULL) { cout<<"第"<<i+1<<"位用户:"; cout<<"姓名"<<p->name<<" "<<"账户余额"<<p->money<<endl; p=p->next; i++; } printf("\n"); }main.cpp函数:
/* *版权所有 (C)2017,DuXinye * *文件名称:main.cpp *文件标识:无 *内容摘要:本文件的作用是定义main函数以及调用相关函数 *其他说明:无 *当前版本:V1.0 *作者:杜昕晔 *完成日期:2017/12/22 */
#include <stdio.h> #include <malloc.h> #include <string> #include <iostream> #include "list.h" using namespace std; typedef int ElemType; void kaihu(LinkList *&L); void ListInsert(LinkList *&L); void jiemian(); void cunkuan(LinkList *&L); void qukuan(LinkList *&L); void xiaohu(LinkList *&L); void chaxun(LinkList *L); void chaxunsuoyou(LinkList *L); void zhuanzhang(LinkList *L); bool ListEmpty(LinkList *L); void InitList(LinkList *&L); int main() { int cmd; LinkList *L2; L2 = new LinkList; L2 = NULL; int index=0; InitList(L2);//初始化 while(1) { jiemian(); cout<<endl; cout<<"请输入您要进行的业务号:"; cin>>cmd; switch(cmd) { jiemian(); case 1: kaihu(L2); break; case 2: cunkuan(L2); break; case 3: qukuan(L2); break; case 4: xiaohu(L2); break; case 5: zhuanzhang(L2); break; case 6: chaxun(L2); break; case 7: chaxunsuoyou(L2); break; default: break; } } }多文件组织,保存在四个文件里:
运行结果:
开户:
存款:
取款:
销户:
转账:
查询:
查询所有:
相关文章推荐
- 课程设计--银行储蓄系统
- 数据结构课程设计【银行储蓄系统】
- 课程设计——简单银行储蓄系统(代码)(并不完善版)
- 作死向之C++告别演出——课程设计(银行储蓄系统(大BUG+功能不完整版))
- 课程设计-银行储蓄系统
- 课程设计——简单银行储蓄系统
- 课程设计 银行储蓄系统
- 程序设计基础课程实训报告:银行储蓄系统
- 课程设计-银行储蓄系统
- C++课程设计-银行储蓄系统
- 课程设计-银行储蓄系统
- 2017上半年课程设计银行储蓄系统
- 课程设计-银行储蓄系统。
- 期末课程设计之 c++操作mysql完成机票预订系统(vc 6.0配置mysql环境)
- 【课程实训】银行储蓄系统
- 数据库课程设计银行管理系统(SQL Server)
- ★C++课程实训:银行储蓄系统(多文件组织)
- C语言期末课程设计 1.小学生考试系统
- c++课程实训 银行储蓄系统
- 课程实训:银行储蓄系统(多文件组织)