- 3
- 0
- 约2.1千字
- 约 3页
- 2017-06-30 发布于河南
- 举报
[译]A_Bank_Account_Manager
意译:李松 华中科技大学 软件学院
项目1:银行账户管理系统
目标:通过本项目,让你熟悉进程与线程的管理、同步以及socket编程、RPCs。
*RPC, 即远程过程调用(RemoteProcedureCall)
1 问题描述
在这个编程作业中,你要实现一个集中式的多用户的并发的银行账户管理系统。
系统有两个部分:
1.服务器:
服务器程序主要进行在线处理客户端发来的账户操作请求,以及正确保存所有的用
户的操作记录。
2.客户端:
顾客使用客户端来更新银行账户。可以执行的操作有:取钱(withdraw)、存钱
(deposit)。另外,服务器还提供一种服务:定期将一定利息存入每个账户。
系统的组成部分,以及需要实现的功能,如下:
1) 服务器
服务器接收来自用户(ATM机等客户端)的请求,对账户进行操作。服务器应该有如
下功能:
要能够接收多个并发的请求(多线程)
使用一定的方法保证线程安全(读写锁、互斥量、信号量、临界区等)
保持每一条记录的正确性(比如,没有足够的存款不能进行取钱操作)
意译:李松 华中科技大学 软件学院
初始时在服务端添加一些账户信息以供读取测试(账户名、余额等)
2) 客户端
客户端发送请求给服务器,根据accountnumber对特定账户执行一些交易。
客户端应该有如下功能:
发出存款/取款的请求
为了方便测试和试验,客户端要能够 隔固定时间 发送请求。客户端要能够读取固
定格式的文件,并根据文件内容执行任务。比如:
时间戳 账户ID 操作类型 金额
1 101 w 2
25 101 d 3
26 105 d 15
.
. w:取钱 d:存钱
客户端要能够从服务端接收每一次交易的状态(success/fail),并打印出来。
在这个项目中,你可以发挥自己的创意,添加新的功能,而不仅仅局限于上面的几个功能。
你可以自由选择编程语言:C、C++、Java、Python等等,可能会需要用到sockets、RPCs、
RMIs、threads、events等等。
需要注意几点:
服务器要能够同时处理多个交易请求,所以你需要使用多线程。要注意线程安全的
问题和死锁的问题。
当多个线程同时对同一条记录进行操作时,可以使用信号量、锁等保持线程同步。
不需要GUI用户界面,命令行界面就可以了。
你可以同时加入两个组。^_^
意译:李松 华中科技大学 软件学院
2 评估与测试
正确性:
演示的时候,你的系统要能够根据上述的需求正确地工作:
展示:服务器在多线程和并发请求的情况下,能够正确的进行交易
展示:使用锁/信号量保护同一个账户不被多个线程同时修改(即线程同步)。可
以使用log打印输出。
可扩展性:
固定每个客户端发送请求的时间间隔(比如2秒),改变连接到服务器的客户端数
量。然后计算每个客户端完成一次交易的平均时间。用图表展示随着客户端数量的
增加,完成一次交易的平均时间的变化。(比如客户端数量从1到1 )
固定客户端数量,改变请求的速率 (时间间隔)。同样用图表的方式展示随着请求
速率的变化,完成一次交易的平均时间的变化。
当然,你还可以测量其他的方面来评估系统的性能。
3 提交
当你完成了本项目,请将源代码发送到邮箱:abderazek_1@
同时,你还需要提交文档的打印件,包括:
1.运行你的程序所产生的输出。比如,当服务器接收到数据时打印”datareceivedfrom
sources”。
2.大约2页的文档描述系统的整体设计:描述系统怎么工作的、设计中的权衡与折衷;
描述多线程和同步是怎么实现的、程序的改进和扩展。
3.列出系统中所有的设计考虑,每
您可能关注的文档
最近下载
- DB36_T 2174-2025 赣莲全产业链管理技术规范.pdf VIP
- 2026中考数学压轴题选择+填空275题答案.pdf VIP
- 2025中考数学压轴题每日一题(130题).docx VIP
- 2025中考数学压轴题每日一题(130题).pdf VIP
- 2025中考数学压轴题每日一题(130题)答案.pdf VIP
- 2026中考数学压轴题每日一题(120题).docx VIP
- “贯彻党的创新理论、加强党性锤炼、联系服务群众、发挥先锋模范作用、改作风树新风”党支部副书记2025年度组织生活会个人对照检查材料(五个对照).docx VIP
- 2026中考数学压轴题选择+填空275题.docx VIP
- 2025中考数学压轴题每日一题(130题)答案.docx VIP
- 2026高考化学疑难杂症:基元反应、速率方程.docx VIP
原创力文档

文档评论(0)