银行ATM系统软件工程设计报告

2024-08-23

银行ATM系统软件工程设计报告(精选6篇)

1.银行ATM系统软件工程设计报告 篇一

中期总结报告

题目名称:班 级:学 号:学生姓名:指导教师:

模拟ATM项目

2014 年 10 月8日

软件工程实训中期总结报告

我在一郑州华软国际软件公司为期4个月左右的实习生活就已经过去一半时光了,我现在把在这家公司的工作和生活的实习情况描述如下:

自从2014年7月开始,我在公司已经做过了两个主要的项目,这三个项目的名称为:模拟ATM系统,模拟当当网购物,全程代理办事系统;这个两个系统由是C/S架构和B/S开发的,用到的技术主要有JAVA, JSP,Eclipse, MySQL, Tomcat。因为我有3年的学校学习经验,是一个工作认真负责、积极主动、善于团队工作的人,思维严谨,并有较高的技术水平和丰富的管理经验。熟悉软件项目管理规范,对软件项目开发过程的各个阶段有明确的认识,善于对项目进行控制及管理,并能承受一定的工作压力。在校学习期间,成绩突出,有深厚的技术功底。所以在这家公司能够很好地担任项目负责人,把项目做到最佳程度。

首先对这个三个项目中的一个有代表性的项目(模拟ATM)描述如下:

我在公司根据老师要求一步步按照流程做这个系统。ATM的功能模块为: 存款、取款、转账、查询余额、修改密码、查询持卡人信息等功能。主要使用的开发技术有:JAVA,Eclipse, Mysql。该项目主要功能是模拟市场上常见的ATM机功能。

该项目开发的背景是为银行业务流程当中起着承上启下的作用,其重要性不言而喻。但是,目前许多银行在具体的一些业务流程处理过程中仍然使用手工操作的方式来实施,不仅费时、费力,效率低下,而且无法达到理想的效果。本文针对上述问题,采用软件工程的开发原理,依据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个银行ATM机管理系统系统一、该项目主要的业务流程如下: 1.1系统流程图

图1:系统流程图

1.2系统流程图

图2:系统功能模块

二、流程:

1、用户首先要登陆,进行登陆验证;

2、用户选择操作功能;

3、选择过操作功能之后可以进行一一对应的功能。

三、遇到的问题及解决办法

在此次项目中,我遇到了一些问题,如:对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。

对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,对于书上以及网站上下载的资料中的Java实例必须有清楚的理解,还有就是多跟精通此方面的老师和同学交流,取其精华。对于实际动手能力与系统开发的流程的适应,必须多进行实际的练习与操作,才能有大的进步。

四、心得体会

在这次的公司实训中,我主要运用了Java语言的界面设计、异常处理等,综合运用了Java语言。我深刻感受到了面向对象语言中类库的强大功能,掌握了运用Java中的类实现某些基本功能,并学会了自己查询使用类的方法,为以后的面向对象语言的自学奠定了基础。

通过这两个月的实训中我真的学到了很多的东西,当然这也和我的同学的帮助是离不开的。好了,下面就谈一下我在这些天的体会吧:

在这次的课程设计中,主要是运用JAVA语言来编写一个小的应用程序,当然还可以用其他的技术来辅助了。由于以前学的不是很扎实,而且还有些知识我们都是没有学过的,这就要求我们去查相关的书籍,还有就是和同学之间的交流。正因为这样,才锻炼了我的自学 的能力,还有就是加深了我对各个知识点的认识,并且提高了我对专业的学习的兴趣,为我以后的学习打下了基础。此外,我还感受到了面向对象语言的类库的强大的功能,掌握了运用JAVA中的类实现某些基本功能,并学会了自己查询使用类的方法,也就是要会用API文档,为以后更好的学习面向对象语言奠定了基础。

“千里之行,始于足下”,这是一个短暂而又充实的实习,我认为对我走向社会起到了一个桥梁的作用,过渡的作用,是人生的一段重要的经历,也是一个重要步骤,对将来走上工作岗位也有着很大帮助。

现在我对“一个人最大财富是他的人生经历和关系网络”这句话非常有感情,因为它确实帮不了我们不少。课本上的知识毕竟有限。通过实训,我班同学都有这样一个感觉,课本上的理论知识与实际工作差距太大,只有知识是远远不够的,专业技能急需提高,从最初的笨手笨脚,到现在可以熟悉开发的流程,这与每个人的努力是分不开的,实训,教会了我们很多的东西,同时也锻炼了大家踏实、稳重的能力,每个人都很珍惜这次实训。

虽然实训已经结束,但我非常怀念这次实训,在实训的时间里,每一天都过的那么的充实、踏实;我相信,只要我秉承努力艰苦奋斗,为理想拼搏的精神,尽管在未来的路上有可能荆棘丛丛,但我一定可以披荆斩棘,度过重重难关,实现自己未来的理想。

在实际工作中经常会和不同的人打交道,这次实训教会了我们团队合作的重要作用,也为和人沟通打下了基础,在以后的日子里仍需继续的努力,不断激励经验,不断磨砺自己,早日走向工作岗位。

这次实训已经过了一半了,在这个过程当中,我学到了很多的知识,同时也感谢我的同学的帮助和指导。在以后的学习当中,我会更加努力的学习好专业知识,并将所学的知识用于实践当中去,以便牢固掌握知识。

2.银行ATM系统软件工程设计报告 篇二

随着银行ATM自助设备数量的提升,自助设备硬件的维修和软件的维护也日益增加,实用型ATM维护人才的供需矛盾日益突出。与庞大的市场需求相比,我国的ATM维护人才的供应缺口仍然很大,尤其是掌握ATM硬件维修与ATM软件维护技能与技术的专业人才(即ATM维护工程师),目前已成为市场急需的人才之一。

ATM维护工程师是国内金融IT行业的热门职业,国际权威研究机构RBR的研究成果表明,未来5年,我国ATM市场每年的增长速度超过30%,因此,该职业目前处于上升期并被列为发展前景最好的职业之一。与同类职业相比,ATM维护工程师的职业地位与薪酬收入也具有较为明显的优势,因此,ATM维护工程师是国内现阶段最好的就业选择之一。

哈尔滨大学生创业就业培训指导中心,以服务大学生为前提,以更好的解决大学生就业问题为己任,针对由于我国高校当前的课程设置、教学目标的差异,导致的高校培养的人才难以符合银行的实际的用人需求,特开设银行ATM工程师的专业化培训,以期弥补银行ATM工程师的大量空缺。

哈尔滨大学生创业就业培训指导中心,以热情的态度和真诚的心对待每一位学员,为了提高培训质量,同时为了顺利实现培训学员的就业安置,中心与目前国内最大的ATM金融服务商强强联合办学,培训前签订就业保障协议,不能安置就业,全额退费。

3.银行ATM系统软件工程设计报告 篇三

一、可行性研究分析

引言:

不管是学习还是工作生活,人们总避免不了和请假这种事情打交道。开发操作简单,功能实用的请假系统既可以帮助要请假的人更加方便的申请请假,又可以帮助领导者快速审核请假事情,还可以简化请假的审查和统计以作为评比的依据。该系统非常容易被接受,它具有简单易学性,便于申请者实用和管理阶层管理,是对学校,机关,事业单位进行请假管理的非常有效的工具。

编写目的:

这份可行性研究报告是对请假管理系统做的可行性研究分析以及之处存在的必要性。由于学校、机关、公司日常都需要所管理员工的请假问题,还需要及时处理员工的请假,对请假到期人员的到岗情况,未请假人员的缺岗情况进行审核,传统的纯人工纸质请假程序复杂,极不方便员工的请假,也不方便管理者的考勤和管理。开发该请假系统将极大的方便学生群体和职工群体的请假和公司化管理,提高效率,对请假者,管理者,单位都是有极大的好处的!

可行性研究所采用的方法和步骤:

通过调查分析开发请假系统所具备的能力及实现的方法。确定总体结构,利用web + mysql 所具有的能力,以最简洁最容易的方法,使其成为一个初级的系统软件。

对现有产品的分析:

因为当前学校、机关等都采用纸质请假考核,所以目前该方面尚处于空白阶段!

系统功能:

方便使用者完成请假操作,方便管理者处理请假请求,方便管理者管理请假!(图表,工作原理,系统流程图,数据流程图)

技术可行性:

由于该请假系统设计的初衷是方便使用者请假和领导者进行请假的管理,所以要做到最大限度方便用户。当用户完成登录后,可以查看自己的历史请假信息,可以填写新的请假申请,填写完成后信息进入数据库。系统根据提交者的工号(学

号)判断提交者的所属单位,找到其直接管理者A,然后通知其管理者A该条请假申请。管理者A通过审核该请假申请,选择同意或者拒绝,同时改写数据库的请假条批复状态反馈至申请者。当管理者B登录后可以查看所有当前状态下(当前日期)所有的当期(在请假期限内)请假条。整个流程完成!考虑到整个系统要方便使用者,规模属于小型系统,使用web开放完全可以胜任!因此,决定采用jsp+strut2+mysql的框架对该系统进行开发。

其它可供选择的方案:

可以选择web,传统桌面应用程序,android系统移动终端程序相结合的方法,三种模式共享数据库,可以做到极大的方便使用者和管理者的使用。可行性综合分析:

技术方面:

本工程产品开发周期为20天,在技术上采用web编程与数据库相结合方法来实现,要求所有数据信息都有数据库来完成,而这些数据信息的管理必须有web编程来设计完成。

可行性结论:

综上所述,本工程的技术成熟、完备,测试手段可靠,具有良好的市场拓展,因此本工程可立即开始。

一、需求分析

用户需求:高校学生希望能够快速便捷的完成请假,高校管理者希望能更加方便批复和管理学生的请假申请,教师希望能更及时准确掌握学生的请假信息以完成考核。

业务需求:

使用范围要求:按照安阳师范学院全日制学生学籍管理等相关文件,学生请假需要其直接辅导员批准,且请假时间不能超过七天!数据库中保留所有学生的请假信息,当前有效请假信息随时供辅导员和教师查看。

功能要求:

学生请假:学生可以提交请假条,查看历史请假条

辅导员管理:辅导员可以查看属于自己管理的请假条,批准或拒绝(可写明拒绝原因),查看所有自己批准的请假条,查看所有提交给自己的请假条

教师管理:登录查看当天自己所执教课程的请假人员。

二、总体设计

4.银行ATM系统软件工程设计报告 篇四

题 目:软件工程课设管理系统 ——需求分析报告 学生姓名:王星

学 号:1176807448 专 业:计算机4班 指导教师:赵宇红

文档名称: 需求分析报告 项目名称: 软件工程课设管理系统 项目负责人:王星

编写: 完成日期: 2014.6.19 审核:

开发单位:

王星 薛浩楠

软件工程课设管理系统小组

目录

需求分析报告...................................................................................................................................4

一.引言...................................................................................................................................4

1.编写目的:...................................................................................................................4 2.背景及范围:.................................................................................................................4 3.名词定义:...................................................................................................................4 4.参考资料:...................................................................................................................5

二、任务概述...........................................................................................................................5

1.目标:.........................................................................................................................5 2.系统功能划分:...........................................................................................................6 3.安全性:.......................................................................................................................6

三、具体需求分析...................................................................................................................6

1.系统流程图:.............................................................................................................6 2.数据流图:...................................................................................................................8 3.数据字典:...................................................................................................................8

需求分析报告

一.引言

随着计算机的普及,人们对计算机的认识及需求有了明显的增加。计算机对于大量信息的管理的优势更是显而易见。有了这个软件工程课程设计管理系统,学生与老师的工作任务就可能会事半功倍。1.编写目的:

计算机专业的学生有90多名,而且随着每年的扩招,人数不断的增加,每次软件工程课程设计都采用手工操作,费时费力。为了解决这个问题,决定做一个软件工程课程设计管理系统,对每个学期选修软件工程课程设计的学生基本情况作个统计。主要是学生从该系统中选题,填写同组学生的姓名,学号,班级,组长等基本情况;查询自己的课程设计成绩。老师通过该系统查看学生的选题情况,填写学生的项目进度情况,且给出学生的分数,这有利于老师教学,及时了解学生的情况,提高教学质量,减轻老师的工作量,改善原有的比较繁锁的工作。2.背景及范围: 名称:软件工程课程设计管理系统

任务的开发人员:杨宇飞,薛浩楠,王星,陈晶 开发软件的单位:软件工程课程设计管理系统小组

软硬件设施:个人计算机,JAVA,Acess数据库,Windows 97/xp操作系统 决定开发软件工程课程设计管理系统,估价成本不高于1000元,二周交付使用。3.名词定义:

实体:客观世界中存在的且可互相区别的事物。联系:客观事物中的彼此之间的关系。属性:实体或者联系所具有的性质。4.参考资料:

软件工程基础 汤淮 西安交通大学出版社

软件工程------技术,方法与环境 王立福,张世琨,朱冰 编著 北京大学出版社

软件开发技术 倪秉营 电子科技大学出版社 软件工程 张权范 清华大学出版社

二、任务概述

该软件工程课程设计管理系统软件目前已有比较完善的管理与使用功能。研制软件工程课程设计管理系统软件是为了满足软件工程教师与学生方便对课程的各种管理与操作。1.目标:(1)开发意图:

a.为了软件工程课程管理系统更完善;

b.为了软件工程课程管理更方便;

c.为了减轻软件工程管理工作人员的工作负担;d.为了加强学院的正规化管理;(2)应用目标:

通过本系统软件,能帮助课程设计教师利用计算机,快速方便的对课程进行管理,上传资料,填写进度报告,查找的所需操作。(3)产品描述:

本产品是一种工作在windows系统平台的软件,它是以Acess数据库。(4)产品功能: 2.系统功能划分:

使用该系统有三个角色教师,学生,客户。教师可以查看学生选课情况,可以查看学生设计报告,填写学生项目进度情况,给出分数,修改密码,上传课程设计题目,学习资料。学生可以查看选课情况和成绩,选课。客户只可以浏览选课信息。

2.系统可分为5个模块:

(1)基本信息:教师和学生的信息包括教师号,学生号,教师开设的课程设计的题目,学生选的课程设计题目,项目进度和分数。(2)选课:显示教师开设的课程设计题目,实现学生选课。

(3)查询:学生查询可选题,自己选题情况,自己课程设计成绩。教师查询学生选题情况,学生设计报告。

(4)修改:教师填写项目进度情况和给出分数,学生填写同组的其他同学的姓名,学号,班级,小组长,修改结果存入相应数据库等。

(5)密码:教师和学生可以修改自己的登陆密码,结果保存用户信息数据库。3.安全性:

设立三种级别的用户:Student,Teacher,Guest,对每种类型的用户设置不同的权限。

Student:查询分数,课程设计报告上传功能 Teacher:提供对系统的实际操作功能 Guest: 提供信息浏览功能

三、具体需求分析

1.系统流程图:

学生登陆教师登陆验证学生身份验证教师身份验证成功验证成功修改密码查询选课信息查询选课上传资料与设计题目查看设计报告查看选题情况修改密码学生信息数据库选课给出分数和填写进度情况教师信息数据库课程设计报告上传填写同组人员信息选课数据库客户登陆客户浏览

图3.1系统流程图

2.数据流图:

客户用户信息数据库选题数据库用户学号与密码显示修改密码上传确定选题验证口令题目与有关资料课程设计题目数据库登陆教师显示登陆成员列表验证口令填写进度表显示选课学生小组成员信息核对填写同组人员信息教工号和密码进度数据库工作报告表课程设计报告修改密码用户设计报告表给出分数上传学生信息数据库成绩数据库显示

图3.2数据流图

3.数据字典:

数据流描述:

数据流名:用户名密码 数据来源:用户登陆处理 数据去向:验证信息处理。说明:用户输入用户名和密码 数据组成:用户名+密码 数据流量:小 数据流名:直接登陆

数据来源:用户登陆处理

数据去向:客户界面

说明:普通用户不输入用户名和密码直接以客户身份登陆

数据流名:登陆

数据来源:验证信息处理正确

数据去向:根据验证信息返回条件决定是教师界面还是学生界面 说明:系统登陆到教师界面。数据流名:选题,资料

数据来源:教师界面的输入选题和资料窗口 数据去向:上传处理

说明:教师输入要上传的课题和资料 数据流名:小组成员信息 数据来源:选课信息界面 数据去向:验证填写信息处理

说明:学生填写同组其他同学姓名,学号,班级,小组长名。数据流名:工作报告。数据来源:课题信息界面 数据去向:上传处理

说明:学生将各阶段工作报告上传。数据流名:设计报告 数据来源:选题信息界面 数据去向:上传处理

5.银行ATM系统软件工程设计报告 篇五

一、熟悉公司ATM业务工作。作为公司一名新进业务人员,必须在遵守公司规定的同时努力学习公司业务,特别是公司的ATM业务,在徐总的带领和帮助下,全力开展ATM业务工作。

1、第一季度,以ATM业务开拓为主。针对现有海陵区的客户资源和其他四市两区进行ATM业务的走访与开发,把可能有ATM广告需求的客户尽最大可能进行开发,有意向合作的客户安排与徐总见面洽谈。期间,力争促成两件ATM业务,做ATM业务开发的同时,不丢掉其他可能的广告业务,争取为公司创造最大的利益。

2、第二季度,以已有的ATM业务为主。通过参加专业展销会、上网、电话、拜访等多种业务开发方式继续开发ATM广告客户,保持与老客户的感情联络,形成一个循环的、业务不断的客户群体。争取ATM广告业务无断档、无空挡,做到随时到期,随时有新客户上。在大力开拓市场的同时,不丢掉老客户的ATM广告业务,与老客户保持经常性联系,及时向徐总报告老客户的ATM广告业务进展情况。

3、第三季度,抓住“十一”、“中秋”双节带来的无限商机,为后半年的ATM广告业务创造一个新的增长点。并且,随着我对ATM广告业务与综合能力的相对提高,对一些潜在客户,进行一次有针对性的开发,有意向合作的客户安排与徐总见面洽谈,争取签订一张ATM广告业务大单。

4、第四季度,继续寻找有ATM广告业务潜力的客户资源,提

出针对性的做可行性建议,下一年度的ATM广告业务打下良好的基础,以保证2014年的ATM广告业务顺利开展。

二、制订学习计划。学习,对于业务人员来说至关重要,因为它直接关系到一个业务人员业务方面的生命力。我会适时的根据需要调整我的学习方向来补充新的专业知识、综合能力。

知己知彼,方能百战不殆,在这方面还希望各位前辈给与我支持。

三、增强责任感、服务意识和团队意识。积极主动地把工作做到点上、落到实处。我将尽我最大的能力减轻徐总找的压力。

6.银行ATM系统软件工程设计报告 篇六

课题:

银行家算法

专业

计算机科学与技术

学生姓名

班级

计算机

学号

指导教师

信息工程学院

一、实验要求和实验目的实验目的:本课程设计是学生学习完《操作系统原理》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。

实验要求:从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:两人一组,每组从所给题目中任选一个(如自拟题目,需经指导教师同意),每个学生必须独立完成课程设计,不能相互抄袭,同组者文档不能相同;设计完成后,将所完成的工作交由指导教师检查;要求写出一份详细的设计报告。

二、设计内容:

课题一、编制银行家算法通用程序,并检测所给状态的系统安全性。

1)银行家算法中的数据结构:

可利用资源向量Available。这是一个含有m个

元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。Available[j]=K,则表示系统中现有Rj

类资源K个。

最大需求矩阵Max。这是一个n*m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。

1.分配矩阵Allocation。这也是一个n*m的矩阵,它定义了系统中每一类资料当前已分配给没一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的数目为K。需求矩阵Need。这也是一个n*m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。

上述三个矩阵存在如下关系:

Need[i,j]=

Max[i,j]-

Allocation[i,j]

2)银行家算法

设Request[i]

是进程Pi的请求向量,如果Request[i,j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:如果Request[i,j]<=

Need[i,j],便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。

三、设计思路

设计思路A、设计进程对各在资源最大申请表示及初值确定。B、设定系统提供资源初始状态。C、设定每次某个进程对各类资源的申请表示。D、编制程序,依据银行家算法,决定其申请是否得到满足。

四、详细设计

1、初始化:由用户输入数据,分别对可利用资源向量矩阵AVAILABLE、最大需求矩阵MAX、分配矩阵ALLOCATION、需求矩阵NEED赋值。

2、银行家算法:在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统的状态分为安全状态和不安全状态,只要能使系统始终都处于安全状态,便可以避免发生死锁。银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。它是最具有代表性的避免死锁的算法。

设进程cusneed提出请求REQUEST

[i],则银行家算法按如下规则进行判断。

(1)如果REQUEST

[cusneed]

[i]<=

NEED[cusneed][i],则转(2);否则,出错。

(2)如果REQUEST

[cusneed]

[i]<=

AVAILABLE[cusneed][i],则转(3);否则,出错。

银行家算法的数据结构

假设有M个进程N类资源,则有如下数据结构:

#define

W

#define

R

int

M

;

//总进程数

int

N

;

//资源种类

int

ALL_RESOURCE[W];

//各种资源的数目总和

int

MAX[W][R];

//M个进程对N类资源最大资源需求量

int

AVAILABLE[R];

//系统可用资源数

int

ALLOCATION[W][R];

//M个进程已经得到N类资源的资源量

int

NEED[W][R];

//M个进程还需要N类资源的资源量

int

Request[R];

//请求资源个数

3.“安全性检测“算法

1)先定义两个变量,用来表示推算过程的数据.F[n]=A[n],表示推算过程中,系统中剩余资源量的变化.J[n]=False表示推算过程中各进程是否假设“已完成“

系统试探分配资源,修改相关数据:

AVAILABLE[i]-=REQUEST[cusneed][i];

ALLOCATION[cusneed][i]+=REQUEST[cusneed][i];、NEED[cusneed][i]-=REQUEST[cusneed][i];

4、安全性检查算法

1)设置两个工作向量Work=AVAILABLE;FINISH

2)从进程集合中找到一个满足下述条件的进程,FINISH==false;

NEED<=Work;

如找到,执行(3);否则,执行(4)

3)设进程获得资源,可顺利执行,直至完成,从而释放资源。

Work+=ALLOCATION;

Finish=true;

GOTO

4)如所有的进程Finish=

true,则表示安全;否则系统不安全。

安全状态:

在某时刻系统中所有进程可以排列一个安全序列:{P1,P2,`````Pn},刚称此时,系统是安全的.所谓安全序列{P1,P2,`````Pn}是指对于P2,都有它所需要剩余资源数量不大于系统掌握的剩余的空间资源与所有Pi(j

最大需求

尚需

P1

P2

P3

4             2

在每一次进程中申请的资源,判定一下,若实际分配的话,之后系统是否安全.银行家算法的数据结构.五、代码清单

#include

#include

#include

#include

#include

#include

const

int

MAX_P=20;

const

int

MAXA=10;

//定义A类资源的数量

const

int

MAXB=5;

const

int

MAXC=7;

typedef

struct

node{

int

a;

int

b;

int

c;

int

remain_a;

int

remain_b;

int

remain_c;

}bank;

typedef

struct

node1{

char

name[20];

int

a;

int

b;

int

c;

int

need_a;

int

need_b;

int

need_c;

}process;

bank

banker;

process

processes[MAX_P];

int

quantity;

//初始化函数

void

initial()

{

int

i;

banker.a=MAXA;

banker.b=MAXB;

banker.c=MAXC;

banker.remain_a=MAXA;

banker.remain_b=MAXB;

banker.remain_c=MAXC;

for(i=0;i

strcpy(processes[i].name,““);

processes[i].a=0;

processes[i].b=0;

processes[i].c=0;

processes[i].need_a=0;

processes[i].need_b=0;

processes[i].need_c=0;

}

}

//新加作业

void

add()

{

char

name[20];

int

flag=0;

int

t;

int

need_a,need_b,need_c;

int

i;

cout<

cout<<“新加作业“<

cout<<“请输入新加作业名:“;

cin>>name;

for(i=0;i

if(!strcmp(processes[i].name,name)){

flag=1;

break;

}

}

if(flag){

cout<<“错误,作业已存在“<

}

else{

cout<<“本作业所需A类资源:“;

cin>>need_a;

cout<<“本作业所需B类资源:“;

cin>>need_b;

cout<<“本作业所需C类资源:“;

cin>>need_c;

t=1;

cout<

if(need_a>banker.remain_a){

cout<<“错误,所需A类资源大于银行家所剩A类资源“<

t=0;

}

if(need_b>banker.remain_b){

cout<<“错误,所需B类资源大于银行家所剩B类资源“<

t=0;

}

if(need_c>banker.remain_c){

cout<<“错误,所需C类资源大于银行家所剩C类资源“<

t=0;

}

if(t){

strcpy(processes[quantity].name,name);

processes[quantity].need_a=need_a;

processes[quantity].need_b=need_b;

processes[quantity].need_c=need_c;

quantity++;

cout<<“新加作业成功“<

}

else{

cout<<“新加作业失败“<

}

}

}

//为作业申请资源

void

bid()

{

char

name[20];

int

i,p;

int

a,b,c;

int

flag;

cout<

cout<<“要申请资源的作业名:“;

cin>>name;

p=-1;

for(i=0;i

if(!strcmp(processes[i].name,name)){

p=i;

break;

}

}

if(p!=-1){

cout<<“该作业要申请A类资源数量:“;

cin>>a;

cout<<“该作业要申请B类资源数量:“;

cin>>b;

cout<<“该作业要申请C类资源数量:“;

cin>>c;

flag=1;

if((a>banker.remain_a)||(a>processes[p].need_a-processes[p].a)){

cout<<“错误,所申请A类资源大于银行家所剩A类资源或该进程还需数量“<

flag=0;

}

if((b>banker.remain_b)||(b>processes[p].need_b-processes[p].b)){

cout<<“错误,所申请B类资源大于银行家所剩B类资源或该进程还需数量“<

flag=0;

}

if((c>banker.remain_c)||(c>processes[p].need_c-processes[p].c)){

cout<<“错误,所申请C类资源大于银行家所剩C类资源或该进程还需数量“<

flag=0;

}

if(flag){

banker.remain_a-=a;

banker.remain_b-=b;

banker.remain_c-=c;

processes[p].a+=a;

processes[p].b+=b;

processes[p].c+=c;

cout<<“为作业申请资源成功“<

}

else{

cout<<“为作业申请资源失败“<

}

}

else{

cout<<“该作业不存在“<

}

}

//撤消作业

void

finished()

{

char

name[20];

int

i,p;

cout<

cout<<“要撤消作业名:“;

cin>>name;

p=-1;

for(i=0;i

if(!strcmp(processes[i].name,name)){

p=i;

break;

}

}

if(p!=-1){

banker.remain_a+=processes[p].a;

banker.remain_b+=processes[p].b;

banker.remain_c+=processes[p].c;

for(i=p;i

processes[i]=processes[i+1];

}

strcpy(processes[quantity-1].name,““);

processes[quantity-1].a=0;

processes[quantity-1].b=0;

processes[quantity-1].c=0;

processes[quantity-1].need_a=0;

processes[quantity-1].need_b=0;

processes[quantity-1].need_c=0;

quantity--;

cout<<“撤消作业成功“<

}

else{

cout<<“撤消作业失败“<

}

}

//查看资源情况

void

view()

{

int

i;

cout<

cout<<“银行家所剩资源(剩余资源/总共资源)“<

cout<<“A类:“<

cout<<“

B类:“<

cout<<“

C类:“<

cout<

if(quantity>0){

for(i=0;i

cout<<“作业名:“<

cout<<“A类:“<

cout<<“

B类:“<

cout<<“

C类:“<

cout<

}

}

else{

cout<<“当前没有作业“<

}

}

//显示版权信息函数

void

version()

{

cout<

cout<<“

银行家算法

“<

cout<

}

void

main()

{

int

chioce;

int

flag=1;

initial();

version();

while(flag){

cout<<“1.新加作业

2.为作业申请资源

3.撤消作业“<

cout<<“4.查看资源情况

0.退出系统“<

cout<<“请选择:“;

cin>>chioce;

switch(chioce){

case

1:

add();

break;

case

2:

bid();

break;

case

3:

finished();

break;

case

4:

view();

break;

case

0:

flag=0;

break;

default:

cout<<“选择错误“<

}

}

}

六、使用说明

运行环境C-FREE4.0,新建任务。将编制好的代码输入此运行环境中。

按F5:出现如上图所示窗口。按照提示,新建一个作业:wujun。为作业分配资源,A:3;B:4;C:5。输入2,为作业分配资源。三种资源的数量分配分别为:A:3;B:5;C:4。输入4,查看资源情况。出现出错提示,所申请的B类资源超过银行家所剩B类资源或作业申请资源失败。输入0,退出系统。

重新加入一个作业:wujun1.并为作业分配资源分别为A:3;B:3;C:3,为该作业分配资源A:3;B:2;C:2.输入4查看资源情况。

显示输出,银行家算法所剩资源(剩余资源、总共资源)。

七、实验心得

八、参考文献

汤子瀛等.计算机操作系统.西安电子科技大学出版社.2001年5月

蒋静

上一篇:《欧阳生文集序》文言文训练习题下一篇:完整感冒病历范文