基于中间件的图书管理系统unix课程设计(40页).doc
《基于中间件的图书管理系统unix课程设计(40页).doc》由会员分享,可在线阅读,更多相关《基于中间件的图书管理系统unix课程设计(40页).doc(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-基于中间件的图书管理系统unix课程设计-第 36 页UNIX系统与软件开发课程设计说明书设计题目: 图书管理系统 专 业: 计算机科学与技术 指导教师: 班 级: 学 号: 姓 名: 同 组 人: 计算机科学与工程学院2014 年 6 月18 日前言在信息技术发展迅猛的二十一世纪的今天,我们需要掌握的不仅仅是科学文化知识,还需要把所学到的知识合理的运用到现实生活中来。科学技术是第一生产力,它给我们带来的不仅仅是生活中的各种便利和生活水平的不断提高,同时也给带给了我们各种各样的不同类型和不同层次的科技的领先发展的成果。在中间件诞生之前,多采用传统C/S二层结构。这种二层结构是计算机及软件技术
2、发展的一大进步。一般而言,服务器是一个进程,它等待客户机与其联系,提出某种类型的服务要求。C/S模式在操作过程中采取的是主动请求方式。服务对客户机服务可将结果或信息返回给客户机(双向),也可不返回(单向)。虽然它带来了相当的灵活性,但也逐渐暴露出其客户端和服务器端负担过重的现象,并且拓展性也较差,无法跨越不同的业务部门和业务系统。这不仅表现在技术上有难度,更重要的是在制度和安全方面。于是,三层结构出现了所谓三层结构,就是在原有的两层结构之间,增加一个中间层。该中间层既包括服务也包括请求中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/
3、服务器的操作系统之上,管理计算资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或 OS 环境。它的工作机制是:当客户端上的应用程序需要从网络中某个节点处获取一定的数据或服务时,这些数据和服务可能处于一个运行着和客户端不同的硬、软件、网络或操作系统的平台上。C/S应用程序中负责寻找数据的部分只需访问一个中间件系统,由中间件完成到网络中找到数据源或服务,进而实现传输客户请求、重组答复信息,最后将结果送回应用程序的任务。 本次设计的中间件是交易型中间
4、件。交易型中间件是指用在不同行业、不同部门间的通讯转发和协议转换的软件,在不同的行业、不同的系统间提供通讯转发和协议转换的桥梁作用。本次设计不是基于WEB的,不需要很多与WEB开发相关的知识,主要是利用UNIX系统提供的Socket库在网络底层,开发交易型中间件。本次设计的目的是掌握利用软件工程的思想方法和TCP/IP设计出用于不同行业和部门间的通讯转发或协议转换软件中间件,尤其掌握这种设计的思想和方法。目录一、系统环境11、硬件环境12、软件环境1二、设计目的及要求22.1设计目的22.2设计要求2三、总体设计43.1程序设计组成框图43.2程序设计类图53.3程序设计流程图6四、详细设计7
5、4.1基本套接字系统调用74.2 MySQL数据库在Unix的使用84.2.1 软件包需要84.2.2 MySQL服务配置94.2.3 MySQL客户端命令行工具94.2.4 客户端命令行94.2.5 MySQL开发接口9五、调试与测试115.1调试方法115.2测试结果分析及讨论11六、设计中遇到的问题及解决方法22七、源程序清单237.1数据库代码237.2服务器代码247.3中间件程序337.4客户端程序36八、心得体会57九、参考文献58一、系统环境1、硬件环境Pentium(R), 4 cpu 3.06GHz,512MB内存。2、软件环境该图书管理系统是在windows XP操作系统
6、下使用Linux虚拟机环境,使用GNU C,在UNIX/Linux make开发工具的管理和控制下,利用UNIX/Linux Socket库和MySQL数据库在网络的底层进行开发设计的。二、设计目的及要求2.1设计目的基于UNIX Socket和MySQL数据库,设计一个交易型中间件系统。这里的中间件是指交易型中间件。交易型中间件是指用在不同行业、不同部门间的通讯转发和协议转换的软件,在不同的行业、不同的系统间提供通讯转发和协议转换的桥梁作用。例如电子商务、银行代理业务软件等都是这种类型的软件。本设计不是基于WEB的,不需要很多与WEB开发相关的知识,主要是利用UNIX系统提供的Socket库
7、在网络底层,开发交易型中间件。本设计的目的是使参与设计者掌握利用软件工程的思想方法和TCP/IP设计出用于不同行业和部门间的通讯转发或协议转换软件中间件,尤其掌握这种设计的思想和方法。在很多场合中间件部分是必须的,因为在不同的行业的网络是不允许直通的。这里有政策的因素,有制度的要求,也有技术的成份。2.2设计要求(1)客户端客户端程序可命名为client,要求带有两个命令行参数一个是服务(自己定义,并保存在/etc/services中,比如mysvr1 5678),另一个是目的主机(自己定义,并保存在/etc/hosts内,也可使用DNS来解析),缺省时为本机。客户端至少要实现如下功能:用户管
8、理;查询;交易(交费,购物等);撤销;留迹;本地业务统计。客户端的环境可以是Windows系统,也可以的Linux系统。(2)中间件中间件程序命名为middle,要带有三个参数,一个是用于服务器的服务(名字,与客户端同),第二个作为请求的服务(自己定义,并保存在/etc/services中,要区别于客户端,比如mysvr2 5679),第三个为目的主机(定义在/etc/hosts内),缺省时为本机。中间件要完成与客户要求相符的功能:是本地的本地处理,否则发往服务器方。具体地是:接收客户方数据;组织服务器方所需数据;重组服务方返回数据,并返回给客户方;留迹;本地业务统计。中间件的环境可以是Win
9、dows系统,也可以的Linux系统。(3)服务器服务器程序命名为server,要求带有一个服务参数,与中间件的mysvr2同服务器方程序要完成客户端或中间件提出的业务请求,并做好留迹工作。服务端环境必须是Linux系统。(4)留迹或log留迹或log工作在客户端、中间件和服务器三方都要做,以供统计或核对使用。客户端或中间件方可以使用文本文件或数据库,但在服务器方必须使MySql数据库。三、总体设计3.1程序设计组成框图设计过程中借助了中间件来实现主机和客户机之间的链接,它的工作机制是:当客户端上的应用程序需要从网络中某个节点处获取一定的数据或服务时,这些数据和服务可能处于一个运行着和客户端不
10、同的硬、软件、网络或操作系统的平台上。C/S应用程序中负责寻找数据的部分只需访问一个中间件系统,由中间件完成到网络中找到数据源或服务,进而实现传输客户请求、重组答复信息,最后将结果送回应用程序的任务。Server_mserver_1MiddleClient_2Client_1图3.1.1 中间件服务框图serverClient_nClient_1 图3.1.2 c/s客户/服务器模式框图3.2程序设计类图socket()建立服务方套接字描述符为sSocket()建立服务方套接字,描述符为sConnect()建立服务方连接Send()和write()向服务方发送请求客户方等待服务方Recv()和
11、read()读取服务方数据Close()关闭最初套接字s,结束服务器服务Close()关闭套接字ns,结束本次对话进行服务处理成功后返回与s具有相同特性的套接字accept(s)等待客户方链接Listen(s)通知TCP,准备接受bind(s)绑定套接字与本地地址和端口recv()和read()通过ns读取客户方数据Send()和writer()向客户方提供服务结果Close()关闭套接字s,结束本次通话图3.2.1 程序设计类图3.3程序设计流程图 开始登录结束查询用户管理员 输入密码续借删除添加借书还书显示借阅信息 请求服务中间件数据库服务器 和数据库交换数据图3.3.1 程序设计流程图四
12、、详细设计4.1基本套接字系统调用 【1】创建套接字socket() 应用程序在使用套接字前,必须拥有一个套接字,系统调用socket()向应用程序提供创建套接字的手段。其调用格式如下:#includeint socket(int domain, int type, int protocol);该调用要接收3个参数,根据这3个参数建立一个套接字,并将相应的资源分配给它,同时返回一个整型套接字号,只和一个特定的协议相联系。实际上指定了相关五元组中的“协议”这一元。domain(协议族):AF_INET,AF_UNIX,AF_IPXtype(类型):SOCK_STREAM,SOCK_DGRAMpr
13、otocol(协议):0-让系统使用指定类型和协议族上的默认协议。【2】绑定本地地址bind()当一个套接字用socket()创建后,存在一个名字空间(地址族),但它没有被命名,bind()将套接字地址(包括本地主机地址和本地端口地址)与所创建的套接字号绑定起来,即将名字赋予套接字,以指定本地半相关。其调用格式如下:#include int bind(int sockfd,const struct sockaddr *my_addr, int addrlen);说明:sockfd:为socket成功时的返回值套接字描述符。my_addr为本方地址数据结构。addrlen=sizeof(my_a
14、ddr).【3】监听连接listen() 此调用用于面向连接服务器,表明它愿意接收连接。1isten()需在accept()之前调用,其调用格式如下:#includeint listen(int s,int backlog);listen()在执行调用过程中可为没有调用过bind()的套接字s完成所必需的连接,并建立长度为backlog的请求连接队列。backlog定义最大长度的socket等待队列。默认值为5. 【4】connect(),accept()这两个系统调用用于完成一个完整相关的建立,其中connect()用于客户建立连接。accept()用于使服务器等待来自某客户进程的实际连接。
15、connect功能:客户方调用发出的请求用法:int connect(int sockfd,const structct sockaddr * server_addr, socklen_t addrlen); 在面向连接的协议中,该调用导致本地系统和外部系统之间连接实际建立。 accept服务器调用,从等待从编号为s的套接字上接受客户连接请求用法:int accept(int s, struct sockaddr *addr, socklen_t addrlen); connect与accept的说明调用accept()后,服务器等待从编号为s的套接字上接受客户连接请求,连接请求是由客户方的c
16、onnect()调用发出的。当有连接请求到达时,accept()调用将请求连接队列上的第一个客户方套接字地址及长度放入addr和addrlen,并创建一个与s有相同特性的新套接字号。新的套接字可用于处理服务器并发请求。 【5】数据传输:send()/write与recv()/read() 当一个连接建立以后,就可以传输数据了。常用的系统调用有send()和recv()。send()调用用于在参数s指定的已连接的数据报或流套接字上发送输出数据,格式如下:int send(int s,void *buf,int len,int flags);int recv(int s,void *buf,int
17、 len,int flags); recv/send可由文件系统调用read/write所取代。在处理二进制数据处理时,后者优于前者。【6】关闭套接字:close()close()关闭套接字s,并释放分配给该套接字的资源;如果s涉及一个打开的TCP连接,则该连接被释放。close()的调用格式如下:int close(int s);4.2 MySQL数据库在Unix的使用4.2.1 软件包需要1)MySql服务器mysql-server-3.23.54a-11mysql-server-3.23.58-1.92)MySql客户端mysql-3.23.54a-11mysql-3.23.58-1.9
18、3)MySql开发接口库mysql-devel-3.23.54a-11mysql-devel-3.23.58-1.94.2.2 MySQL服务配置 mysqyld服务要运行起来。最好是设为开机自动启动。方法: chkconfig level 2345 mysqld on ntsysv service mysqld start / stop /restart 图形方式4.2.3 MySQL客户端命令行工具MySqyl客户端命令行工具为mysql。其常用法为:mysql OPTIONS database output.tab常用参数有:-?, -help: 帮助-D, -database=DB_n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 中间件 图书 管理 系统 unix 课程设计 40
限制150内