linux和window是+平台cs模式图书管理系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

河南城建学院《软件实习2》设计说明书设计题目:图书管理系统专业:计算机科学与技术指导教师:邵国金张俊峰杨斌郭猛班级:0614073学号:061407345姓名:周飞同组人:李东旭宁亮计算机科学与工程系2010年09月10日-1-前言在信息技术发展迅猛的二十一世纪的今天,我们需要掌握的不仅仅是科学文化知识,还需要把所学到的知识合理的运用到现实生活中来。科学技术是第一生产力,它给我们带来的不仅仅是生活中的各种便利和生活水平的不断提高,同时也给带给了我们各种各样的不同类型和不同层次的科技的领先发展的成果。在中间件诞生之前,多采用传统C/S二层结构。这种二层结构是计算机及软件技术发展的一大进步。一般而言,服务器是一个进程,它等待客户机与其联系,提出某种类型的服务要求。C/S模式在操作过程中采取的是主动请求方式。服务对客户机服务可将结果或信息返回给客户机(双向),也可不返回(单向)。虽然它带来了相当的灵活性,但也逐渐暴露出其客户端和服务器端负担过重的现象,并且拓展性也较差,无法跨越不同的业务部门和业务系统。这不仅表现在技术上有难度,更重要的是在制度和安全方面。于是,三层结构出现了所谓三层结构,就是在原有的两层结构之间,增加一个中间层。该中间层既包括服务也包括请求中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。它的工作机制是:当客户端上的应用程序需要从网络中某个节点处获取一定的数据或服务时,这些数据和服务可能处于一个运行着和客户端不同的硬、软件、网络或操作系统的平台上。C/S应用程序中负责寻找数据的部分只需访问一个中间件系统,由中间件完成到网络中找到数据源或服务,进而实现传输客户请求、重组答复信息,最后将结果送回应用程序的任务。本次设计的中间件是交易型中间件。交易型中间件是指用在不同行业、不同部门间的通讯转发和协议转换的软件,在不同的行业、不同的系统间提供通讯转发和协议转换的桥梁作用。本次设计不是基于WEB的,不需要很多与WEB开发相关的知识,主要是利用UNIX系统提供的Socket库在网络底层,开发交易型中间件。本次设计的目的是掌握利用软件工程的思想方法和TCP/IP设计出用于不同行业和部门间的通讯转发或协议转换软件—中间件,尤其掌握这种设计的思想和方法。-2-目录一、系统环境……………………………………………………………3二、设计目的及其要求…………………………………………………31.设计目的……………………………………………………………………32.设计要求……………………………………………………………………3三、总体设计……………………………………………………………41.程序设计组成框图…………………………………………………………42.程序设计流程图……………………………………………………………53.类图…………………………………………………………………………5四、详细设计……………………………………………………………6五、调试与测试…………………………………………………………81.调试方法……………………………………………………………………92.测试结果分析及讨论………………………………………………………9六、遇到的问题及解决方法……………………………………………13七、源程序清单…………………………………………………………131.数据库代码…………………………………………………………………132.服务器代码…………………………………………………………………143.中间件程序…………………………………………………………………224.客户端程序…………………………………………………………………24八、心得体会……………………………………………………………38九、参考文献……………………………………………………………38-3-系统环境1.硬件环境:Pentium(R)4cpu3.06GHz,512MB内存2.软件环境:该图书管理系统是在windowsXP操作系统下使用Linux虚拟机环境,使用GNUC,在UNIX/Linuxmake开发工具的管理和控制下,利用UNIX/LinuxSocket库和MySQL数据库在网络的底层进行开发设计的。设计目的及其要求1.设计目的:基于UNIXSocket和MySQL数据库,设计一个交易型中间件系统。这里的中间件是指交易型中间件。交易型中间件是指用在不同行业、不同部门间的通讯转发和协议转换的软件,在不同的行业、不同的系统间提供通讯转发和协议转换的桥梁作用。例如电子商务、银行代理业务软件等都是这种类型的软件。本设计不是基于WEB的,不需要很多与WEB开发相关的知识,主要是利用UNIX系统提供的Socket库在网络底层,开发交易型中间件。本设计的目的是使参与设计者掌握利用软件工程的思想方法和TCP/IP设计出用于不同行业和部门间的通讯转发或协议转换软件—中间件,尤其掌握这种设计的思想和方法。在很多场合中间件部分是必须的,因为在不同的行业的网络是不允许直通的。这里有政策的因素,有制度的要求,也有技术的成份。2.设计要求:(1)客户端客户端程序可命名为client,要求带有两个命令行参数一个是服务(自己定义,并保存在/etc/services中,比如mysvr15678),另一个是目的主机(自己定义,并保存在/etc/hosts内,也可使用DNS来解析),缺省时为本机。客户端至少要实现如下功能:用户管理;查询;交易(交费,购物等);撤销;留迹;本地业务统计。客户端的环境可以是Windows系统,也可以的Linux系统。(2)中间件中间件程序命名为middleware,要带有三个参数,一个是用于服务器的服务(名字,与客户端同),第二个作为请求的服务(自己定义,并保存在/etc/services中,要区别于客户端,比如mysvr25679),第三个为目的主机(定义在/etc/hosts内),缺省时为本机。-4-中间件要完成与客户要求相符的功能:是本地的本地处理,否则发往服务器方。具体地是:接收客户方数据;组织服务器方所需数据;重组服务方返回数据,并返回给客户方;留迹;本地业务统计。中间件的环境可以是Windows系统,也可以的Linux系统。(3)服务器服务器程序命名为server,要求带有一个服务参数,与中间件的mysvr2同。服务器方程序要完成客户端或中间件提出的业务请求,并做好留迹工作。服务端环境必须是Linux系统。(4)留迹或log留迹或log工作在客户端、中间件和服务器三方都要做,以供统计或核对使用。客户端或中间件方可以使用文本文件或数据库,但在服务器方必须使用MySql数据库。总体设计1.程序设计组成框图设计过程中借助了中间件来实现主机和客户机之间的链接,它的工作机制是:当客户端上的应用程序需要从网络中某个节点处获取一定的数据或服务时,这些数据和服务可能处于一个运行着和客户端不同的硬、软件、网络或操作系统的平台上。C/S应用程序中负责寻找数据的部分只需访问一个中间件系统,由中间件完成到网络中找到数据源或服务,进而实现传输客户请求、重组答复信息,最后将结果送回应用程序的任务。中间件服务框图-5-c/s客户/服务器模式框图2.程序设计流程图3.类图进入程序登陆useradim续借还书借书删除添加退出查询显示借阅信息中间件服务器数据库输入密码请求服务和数据库交换数据进入程序登陆useradim续借还书借书删除添加退出查询显示借阅信息中间件服务器数据库输入密码请求服务和数据库交换数据Socket()建立服务方套接字,描述符为sBind()绑定套接字与本地地址和端口Listen()通知TCP,准备接受Accept()等待客户方链接………成功后返回与s具有相同特性的套接字recv()和read()读取客户方数据进行服务处理send()和write()向客户方提供服务结果Close()关闭套接字ns,结束本次对话Close()关闭最初套接字s,结束服务器服务Socket()建立服务方套接字,描述符为sConnect()建立服务方链接send()和write()向服务方发送请求等待服务器方recv()和read()读取服务方数据Close()关闭套接字s,结束本次对话客户方Socket()建立服务方套接字,描述符为sBind()绑定套接字与本地地址和端口Listen()通知TCP,准备接受Accept()等待客户方链接………成功后返回与s具有相同特性的套接字recv()和read()读取客户方数据进行服务处理send()和write()向客户方提供服务结果Close()关闭套接字ns,结束本次对话Close()关闭最初套接字s,结束服务器服务Socket()建立服务方套接字,描述符为sConnect()建立服务方链接send()和write()向服务方发送请求等待服务器方recv()和read()读取服务方数据Close()关闭套接字s,结束本次对话客户方-6-详细设计socket程序库是UNIX网络上最普及的API,可调用socket程序库提供的各个程序开发网络软件和网络系统。基本套接字系统调用(1)创建套接字—socket()应用程序在使用套接字前,必须拥有一个套接字,系统调用socket()向应用程序提供创建套接字的手段。其调用格式如下:#includesys/socket.hintsocket(intdomain,inttype,intprotocol);该调用要接收3个参数,根据这3个参数建立一个套接字,并将相应的资源分配给它,同时返回一个整型套接字号,只和一个特定的协议相联系。实际上指定了相关五元组中的“协议”这一元。domain(协议族):AF_INET,AF_UNIX,AF_IPX,…type(类型):SOCK_STREAM,SOCK_DGRAMprotocol(协议):0-让系统使用指定类型和协议族上的默认协议。(2)绑定本地地址—bind()当一个套接字用socket()创建后,存在一个名字空间(地址族),但它没有被命名,bind()将套接字地址(包括本地主机地址和本地端口地址)与所创建的套接字号绑定起来,即将名字赋予套接字,以指定本地半相关。其调用格式如下:#includesys/socket.hintbind(intsockfd,conststructsockaddr*my_addr,intaddrlen);说明:sockfd:为socket成功时的返回值—套接字描述符。my_addr为本方地址数据结构。addrlen=sizeof(my_addr).(3)监听连接—listen()此调用用于面向连接服务器,表明它愿意接收连接。1isten()需在accept()之前调用,其调用格式如下:#includesys/socket.hintlisten(ints,intbacklog);listen()在执行调用过程中可为没有调用过bind()的套接字s完成所必需的连接,并建立长度为backlog的请求连接队列。-7-backlog定义最大长度的socket等待队列。默认值为5.(4)connect(),accept()这两个系统调用用于完成一个完整相关的建立,其中connect()用于客户建立连接。accept()用于使服务器等待来自某客户进程的实际连接。1)connect功能:客户方调用发出的请求用法:intconnect(intsockfd,conststructctsockaddr*server_addr,socklen_taddrlen);在面向连接的协议中,该调用导致本地系统和外部系统之间连接实际建立。2)accept服务器调用,从等待从编号为s的套接字上接

1 / 40
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功