[译]A_Bank_Account_Manager.pdfVIP

  • 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.列出系统中所有的设计考虑,每

文档评论(0)

1亿VIP精品文档

相关文档