使用C++语言实现银行管理系统基础功能
TCP C/S架构ABC模拟银行系统
一.功能说明
1.银行职工(worker)的注册,登录,退出
2.客户(client)的开户,取款,存款,查询余额,退出。
二.功能实现
初步阶段,在这个系统中存在着两个对象,第一个是银行职工,第二个是客户,并且还要注意发送的结构体与返回的结构体的内容,所以每个对象有两个结构体,也就是说每个功能的实现要用到4个结构体。但是不是绝对的,比如客户取款功能就只用到一个结构体。
随之,也需要在数据库创建同样类型的两个表,worker和client,存放的元素要与所需结构体一样
1.网络连接,客户端winsock初始化、连接部分;套接字socket,连接connect;
服务器winsock初始化、连接部分;套接字socket,绑定bind,监听listen,接收accept;
2.银行职工的注册:客户端获取姓名,密码。
判断条件:在获取密码时候,如果确认密码与第一次密码不同,需要重新输入。
接着服务器接收到职工信息后,插入数据库worker表中;再返回操作结果给客户端。
3.银行职工的登录:客户端获取姓名,密码。
服务器收到职工信息后,select数据库中与之姓名一样的一行,存在容器list中(迭代器it遍历)判断姓名和密码是否一样,如果都相同,则在服务器端显示登录成功。
4.客户的开户:和职工的注册类似,不同的是将客户数据插入在了表client中;
5.存款:a.客户端获取account_id和money(不能小于0),发送给服务器。
b.服务器接收包,通过函数select从数据库中找到相应的人,并把所需信息存入list中,然后通过迭代器it遍历,判断信息是否一致,然后写入信息到返回的结构体中,返回给客户端。
6.取款:和存款原理相似,不同的是要判断密码是否一致。并且还要注意取款后的余额不能小于0;
7.余额查询:在存款和取款中已经处理,每次存款或取款后把余额在客户端显示出来。
8.客户退出:在客户端直接用break跳出循环就好
9.柜员退出:需要客户端发送标志位,在服务器端判断是柜员退出功能,但是不在功能里写任何东西。因为在判断完后服务器端已经进行了closesocket(accpetSocket);关闭套接字操作和资源删除操作。
三.一些细节处理
1.时间日期的获取:用函数now()获取,并且数据类型不同获取的东西不同,本次使用的类型为datetime.( 类型:date、time、datetime、timestamp、year)
2.数据库语言的正确使用
3.信息先进行接收,然后进行处理。(事件处理顺序)