数据库课程设计说明

2022-08-25

第一篇:数据库课程设计说明

《数据库技术与物流软件开发》课程设计说明书内容

山东科技大学学生课程设计

目录

1.课题简介………………………………………………………1

1.1 课题研究目的和意义………………………………………1

1.2 课题主要研究内容…………………………………………1

2.系统分析………………………………………………………1

2.1 业务流程图…………………………………………………1

2.2 用户需求分析………………………………………………1

2.3 系统功能设计………………………………………………1

3.系统设计………………………………………………………1

3.1 总体设计……………………………………………………1

3.2 详细设计……………………………………………………1

3.3 数据结构设计………………………………………………1

4.系统实施……………………………………………………1

4.1 各功能界面设计(每个功能作一小节)………………1

6.使用说明……………………………………………………1

7.参考资料……………………………………………………1

第页

第二篇:**数据库设计说明书

班级:姓名:学号

1 引言

1.1 编写目的

1.2 编写背景

2 系统功能分析

3 系统结构设计

3.1 概念结构设计(得出实体图)

3.2 逻辑结构设计(实体、联系的具体信息)

3.3 物理结构设计(表的结构)

4 权限设计

5 设计实施与实现

第三篇:数据库课程设计

1 需求分析

在银行业务模拟中用随机函数产生随机数,求客户在银行的平均时间,客户来到银行后加入两个队列,客户办理的业务有两种,一是取款和贷款,二是存款和还款。

2 概要设计

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;

1 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()//在对列中寻找可处理元素,对其进行处理

3 运行环境

Window XP Visual C++

4 开发工具和编程语言

Visual C++ C++

5 详细设计

1.队列的链式表示和实现 typedef struct service { int num; //客户号

2 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. 返回函数

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; }

4 } 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)); //将产生事件加入事件队列

5 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<<”欢迎进入系统<>n; while(n==1) {

srand(time(NULL)); //初始化随机函数 cout<<"输入银行的初始存款: "; cin>>total; cout<<"输入银行的营业时间: "; cin>>closeTime; 8

cout<<"输入最大到达时间间隔: "; cin>>arriveTime; cout<<"输入最大的处理时间: "; 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

<<"事件类型"<<" " <<" 时间"<<" " <<" 处理金额"<

} cout<<"未处理客户:"<<""type=="离开") cout

cout

}

} cout<<"银行当前余额:"<

在用随即函数rand产生随机数的时候,对其初始化用srand(time(NULL),为了使得产生的随机数是整数要在后面加一

7 测试结果

如图一所示为输入密码进入系统后

图一输入密码进入系统后

如图二为输入银行的初始存款,营业时间,两个到达事件的最大间隔,客户交易的最大时间

图二输入各项信息后

如图三所示产生的客户信息

图三 客户的信息(到达时间和离开时间,平均在的时间)

参考文献

[1] 吴文虎,程序设计基础(第二版),北京,清华大学出版社 [2] 谭浩强,C语言程序设计,北京 ,清华大学出版社 [3] 边肇祺,模式识别(第二版),北京:清华大学出版社

[4] 李永忠,几种小波变换的图像处理技术,西北民族学院学报,自然科学版 [5] 严蔚敏,吴伟民,米宁,数据结构题集(c语言版),清华大学出版社

心得体会

转眼之间,来到大学已经一年半的时间了,对程序的学习也有了初步的认识,在大一的时候学习了程序设计,大二紧接着又学了数据结构,在这次的课程设计中,遇到了一些问题,通过老师和同学的帮助得到了解决,并且对程序设计的认识又提高了一个层次,在以后的学习中,对经常出现的问题会更加注意。

这次的课程设计给了我很大的帮助,在过程中学到了很多的知识,对程序的规范性以及有效性更加的重视。在以后编程序的过程中会更加注意程序的完善性,使程序的功能更加的齐全,而这也是作为一个程序设计师必须要具备的。认识到只有多多的练习才能更好的运用所学习的知识。在大学里要充分的利用各种资源,提高自己的水平。

第四篇:数据库设计说明书_规范

学生信息管理系统 撰写人:郭清顺 版本:V1.0

学生信息系统数据库设计说明书

学生信息管理系统 撰写人:郭清顺 版本:V1.0 1.引言 1.1编写目的

说明编写这份数据设计说明书的目的,指出预期的读者。

1.2背景

1.2.1待开发数据库的名称和使用此数据库的软件系统的名称; 1.2.2 列出本项目的任务提出者、开发者、用户。 1.3定义

列出本文件中用到的专门术语的定义和外文首字母组词的原词组。 1.4参考资料

列出有关的参考资料。

2.项目详述

2.1项目背景

列出本项目的开发背景、当前约束。

2.2 系统结构

列出系统的总体设计结构,如采用的架构、采用的相关技术等。

2.3 项目需求详述

详述项目的需求模块,功能详尽说明,输入输出接口,处理流程等。

3.结构设计

3.1概念结构设计

说明本系统数据库将反映的现实世界中的实体、属性和它们之间的关系等的(ER)原始数据形式,包括各数据项、记录、系、文卷的标识符、定义、类型、度量单位和值域,建立本数据库的每一幅用户视图。

3.2逻辑结构设计

说明把上述原始数据进行分解、合并后重新组织起来的数据库全局逻辑结构。表、视图、存储过程及触发器的名称、结构、操作注意事项进行定义和说明。 4.其它设计

说明在数据库的设计中,将如何通过区分不同的访问者、不同的访问类型和不同的数据对象,进行分别对待而获得的数据库安全保密的设计考虑等。

数据库的备份计划等。

第五篇:数据库课程设计总结

课 程 设 计 报 告

课程名称数据库课程设计—总结题目个人CD盘管理系统_________________________________

指导教师设计起止日期

学院计算机学院

系别专业计算机科学与技术

学生姓名班级/学号 成绩___________________

课程设计总结:

经过近2个月的设计,CD盘管理系统基本开发完成,该系统是一个简单的关于数据库与现实相结合的管理系统,它集各种功能用于一身,在系统的各个模块中体现了它的功能,针对音乐爱好者的需求方面进行设计的,方便了用户的一些信息操作,为音乐爱好者节省了管理成本,提高管理效率。该系统的界面简单大方,非常方便用户的操作,同时,也为以后系统的扩展留出了足够的空间。

在此次设计中后台主要采用了servlet和JavaBean技术,数据库则加入了存储过程和触发器的控制。我进一步理解了servlet和JavaBean的工作机制和所提供的便利,也感受到了存储过程和触发器所带来的方便。

servlet具有以下的优势:

1 方便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等等。完成本设计后,才知道平日里书本上所学的东西太少,仅是些概念知识,没运用到实践中来,知识是无法得到升华的。只有不断地学习才能够跟上科技和知识的发展步伐。

上一篇:顺境逆境那个更重要下一篇:市纪委工作汇报材料