第一篇:数据库课程设计个人总结
数据库课程设计个人总结
姓名:邢王秀学号:200924101215班级:09计本<2>班
一个月的时间非常快就过去了,这一个月我不敢说自己有多大的进步,获得了多少知识,但起码是了解了项目开发的部分过程。虽说上过数据库相关的课程,但是没有亲身经历过相关的设计工作细节。这次课程设计给我提供了一个很好的机会。
通过这次课程设计发现这其中需要的很多知识我们没有接触过,上网查找资料的时候发现我们以前所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道。同时也发现有很多已经学过的东西我们没有理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要自己不断的大量的实践,通过不断的自学,不断地发现问题,思考问题,进而解决问题。在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。
这次的数据库课程设计,我们组负责的企业信息文档管理系统的设计。这课题是自拟的。我们组实行的分工合作。我主要是负责数据库功能模块设计这部分。
从各种文档的阅读到需求分析、概要设计、数据库总体设计、代码编写与调试,我们都准备了好长时间。组内分工合作的整个过程,我亲身体验了一回系统的设计开发过程,分工合作的好处。很多东西书上写的很清楚,貌似看着也很简单,思路非常清晰。但真正需要自己想办法去设计一个系统的时候才发现其中的难度。经常做到后面突
然就发现自己一开始的设计有问题,然后又回去翻工,在各种反复中不断完善自己的想法。
我想有这样的问题不止我一个,事后想想是一开始着手做的时候下手过于轻快,或者说是根本不了解自己要做的这个系统是给谁用的。因为没有事先做过仔细的用户调查,不知道整个业务的流程,也不知道用户需要什么功能就忙着开发,这是作为设计开发人员需要特别警惕避免的,不然会给后来的工作带来很大的麻烦,甚至可能会需要全盘推倒重来。所以以后的课程设计要特别注意这一块的设计。
经过组内讨论,我们确定的课题是企业信息文档管理系统。说实话,我对这个系统不是很了解。通过上网查找资料、相关文献的阅读,我对该系统有了大体的了解。
在需求分析过程中,我们通过上网查资料,去图书馆查阅相关资料,结合我们的生活经验,根据可行性研究的结果和用户的需要,分析现有情况及问题。在一个月的时间里,不断地对程序及各模块进行修改、编译、调试、运行,其间遇到很多问题,经过组内讨论。最终把它解决了。通过这次课程设计,我对数据库的设计更加熟练了。
通过本次课程设计,对SQL语言,数据库的创建、修改、删除方法有了一定的了解,通过导入表和删除表、更改表,学会了数据库的基本操作。
很多事情不是想象中的那么简单的,它涉及到的各种实体、属性、数据流程、数据处理等等。很多时候感觉后面的设计根本无法继续,感觉像是被前面做的各种图限制了。在做关系模型转换的时候碰到有
些实体即可以认为是实体又可以作为属性,为了避免冗余,尽量按照属性处理了。
通过本次课程设计,我觉得不管做什么,始终都要相信自己。不要畏惧,不要怕遇到困难,什么都要去尝试,有些你开始认为很难的事在你尝试之后你可能会发现原来它并没有你你想象的那么难。如果没有自信,没有目标,没有信心就很难把事情做好,当其他人都在迷茫的时候,自己一定要坚信目标。从学习这个专业,到以后从事这方面的工作都需要不断地去学习去实践,这次实践可以给我们敲一个警钟,我们面临毕业,面临择业,需要这些实践经验,在困难面前要勇于尝试,这是这次课程设计给我的最大感想!
通过这次毕业设计的完成,使我对自己所学知识进一步的了解,同时通过实践发现自己的不足,对知识的掌握及运用存在诸多的不完善。本系统也存在着很多不足,如系统十分简单,实现功能也不够完善,安全性问题也没有很好的解决。所以在今后的学习中我会继续努力,完善自我,同学的帮助、指导老师的用心辅导和学校的精心安排使这个课题能够顺利进行。但是,由于时间仓促以及本人水平有限,本系统还有很多不完善之处,也难免存在错漏,恳请老师谅解。
第二篇:数据库课程设计总结
篇一:数据库课程设计个人总结 数据库课程设计个人总结
姓名:邢王秀 学号:200924101215 班级:09计本<2>班
一个月的时间非常快就过去了,这一个月我不敢说自己有多大的进步,获得了多少知识,但起码是了解了项目开发的部分过程。虽说上过数据库相关的课程,但是没有亲身经历过相关的设计工作细节。这次课程设计给我提供了一个很好的机会。
通过这次课程设计发现这其中需要的很多知识我们没有接触过,上网查找资料的时候发现我们以前所学到的仅仅是皮毛,还有很多需要我们掌握的东西我们根本不知道。同时也发现有很多已经学过的东西我们没有理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要自己不断的大量的实践,通过不断的自学,不断地发现问题,思考问题,进而解决问题。在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。
这次的数据库课程设计,我们组负责的企业信息文档管理系统的设计。这课题是自拟的。我们组实行的分工合作。我主要是负责数据库功能模块设计这部分。
从各种文档的阅读到需求分析、概要设计、数据库总体设计、代码编写与调试,我们都准备了好长时间。组内分工合作的整个过程,我亲身体验了一回系统的设计开发过程,分工合作的好处。很多东西书上写的很清楚,貌似看着也很简单,思路非常清晰。但真正需要自己想办法去设计一个系统的时候才发现其中的难度。经常做到后面突然就发现自己一开始的设计有问题,然后又回去翻工,在各种反复中不断完善自己的想法。
我想有这样的问题不止我一个,事后想想是一开始着手做的时候下手过于轻快,或者说是根本不了解自己要做的这个系统是给谁用的。因为没有事先做过仔细的用户调查,不知道整个业务的流程,也不知道用户需要什么功能就忙着开发,这是作为设计开发人员需要特别警惕避免的,不然会给后来的工作带来很大的麻烦,甚至可能会需要全盘推倒重来。所以以后的课程设计要特别注意这一块的设计。
经过组内讨论,我们确定的课题是企业信息文档管理系统。说实话,我对这个系统不是很了解。通过上网查找资料、相关文献的阅读,我对该系统有了大体的了解。
在需求分析过程中,我们通过上网查资料,去图书馆查阅相关资料,结合我们的生活经验,根据可行性研究的结果和用户的需要,分析现有情况及问题。在一个月的时间里,不断地对程序及各模块进行修改、编译、调试、运行,其间遇到很多问题,经过组内讨论。最终把它解决了。通过这次课程设计,我对数据库的设计更加熟练了。
通过本次课程设计,对sql语言,数据库的创建、修改、删除方法有了一定的了解,通过导入表和删除表、更改表,学会了数据库的基本操作。很多事情不是想象中的那么简单的,它涉及到的各种实体、属性、数据流程、数据处理等等。很多时候感觉后面的设计根本无法继续,感觉像是被前面做的各种图限制了。在做关系模型转换的时候碰到有些实体即可以认为是实体又可以作为属性,为了避免冗余,尽量按照属性处理了。
通过本次课程设计,我觉得不管做什么,始终都要相信自己。不要畏惧,不要怕遇到困难,什么都要去尝试,有些你开始认为很难的事在你尝试之后你可能会发现原来它并没有你你想象的那么难。如果没有自信,没有目标,没有信心就很难把事情做好,当其他人都在迷茫的时候,自己一定要坚信目标。从学习这个专业,到以后从事这方面的工作都需要不断地去学习去实践,这次实践可以给我们敲一个警钟,我们面临毕业,面临择业,需要这些实践经验,在困难面前要勇于尝试,这是这次课程设计给我的最大感想!
通过这次毕业设计的完成,使我对自己所学知识进一步的了解,同时通过实践发现自己的不足,对知识的掌握及运用存在诸多的不完善。本系统也存在着很多不足,如系统十分简单,实现功能也不够完善,安全性问题也没有很好的解决。所以在今后的学习中我会继续努力,完善自我,同学的帮助、指导老师的用心辅导和学校的精心安排使这个课题能够顺利进行。但是,由于时间仓促以及本人水平有限,本系统还有很多不完善之处,也难免存在错漏,恳请老师谅解。篇二:数据库课程设计总结报告
漳州师范学院 数据库课程设计
个人日程管理系统
姓 名: 某某
学 号:
系 别: 计算机科学与工程
专 业: 计算机科学技术专业
年 级: 08级
指导教师: 陈志翔、王桃发 2011年 05 月 23 4 篇三:数据库课程设计报告
《数据库类课程设计》 系统开发报告
学 号:111007133 姓 名:邢小迪
题 目: 企业员工薪资管理
指导教师: 王红梅
提交时间: 2013年6月01日
计算机科学与应用系 目 录 一 绪论
二 员工薪资管理系统概述·······························1 ? 现状分析········································1 ? 系统目标········································2 ? 系统特点········································3 三 员工薪资管理系统数据库设计·························3 ? 需求分析 ·······································3 ? 数据库物理结构分析 ····························4 ? 数据库概念结构设计 ····························6 ? 数据库逻辑结构设计····························9 四 员工薪资管理系统数据库功能模块的创建···········12 五 总结·············································21 ? 体会·········································21 ? 参考文献·····································22 一 绪论
随着计算机技术的飞速发展和经济体制改革的不断深入,传统企业管理方法、手段以及工作效率已不能适应新的发展需要,无法很好地完成员工工资管理工作。提高公司企业管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。基于 sql server数据库技术建立一个通用工资管理系统,该系统为提供了查询、增加记录、删除等功能,功能比较的齐全,并对工资进行了统计如津贴管理、报表统计等。基本上能满足管理员和公司的要求。此次数据库课程设计的主要设计如下:
原理分析、程序设计过程、程序实现和程序调试以及数据库的设计。
需求分析、概要结构设计、逻辑结构设计、物理结构设计和数据库的实施和维护。
二 员工薪资管理系统概述
1、现状分析
随着企业人员数量增加,企业的工资管理工作也变得越来越复杂。早期的工资统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间且不易保存,往往由于个人的因素抄写不慎或计算疏忽,出现工资发放错误的现象。早期工资管理多采取纸质材料和具有较强的时间限制。随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上都提出更高的要求。建设一个科学高效的信息管理系统是解决这一问题的必由之路。企业内部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一。工资管理作为企业内部的一种财务管理也是如此,由于企业职工人数较多,每一位职工的具体实际情况也不尽相同,各项工资条款的发放,如果没有一个完整的管理系统对企业和员工的工作都带来许多的不便。基于以上原因,企业工资管理系统使用电脑安全保存、快速计算、全面统计,实现工资管理的系统化、规范化、自动化。
2、系统目标
员工薪资管理系统的主要目的是利用计算机对员工的各种工资信息进行日常的管理,如查询、修改、添加、删除以及存储等,迅速准确地完成各种工资信息的统计计算和汇总工作,针对系统服务对象的具体要求,设计了企业工资管理系统。企业工资管理系统主要有以下几大功能:
(1)对单位人员的变动进行处理。一个单位的职工不会是一成不变的,总是在不断的变化:有调出、有调入、也有职工在本单位内部调动。因此,设计系统是应考虑到这些情况。(2)对职工的工资进行计算、修改。可以对职工的工资档案进行个别、部分和批量修改,同时,能对各职工的工资进行计算,即计算基本工资、岗位工资及实发金额等。(3)查询统计功能。要求即可以单项查询,比如查看某个职工的工资情况等;也可以多项查询,比如某个部门所有的员工的工资信息。
(4)对用户管理功能。一个系统的应用有管理员和普通用户,他们对系统的权限受到限制。
3、系统特点
(1)本系统使工资管理基本实现了信息化,系统设计的各种查询要求代替了原来了人工查询,即节省了人力,又减轻了员工的工作量,最重要的是由计算机操作,可以提高数据的准确性,避免人为的错误,方便管理。
(2)本系统设置了系统数据备份功能,定期的系统备份可以在数据库受到意外的或有意的破坏的情况下,系统得以恢复,减少损失。(3)本系统的界面设计简洁明了,采用了流行的菜单设计,对于不是计算机专业的管理人员,只需阅读操作说明书,就能方便的使用本系统。
三 员工薪资管理系统数据库设计
1、需求分析
本系统定位于中小型单位,暂时考虑单机环境下的实现;
第三篇:数据库课程设计总结
课 程 设 计 报 告
课程名称数据库课程设计—总结题目个人CD盘管理系统_________________________________
指导教师设计起止日期
学院计算机学院
系别专业计算机科学与技术
学生姓名班级/学号 成绩___________________
课程设计总结:
经过近2个月的设计,CD盘管理系统基本开发完成,该系统是一个简单的关于数据库与现实相结合的管理系统,它集各种功能用于一身,在系统的各个模块中体现了它的功能,针对音乐爱好者的需求方面进行设计的,方便了用户的一些信息操作,为音乐爱好者节省了管理成本,提高管理效率。该系统的界面简单大方,非常方便用户的操作,同时,也为以后系统的扩展留出了足够的空间。
在此次设计中后台主要采用了servlet和JavaBean技术,数据库则加入了存储过程和触发器的控制。我进一步理解了servlet和JavaBean的工作机制和所提供的便利,也感受到了存储过程和触发器所带来的方便。
servlet具有以下的优势:方便Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。* 功能强大在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。
2可移植性好Servlet用Java编写,Servlet API具有完善的标准。因此,为IPlanet
Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。3 节省投资不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。
JavaBean具有以下特点:
用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。
存储过程的能力大大增强了SQL语言的功能和灵活性。存储过程可以用流控制语
句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。可保证数据的安全性和完整性。通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。可以降低网络的通信量。使体现企业规则的运算程序放入数据库服务器中,以便集中控制。当企业规则发生变化时在服务器中改变存储过程即可,无须修改任何应用程序。企业规则的特点是要经常变化,如果把体现企业规则的运算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序工作量非常之大(修改、发行和安装应用程序)。如果把体现企业规则的运算放入存储过程中,则当企业规则发生变化时,只要修改存储过程就可以了,应用程序无须任何变化。
触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用 CHECK 约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。
在本系统的设计过程中,首先通过对CD盘管理系统功能进行详细的分析,得到系统功能模块图,然后根据系统功能分析,围绕它进行系统的设计,介绍开发环境和开发技术,再可行性分析、功能和性能需求,然后得出系统业务流图、数据流图、E-R图,并进行数据库的设计和模块化的实现。由于之前有稍微接触过Java Web方面的知识,再加上利用自己的课余时间的学习,做起来感觉没太多的困难。经过这次系统设计过程,加深了我对数据库操作的认识,更加熟悉了Java Web的构架,如servlet,struts,SOA等等。完成本设计后,才知道平日里书本上所学的东西太少,仅是些概念知识,没运用到实践中来,知识是无法得到升华的。只有不断地学习才能够跟上科技和知识的发展步伐。
第四篇:数据库课程设计个人总结
数据库课程设计个人总结
最近发表了一篇名为《数据库课程设计个人总结》的范文,感觉写的不错,希望对您有帮助,希望对网友有用。
在开学的第一周,我参加了院里组织的数据库课程设计,这项任务是分组分工完成的,我们组有五名成员,分别是我们班学号的后五位同学,很荣幸地我被推荐为我们组的组长,在组长的“英明”指导下,全体组员团结奋斗,使得任务完成地比我们预期的要稍早一些,也比预期要漂亮一些,这一点我们都感到很高兴也很自豪。
王婆卖瓜时间过了,言归正传吧。凡是都要有个总结,以下便是我在这个课程设计中的一点心得。
首先我分析一下我们组任务顺利
完成的成功之处并总结一些经验,供以后反省参考用。
凡事预则备,不预则废。这是我的座右铭,也是我深有感悟的几句古语之一。在这个项目的开始阶段,老师便让我们做了个进度安排表,我很好的利用了这次机会,花了较多心思作出了一个很详细的进度安排表,之后我们组任务的完成也是严格按照这个进度表进行的。当然我后来去了解了一下别的组的情况,有些组的进度安排表没我们组做完善的一个很重要的原因就是他们对这一周的数据库课程设计到底还没什么概念。导致这种现象的原因有很多方面,一个是基础太差不能理解老师安排的任务(当然这种人比较少),一种是缺乏交流,这个交流包括组内的交流,也包括组间的,范文TOP100更包括与老师之间的,这也就引出了我的第二个心得。
多交流,这是我这次项目的第二个心得。对于这种分工完成的项目,组员之间的交流是极其必要的。如果组员之
间不能很好的沟通,不仅会做很多无用功,而且也会做很多重复的工作。组员之间很好点,我们每天都会在qq上或者见面相互交流,并及时修改进度安排表;除此之外,我们还相互帮助解决问题,或者共同解决问题,比如说这次的概念模型的设计,我们组负责设计概念数据模型的同学(赵##)和负责数据需求分析的同学(左##)就经常沟通(因为两者的任务联系比较紧密),共同解决问题,才会做出令我们组员都比较满意的数据概念模型和漂亮的数据需求分析文档;当然最重要的是我们也常会去与老师沟通,老师也在关键的设计地方也给了很多很多的宝贵意见。当然不得不作出检讨的地方是组长这次与老师交流的比较少,反而不及组员,希望在接下来的项目中能有所改观,起好带头作用。我同样也有观察别的组完成情况,发现有些组出现了组长包干或者组长与个别组员的包干的现象,我觉得导致出现这种可怕现象的主要责任在于组长,组长的任务不仅
仅参与部分任务的完成,更重要的是分配任务并协调组间关系,是沟通交流的一根主要管道。通俗的讲就是组长上要联系老师,最全面的范文参考写作网站中要与他组交流,下要与组员积极沟通,我觉得这也是组长这个角色的设置的必要所在吧。我真心地希望在我们下一个创新课程j2ee的训练中我们班不要再出现这种现象,每个人都有平等得到锻炼的机会,组长不认真分配任务不积极与组员沟通在某种程度上剥夺了组员得到锻炼的机会,而更可悲的是很多组员还没有意识到这一点。
多主动,这一点原本和上一点多交流有很多相似之处,但我把它专门列出来也是为了体现他的重要性。多主动一方面是说要主动积极的思考解决问题。有很多同学比较好学,总是不停的在与别人沟通交流,看似很积极,但是仔细分析他提出的那些问题着实汗涔涔,有些问题近似牢骚话类,稍微开动点脑筋就能解决的,但其总不会先去寻找解决
问题的办法后再提出个经过大脑过滤的问题,说白了就是凡事都没有个自己稍微成熟的看法。关于这一点我曾经就一度犯过,现在回想起那段岁月着实还是对有些同学的耐心感动到热泪盈眶。直到有一天张老师找我谈了一次我才幡然醒悟到,之后便有了教大的长进,至少变得比较会提问题了。当然我觉得这一点还是值得给与一定程度的肯定的,至少他肯学,比起那种喜欢“搭顺风车”的同学强多了。我上面提到的而关于组长的剥夺组员锻炼权利的问题想必要是被有些组长看了会大有意见,组长会说:“你以为我喜欢一个人全干啊,还不是被逼的”。出现这种情况也于他们组喜欢“搭便车”的人太多了有关系,这也在一定程度上映射出了这个组组员和组长团队意识的极度缺乏。又扯远了,总之喜欢“搭车”的那部分同学可要提高警惕了,眼看过一年就要出去实习了,还不抓紧时间主动学点东西,还不停的让组长剥削你得到锻炼的机会,以后在这条
路上怎么混得下去啊?
以上很简单的三点让我们组在这次设计之中顺利完成了任务,下面谈谈我们组在这次任务中做的不足的地方吧。
首先得从组长自身谈起,刚有说到组长与老师交流较少是第一点,第二点是组长一直以来的老毛病了,就是基础不扎实,数据库的理论知识很多考完就忘的干干净净,在项目的开始阶段又返工去补习部分数据库的知识,思想汇报专题而且我们的组员大部分也这样,甚至班里有很多同学也是这样的。所以以后对于重要的专业基础课一定要牢牢把握,绝不能追求过一门算一门。不过话说回来,组长这次返工还是较有成效,很快的理解了设计任务,并以最快的速度做好了详细的进度安排表,需要被鼓励一下呵呵。第三点就是组长对问题的解决程度缺乏完美的追求,说通俗一点就是不求甚解,其实在我们的设计模型中,有一些地方还可以做调整的,数据 的完整性和合理性将会进一步提升,如果我带领组员朝这个方向再多努力一点,水平就不仅仅提高几个档次了,但是组长鼓励组员去解决了一部分,且在一些地方确实做了修改。
其次说说组员,这几位组员中有两位与组长合作过一次,默契还不错,在这次的任务的完成中发挥了很大的作用,他们是周#和左##,分别担任功能需求说明书的编写和数据需求分析说明书的编写,曾在第一次小组会议就表示一定要交出令组长非常满意的作品,而且事实的确是这样,范文写作都完成的很出色。而其余两位同学相对主动性就差了点,总是要组长不停的花心思督促能勉强完成任务,令组长很是头疼,但总的来说还是很配合,但这也在一定程度上导致组内组员水平出现较大差异。
第五篇:数据库课程设计
需求分析
在银行业务模拟中用随机函数产生随机数,求客户在银行的平均时间,客户来到银行后加入两个队列,客户办理的业务有两种,一是取款和贷款,二是存款和还款。概要设计
typedef struct service { int num;//客户号 string type;//到达或离开 int beginTime;int endTime;int money;//正数为存款,负数为取款 struct service* next;}service;typedef struct //队列 { service* head;service* rear;}queue;int total;//初始时银行现存资金总额 int closeTime;//营业结束时间
int arriveTime;//两个到达事件之间的间隔上限 int dealTime;//客户交易的时间上限 int dealMoney=5000;//交易额上限 int currentTime=0;//当前时间 int totalTime=0;//客户逗留总时间 int counter=0;//客户总数 int number=1;//初始客户序列号 int currentTimeOfDeal=0;int theArriveTime=0;queue eq;//事件队列 queue fq;//队列一
queue sq;//对列二 //初始化三个队列 service* temped;int Time;void push(queue &q,int a)// 插入元素a为Q的新的队尾元素 void pop(queue &q)// 若队列不空,出对列函数 service* front(queue &q)//返回队首元素 service* back(queue &q)//返回队尾元素
service* searchAndDel(queue &q,int m)//在对列中寻找可处理元素 bool state=1;//用于判断是否有窗口在处理
void arrive()//“到达”函数 随机产生顾客,进入队列一产生到达事件 进入事件队列
void putMoney()//存款函数 void getMoney()//取款函数
void findAndDeal()//在对列中寻找可处理元素,对其进行处理 运行环境
Window XP Visual C++ 开发工具和编程语言
Visual C++ C++ 详细设计
1.队列的链式表示和实现 typedef struct service { int num;//客户号
string type;//到达或离开 int beginTime;int endTime;int money;//正数为存款,负数为取款 struct service* next;}service;typedef struct //队列 { service* head;service* rear;}queue;2.插入一个元素为队尾元素 void push(queue &q,int a){ service* p=new service;p->money=a;p->next=NULL;if(q.head==NULL)//列队为空,初始化 { q.head=p;q.rear=p;} else //队列不为空,插入元素a { q.rear->next=p;q.rear=q.rear->next;} } 3.返回函数
service* front(queue &q)//返回队首元素 { return q.head;} service* back(queue &q)//返回队尾元素 { return q.rear;} 4.在对列中寻找可处理元素
service* searchAndDel(queue &q,int m){ service* sign=q.head;//标记头节点 service* p;while(q.head!=NULL){ if((-(q.head->money)) { p=q.head;q.head=q.head->next;//首节点后移一位,返回原首节点 return p;} } if((-(q.head->money))>m)//队首元素不能被处理 { if(q.head==q.rear){ } return NULL;else //首节点移到队列尾部 { q.rear->next=q.head;q.rear=q.rear->next;q.head=q.head->next;q.rear->next=NULL;} } if(q.head==sign)//队列循环一周时停止 return NULL;} return NULL;} 5.到达函数 void arrive()//到达“函数 随机产生顾客,进入队列一产生到达事件 进入事件队列 { push(fq,(rand()%(2*dealMoney)-dealMoney));//随机产生顾客加入第一队列 back(fq)->beginTime=currentTime;back(fq)->num=number;push(eq,(back(fq)->money));//将产生事件加入事件队列 back(eq)->beginTime=currentTime;back(eq)->type=”到达“;back(eq)->num=number;++number;} 6存款函数 void putMoney(){ total+=front(fq)->money;//更新资金总额 push(eq,front(fq)->money);//加入事件队列 离开 back(eq)->type=”离开“;back(eq)->num=front(fq)->num;back(eq)->endTime=(front(fq)->beginTime+rand()%dealTime+1);++counter;//更新客户总数 totalTime+=(back(eq)->endTime-front(fq)->beginTime);//更新逗留时间 pop(fq);//删除第一队列第一个业务 currentTimeOfDeal=back(eq)->endTime;state=0;} 7取款函数 void getMoney()//取款函数 { if((-fq.head->money)>total)//资金短缺 加入第二队列 { push(sq,front(fq)->money);back(sq)->beginTime=front(fq)->beginTime;back(sq)->num=front(fq)->num;pop(fq);6 } else { total=total+back(fq)->money;push(eq,front(fq)->money);//加入事件队列离开 back(eq)->type=”离开“;back(eq)->num=front(fq)->num;back(eq)->endTime=(front(fq)->beginTime+rand()%dealTime+1);back(eq)->beginTime=0;currentTimeOfDeal=back(eq)->endTime;++counter;//更新客户总数 totalTime+=(back(eq)->endTime-back(fq)->beginTime);//更新逗留时间 pop(fq);//删除第一队列第一个业务 state=0;} } 8.在对列中寻找可处理元素,对其进行处理 void findAndDeal(){ while((temped=searchAndDel(sq,total))&&NULL!=temped)//查找可处理取款 { total+=temped->money; totail=total+temped->money;push(eq,temped->money);//加入事件队列训 离开 back(eq)->type=”离开“;back(eq)->num=temped->num;randomTemp=rand()%dealTime+1; //更 新资 金总额 7 back(eq)->endTime=currentTime+randomTemp;currentTimeOfDeal+=randomTemp;++counter;//更新客户总数 totalTime+=(back(eq)->endTime-temped->beginTime);//更新逗留时间 delete temped;//删除节点 temped=NULL;} state=0;} 9 主函数 int main(){ int m;cin>>m;if(m=111111){ cout<<”欢迎进入系统< srand(time(NULL));//初始化随机函数 cout<<”输入银行的初始存款:n“;cin>>total;cout<<”输入银行的营业时间:n“;cin>>closeTime;8 cout<<”输入最大到达时间间隔:n“;cin>>arriveTime;cout<<”输入最大的处理时间:n“;cin>>dealTime;theArriveTime+=rand()%arriveTime+1;//首次到达时间 while(currentTime } cout< } if(state==1&&fq.head!=NULL){ } if(fq.head->money>=0){ } else getMoney();putMoney();findAndDeal();arrive();theArriveTime+=rand()%arriveTime+1;9 <<”事件类型“<<”tt“ <<” 时间“<<”t“ <<” 处理金额“< } cout<<”未处理客户:“<<”“< < < cout< } } cout<<”银行当前余额:"< 在用随即函数rand产生随机数的时候,对其初始化用srand(time(NULL),为了使得产生的随机数是整数要在后面加一 测试结果 如图一所示为输入密码进入系统后 图一输入密码进入系统后 如图二为输入银行的初始存款,营业时间,两个到达事件的最大间隔,客户交易的最大时间 图二输入各项信息后 如图三所示产生的客户信息 图三 客户的信息(到达时间和离开时间,平均在的时间) 参考文献 [1] 吴文虎,程序设计基础(第二版),北京,清华大学出版社 [2] 谭浩强,C语言程序设计,北京,清华大学出版社 [3] 边肇祺,模式识别(第二版),北京:清华大学出版社 [4] 李永忠,几种小波变换的图像处理技术,西北民族学院学报,自然科学版 [5] 严蔚敏,吴伟民,米宁,数据结构题集(c语言版),清华大学出版社 心得体会 转眼之间,来到大学已经一年半的时间了,对程序的学习也有了初步的认识,在大一的时候学习了程序设计,大二紧接着又学了数据结构,在这次的课程设计中,遇到了一些问题,通过老师和同学的帮助得到了解决,并且对程序设计的认识又提高了一个层次,在以后的学习中,对经常出现的问题会更加注意。 这次的课程设计给了我很大的帮助,在过程中学到了很多的知识,对程序的规范性以及有效性更加的重视。在以后编程序的过程中会更加注意程序的完善性,使程序的功能更加的齐全,而这也是作为一个程序设计师必须要具备的。认识到只有多多的练习才能更好的运用所学习的知识。在大学里要充分的利用各种资源,提高自己的水平。