



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
移动通信与无线网络大作业报告校车订票系统课 程: 学 校: 组 长: 组 员: 完成时间: 目 录一 需求分析51 引言51.1 项目背景51.2 项目描述52 项目概述62.1 目标62.2 业务流程图63 基本介绍63.1 功能模块63.2 人工处理过程73.3 尚未解决的问题84 软件界面84.1 软件登录界面84.2 预订车票界面94.3 查看订票记录9二 系统数据结构设计101 逻辑结构设计要点:102 数据结构与程序的关系:102.1 静态数值需求102.2 时间特性需求102.3 灵活性102.4 数据管理能力需求103 数据库设计描述103.1 数据库分析103.2 数据库设计说明11三 系统总体设计131 总体设计描述131.1 系统功能设计131.2 系统的总体结构131.3 子模块描述14四 视图设计151 e-r图152 数据流图153 程序描述173.1 客户端程序173.2 服务器端程序173.3 后台数据库174 功能描述184.1 整体流程设计184.2 客户端的主要功能184.3 服务器的主要功能204.4 软件时序图204.5 数据库接口21五 程序实现221.1 客户端221.2 服务器231.3 加密与解密24六 总结25附录26服务器程序261.1 数据库功能实现261.2 自动更新余票321.3 响应客户端实现40手机端程序472.1 通信配置472.2 访问服务器482.3 安全482.4 天气信息502.5 日期52一 需求分析1 引言1.1 项目背景 作为一所远离市区的高等学府,某学校的教师和学生对于往返于城区与校区的交通需求十分强烈,而校车恰好成为最佳的选择。但由于校车的预订供不应求,不少同学更是深夜12点走在去往xx楼的路上,只为能够订购一张校车车票,非常不方便。此外不少同学订购到车票后,由于一些原因不能按时乘坐校车,只能在qq群里到处发布转让校车车票信息,但仍会造成校车车票的浪费。在这一背景下,本小组开发了一整套系统解决这一问题,其中包括校车订票系统的手机应用软件、后端数据库管理系统、后端管理程序,致力于为学生及时便捷的提供校车信息以及更新。1.2 项目描述为xxx大学开发一套完整的校车订票系统,包括校车预约的安卓手机应用、服务器端程序设计、数据库管理设计等,方便学校对校车信息的及时发布和更新,学生也能够随时根据需要订购校车车票,有效地避免了出现校车浪费的不良情况。 图 1 校车订票系统整体框架图2 项目概述2.1 目标该系统是要将学校校车管理系统信息化,使操作方便,且效率高。本设计的订票系统软件分为服务器端和客户端两部分:(1)客户端部分由用户使用,通过c/s的方式实现,用户可使用app通过互联网进行操作。(2)服务器端软件由管理员使用,通过b/s的方式实现,管理员通过管理界面可对数据库进行操作和管理。2.2 业务流程图该图为校车票网上订票系统业务流程图 图2 校车票网上订票系统业务流程图3 基本介绍3.1 功能模块本设计包含的功能模块有:初始化模块, 系统功能模块, 打印模块, 校车信息管理模块, 退票信息管理模块, 客户类型信息管理模块, 订票信息管理模块。各子系统功能定义如下:3.1.1初始化模块 系统初始时,由操作系统调用,执行完毕后进入消息循环状态。3.1.2系统功能模块 接收系统功能区的相应信息,启动校车信息查询、订票管理、学生信息查询、学生帐号管理、学生设置、用户和密码管理。3.1.3校车信息管理模块 添加校车信息、更新校车信息、删除校车信息、查询校车信息等信息。3.1.4学生信息管理模块 添加学生帐号、修改学生帐号、删除学生帐号等信息。3.1.5订票信息管理模块 添加车票、修改车票、删除订票、查询剩余订票等信息。3.2 人工处理过程3.2.1服务器端的人工处理数据的输入学校根据需要来输入校车信息、学生等信息的具体数据,但必须保证其正确性和准确性。数据的修改学生根据需要对指定的数据进行修改,由于记录繁多,因此用户首先要输入一定的查询条件,缩小记录范围,然后再从该范围中找到指定的记录进行修改,保证修改的内容的正确性和准确性后可更新数据库的数据。数据的删除学生根据需要对指定的数据进行删除,由于记录繁多,因此用户首先要输入一定的查询条件,缩小记录范围,然后再从该范围中找到制定的记录进行删除,保证将要删除的内容的正确性和准确性后可删除掉数据库中的数据。数据的查询学生根据需要查询数据库中的所有数据,用户需输入一定的查询条件,然后可按照输入的查询依据查询新数据库的数据。3.2.2客户端的人工处理注册用户必须注册才能进行订票操作,在此,用户必须填写个人的真实并准确的详细信息。查询用户通过填写一定的查询条件,可查询用户所需要的校车信息、班次时间等。订票用户可通过互联网进行订票操作,填写准确的订票信息后提交订票。3.3 尚未解决的问题3.3.1客户端尚未解决的问题客户端尚未解决的问题是,仅在安卓平台下进行了软件开发,未对ios系统的手机进行开发,这会使得部分学生无法获得订票信息。3.3.2服务器尚未解决的问题服务器尚未解决的问题是,如何与学校的学生帐号数据库连接,获取正确的数据库信息。4 软件界面4.1 软件登录界面 国科大的学生可以通过该软件注册帐号,并登录自己的帐号,订购校车的班次。图 3 国科大校车订票系统手机软件登录界面4.2 预订车票界面 成功登录学生帐号后,系统理解切换到车票预订界面,在校学生可以提前预订以后三天的车票。图 4 校车预订车票界面4.3 查看订票记录在校学生如果需要查看自己的订票信息,车次以及时间,可以在这个界面进行查询。图 4 校车订票记录界面二 系统数据结构设计1 逻辑结构设计要点: 按照需求分析设计数据库中的字段,建立一个逻辑上的数据库的结构。在数据库软件(mysql)中建立数据库,并要保证数据库最低要符合第二范式。2 数据结构与程序的关系:2.1 静态数值需求支持并行操作的用户。处理多条记录数据。表或文件的最小为2048字节,最大无限制。2.2 时间特性需求响应时间应在人的感觉和视觉事件范围内;更新处理时间,随着应用软件的版本升级,以及网络的定期维护更新。2.3 灵活性 当需求发生某些变化时,管理应用软件操作方式、数据结构、运行环境基本不会发生变化,变化只是将对应的数据库文件内的记录改变,或将过滤条件改变即可。2.4 数据管理能力需求 本应用软件可管理多条记录,本应用软件基本约用1,300千字节空间,所有文件均放置在数据库中调用,查询数据、文件、记录时,通过库文件名直接进行操作或通过存储过程来完成操作。3 数据库设计描述3.1 数据库分析 需将数据库设计成关系模式最低符合第二范式的标准。按照需求分析,确定系统的实体。根据实体分析的结果,在数据库中应建立如下数据表:student (学生信息表)、school(校车信息表)、ticketsreservation (订票信息表)、ticketsleft (余票信息表)、account (注册信息表)、message(推送信息表),其中ticketsreservation (订票人信息表)和account (注册信息表)用来存放订票人的信息, car_infor(校车信息表)和message(推送信息表)用来保存校车信息,同时各个数据表间也存在着相应的连接的关系,例如在student(学生信息表)中包含有学生的学号信息、校车车次、校车时间等相关字段用来与订票人数据表和校车信息表建立联系。3.2 数据库设计说明3.2.1学生信息表 student:在此数据表中,存放的是具体学生的详细信息,为学校学生信息数据库的数据,在学生信息中包含有乘客的一些基本信息和订票人的学号、校车车次、校车等级等字段与其他表相连接的字段。表1 学生信息表属性名属性类型属性释义stunochar(20)学号stunamevarchar(50)学生姓名phonenochar(20)手机号blacklisttinyint黑名单 0,1,23.2.2校车信息表 schoolbus: 表2 校车班次的信息表属性名属性类型属性释义busnochar(20)车号startplacevarchar(50)乘车地点starttimetime开车时间3.2.3订票信息表 ticketsreservation: 表3 订票信息表属性名属性类型属性释义busnochar(20)车号stunochar(20)学号busdatedate乘车年月日bustimetime乘车时间bueweektinyint乘车星期 1,2,3,4,5,6,7管理订票的一些信息,包括历史记录等等3.2.4余票信息表 ticketsleft:表4 余票信息表属性名属性类型属性释义busnochar(20)车号ticketsnoint余票数busdatedate乘车年月日bustimetime乘车时间bueweektinyint乘车星期 1,2,3,4,5,6,7班次余票信息,管理还有多少车票可以订购3.2.5账号信息表 account: 表5 注册学生信息表属性名属性类型属性释义accountnochar(20)账号accountkeychar(20)密码学生注册帐号管理,对应于车次的关系数据3.2.6推送信息表 message: 表6 消息推送信息表属性名属性类型属性释义messagenochar(20)编号accountnochar(20)发布账号messagetimedatetime发布时间contentvarchar(100)内容用于学校发布校车信息的数据。三 系统总体设计1 总体设计描述 总体设计是软件开发人员根据软件需求说明书的要求,运用结构化程序设计思想,将软件自上而下逐层分解成多个软件模块,直到分解成每一个模块只具有单一的功能,能用一个或几个程序实现的树形结构为止。总体设计阶段还要定义各模块的数据传递关系,设计软件的编码方案、文件存储策略、输入输出格式,以及硬件和系统软件配置,最后编制概要设计说明书。总体设计的内容主要包括: 结构化模块设计; 代码设计; 文件设计;输入设计; 输出设计; 系统软硬件配置设计; 编制设计说明书。总体设计过程可分为两个主要阶段:(1) 功能设计,确定车站售票系统的实现方案;结构设计,确定该软件的结构。功能设计是在需求分析的基础上进行的,这里所说的“功能”是泛指的,不仅指问题定义中列出的功能,还包括软件定义时确定的任何一个独立的数据加工或处理步骤,例如添加、删除、查询和各个特定功能的算法实现等。(2) 结构设计,是将整个系统按照不同的功能和层次划分为一个个功能简单明确且相对独立的部分(模块),每个模块实现系统的一项具体功能,自顶向下,逐步细化。结构设计是确定程序由哪些模块组成,以及这些模块之间的关系。1.1 系统功能设计 本系统分三个模块,登录功能模块;管理员功能模块,实现车票和车次管理;普通用户功能模块,实现车票和个人信息管理。校车车票网上订票系统简单、操作灵活、方便、反应快速、计算准确,系统运行稳定、安全可靠,而且有良好的交互界面,让使用者可以方便、快速地掌握。1.2 系统的总体结构根据系统分析,按照结构化程序设计的要求得到了下面的系统功能模块图:删除车次发布车次更新车次管理员功能选择 校车消息推送消息天气信息校车票网上订票系统 修改信息 修改信息账户重置普通用户功能选择 查询信息 车次查询 时间查询车票管理始shi预订车票退去车票 图5 校车车票网上订票系统总体功能图1.3 子模块描述各个子模块描述如下:1.登录功能模块:打开手机应用程序,进入登录功能模块,选择登录身份区别是普通用户或是系统管理员。2.管理员功能模块:车次管理功能模块主要实现车次的添加、车次更新、删除等功能。同时为了更好的提供出行信息,管理员可以根据天气信息推荐学生注意天气的变化等信息,温馨地关心学生。3.普通用户功能模块:(1)查询功能模块:主要完成车票信息查询、订票信息查询等功能。(2)车票管理功能模块:主要完成校车车票的订票,退票等功能。(3)个人信息管理功能模块:主要完成个人信息的修改等功能。四 视图设计1 e-r图2 数据流图数据流程图是以图形的方式表达在问题中信息的变换和传递过程。它把系统看成是由数据流联系的各种概念的组合,用分解及抽象手段来控制需求分析的复杂性,采用分层的数据流程图来表示一个复杂的系统。(1) 校车车票网上订票系统系统登录数据流图:开始 登录身份识别管理员/普通用户管理员操作用户 结束图6 校车车票网上订票系统登录管理数据流图(2) 校车车票网上订票系统车票查询数据流图:普通用户登录 查询选择 车次信息查询 订票信息查询个人信息查询 修改个人信息 结束图7 校车车票网上订票系统查询管理数据流图(3) 校车车票网上订票系统车次、车票、时间管理数据流图:图9 校车车票网上订票系统车次、车票管理数据流图 3 程序描述3.1 客户端程序本套校车车票订票系统软件的客户端应用程序以手机软件程序编写,客户使用手机安装下载通过互连网络对数据库进行访问,并完成客户端可以完成的功能。3.2 服务器端程序 本套校车车票订票系统软件的服务器端应用程序,在linux平台下编写前台控制软件,用电脑主机充当服务器,管理员通过使用该软件来进行对数据库中的数据进行管理。3.3 后台数据库本套校车车票订票系统软件的后台数据库使用mysql来搭建后台数据库服务器,用来存放所有的数据。4 功能描述4.1 整体流程设计图10 整体系统设计思路4.2 客户端的主要功能3.2.1用户订票的全部过程 图11 用户订票流程图图12订票逻辑图图13历史订单查询及删除逻辑4.3 服务器的主要功能图14 管理员程序实现流程4.4 软件时序图设计软件程序时,时序图包含如下的四个元素:1)对象,2) 生命线, 3) 消息,4) 激活。图14 用户预订车票时序图图15用户退票时序图4.5 数据库接口本套校车订票系统软件服务器端的程序是使用eclipse来编写完成,建立eclipse与数据库的连接使用了adodb的对象来完成,每个模块中都使用了recordset、command、connection的对象,因此在模块中对三者的对象进行定义(分别为:rs、cmd、cn),并且将cn连接数据库的语句写好并打开连接,在其他的模块中共同调用这三个对象来对数据库进行操作。图16 软件具体实现接口五 程序实现1.1 客户端通信方式有http和socket两种。(1) http通信:http连接使用的是“请求响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据(2)socket通信: 在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求图17 tcp通信模型的socket于是本设计选择安卓socket编程方式实现: 服务器端: 首先声明一个serversocket对象并且指定端口号, 然后调用serversocket的accept()方法接收客户端的数据,accept()方法在没有数据进行接收的处于堵塞状态。 一旦接收到数据,通过inputstream读取接收的数据 客户端: 创建一个socket对象,指定服务器端的ip地址和端口 通过inputstream读取数据,获取服务器发出的数据 最后将要发送的数据写入到outputstream即可进行tcp协议的socket数据传输。天气预报的实现部分,通过资料查询,我们发现有如下免费天气预报获取途径,如下所示: google的天气预报api 中央气象台 中国气象局 weatherwebservice 其中webx天气预报 web 服务,数据每2.5小时左右自动更新一次,准确可靠。包括 340 多个中国主要城市和 60 多个国外主要城市三日内的天气预报数据。于是我们选择这一资源进行天气信息的推送。1.2 服务器在服务器上的程序由于要接受多个用户的请求,程序的灵活性和健壮性必须要得到保证,于是本设计采用多线程程序设计思想,对校车系统进行了一些测试。多线程程序有如下优点:1) 线程间方便的通信机制 2) 提高应用程序响应 3) 使多cpu系统更加有效 4) 改善程序结构设计思路:多线程的程序结构能够极大的便利程序设计,本设计将整个系统进行功能模块的分解,使得每个功能模块独立不相关,每个模块占用一个线程,独立和协调地完成整个系统的功能,这种程序设计思路方便管理和增加新的功能,可扩展性强。多线程列表服务器是否可达预售期查询余票查询预定车票今日订单查询订单查询消息详细信息账号验证个人信息查询密码修改班车信息查询退票图18 多线程划分列表事件监听方面,epoll是linux内核中的一种可扩展io事件处理机制,最早在 linux 2.5.44内核中引入,可被用于代替posix select 和 poll 系统调用,并且在具有大量应用程序请求时能够获得较好的性能,epoll 与 freebsd的kqueue类似,都向用户空间提供了自己的文件描述符来进行操作。epoll负责监听来自应用程序的tcp/ip请求,并反馈信息到手机应用端1.3 加密与解密在与服务器之间的数据交互中,除了可以使用post请求来进行加密请求之外,我们可以使用常见的加密算法,对数据进行加密。本设计采用des加密算法。des(data encryption standard),即数据加密标准,是一种使用密钥加密的块算法,des算法的入口参数有三个: key、data、mode。其中key为7个字节的工作密钥; data是要被加密或被解密的8个字节数据; mode为des的工作方式, 分为: 加密或解密。des是一种对称的加密算法,加密和解密使用同一个密钥。本设计使用des算法进行加密,采用的是cbc模式,填充方式采用pkcs5padding。cbc模式指的是加密块链模式,算法加入了初始向量。下面的代码就是获取一个初始向量,这种模式的特点是:1) 加密的密文长度为8个字节; 2) 当明文使用相同的密钥和初始向量的时候,cbc模式总是产生相同的密文; 3) 密文块不能再次排列; 4) 为避免相同的明文产生相同的密文,可以使用不同的初始化向量; 5) 一个错误发生以后, 当前和以后的密文都会被影响。 在不同的平台上,只要能保证这几个参数的一致,就可以实现加密和解密的一致性:加密和解密的密钥一致; 采用cbc模式的时候,要保证初始向量一致; 采用相同的填充模式。六 总结在现今移动互联网浪潮下,校车订票系统作为一个典型的应用,正在便利我们的生活,人们的生活越来越离不开手机,人们的大部分活动,交友,娱乐也越来越多依赖手机。关于手机app的设计和用户需求分析,也给我们小组所有成员带来了许多思考。小组设计的初衷在于解决生活中的一些力所能及的事情,或许这些设计不算很完美,却锻炼了我们发现问题,解决问题,提出问题的能力,让我们在未来的科研路上,可以脚踏实地,少走弯路。本设计将校车订票系统分三部分进行,手机客户端,服务器端,数据库。手机客户端界面设计美观,操作简单方便;服务器端在笔记本电脑上,运行在linux操作系统下,采用多线程框架编写程序,方便程序管理与更新。校车订票系统从功能上实现:服务端目前具备发布以及更新订票信息,注册帐号,管理数据库等功能;客户端上具备订票信息查询,余票查询,注册帐号,天气信息获取,预订车票以及退订车票等功能。不过本设计还存在许多不足的地方,表现在如下二个方面:1) 进度上:由于没有获取国科大学生的基本信息以及校车的真实信息,校车订票系统还未整体测试和完善。此外稳定性及流畅性各种方面都未获得验证。2) 设计上:校车订票系统设计思路传统,创新上存在不足。附录服务器程序1.1 数据库功能实现#include btbs.h#include #include #include #include #include #include #include #include static pthread_mutex_t mutex = pthread_mutex_initializer;void *book_ticket(void *arg)if (arg = null)return null;arg_attr arg_ = *(arg_attr*)arg;mysql my_connection;my_connection = *(arg_.my_connection);int client_fd = arg_.client_fd;int cmd1024 = 0;char studentid20 = 0;char startplace50= 0;char year6 = 0;char month3 = 0;char day4 = 0;char weekend3 = 0;strcpy(cmd, arg_.cmd);strcpy(studentid, arg_.op_cmd0);strcpy(startplace, arg_.op_cmd1);strcpy(year, arg_.op_cmd2);strcpy(month, arg_.op_cmd3);strcpy(day, arg_.op_cmd4);strcpy(weekend, arg_.op_cmd5);int retval;/mysql_query(arg_.my_connection, set names utf8);retval = mysql_query(&my_connection, cmd);printf(%sn, cmd);if (!retval)mysql_res *res_ptr = mysql_use_result(&my_connection);if (res_ptr)mysql_row sqlrow = mysql_fetch_row(res_ptr);if (sqlrow)if(send(client_fd, existed, sizeof(existed), 0) = -1)fprintf(stderr, send in book_ticket failed %sn, strerror(errno);elsechar cmd11024 = 0;char cmd21024 = 0;if (strcmp(startplace, 雁栖湖校区) = 0 & strcmp(weekend, 0) = 0)sprintf(cmd1, insert into ticketsreservation values(c1, %s, %s-%s-%s, 07:20:00), studentid, year, month, day);sprintf(cmd2, update ticketsleft set ticketsno = ticketsno - 1 where ticketsno 0 and busno = c1 and busdate = %s-%s-%s, year, month, day);else if(strcmp(startplace, 雁栖湖校区) = 0 & strcmp(weekend, 1) = 0)sprintf(cmd1, insert into ticketsreservation values(e1, %s, %s-%s-%s, 07:20:00), studentid, year, month, day);sprintf(cmd2, update ticketsleft set ticketsno = ticketsno - 1 where ticketsno 0 and busno = e1 and busdate = %s-%s-%s, year, month, day);else if(strcmp(startplace, 玉泉路校区) = 0 & strcmp(weekend, 0) = 0)sprintf(cmd1, insert into ticketsreservation values(c2, %s, %s-%s-%s, 15:00:00), studentid, year, month, day);sprintf(cmd2, update ticketsleft set ticketsno = ticketsno - 1 where ticketsno 0 and busno = c2 and busdate = %s-%s-%s, year, month, day);elsesprintf(cmd1, insert into ticketsreservation values(e2, %s, %s-%s-%s, 18:00:00), studentid, year, month, day);sprintf(cmd2, update ticketsleft set ticketsno = ticketsno - 1 where ticketsno 0 and busno = e2 and busdate = %s-%s-%s, year, month, day);printf(%sn, cmd1);printf(%sn, cmd2);pthread_mutex_lock(&mutex);mysql_query(&my_connection, cmd2);pthread_mutex_unlock(&mutex);if (mysql_affected_rows(&my_connection)mysql_query(&my_connection, cmd1);if(send(client_fd, true, sizeof(true), 0) = -1)fprintf(stderr, send in book_ticket failed %sn, strerror(errno);elseif(send(client_fd, false, sizeof(false), 0) = -1)fprintf(stderr, send in book_ticket failed %sn, strerror(errno);mysql_free_result(res_ptr);elsefprintf(stderr, book_ticket error %d: %sn, mysql_errno(&my_connection), mysql_error(&my_connection);close(client_fd);return null;void *drop_ticket(void *arg)if (arg = null)return null;arg_attr arg_ = *(arg_attr*)arg;mysql my_connection;my_connection = *(arg_.my_connection);int client_fd = arg_.client_fd;int cmd1024 = 0;char studentid20 = 0;char startplace50= 0;char year6 = 0;char month3 = 0;char day4 = 0;char weekend3 = 0;strcpy(cmd, arg_.cmd);strcpy(studentid, arg_.op_cmd0);strcpy(startplace, arg_.op_cmd1);strcpy(year, arg_.op_cmd2);strcpy(month, arg_.op_cmd3);strcpy(day, arg_.op_cmd4);strcpy(weekend, arg_.op_cmd5);int retval = mysql_query(&my_connection, cmd);if (!retval)if (mysql_affected_rows(&my_connection)char cmd1024 = 0;sprintf(cmd, update ticketsleft set ticketsno = ticketsno + 1 where busno = (select busno from schoolbus where startplace = %s and weekend = %s) and busdate = %s-%s-%s, startplace, weekend, year, month, day);mysql_query(&my_connection, cmd);if (mysql_affected_rows(&my_connection)if(send(client_fd, true, sizeof(true), 0) = -1)fprintf(stderr, send in drop_ticket failed %sn, strerror(errno);elseprintf(update in drop_ticket failedn);close(client_fd);return null;void *check_account(void *arg)if (arg = null)return null;arg_attr arg_ = *(arg_attr*)arg;mysql my_connection;my_connection = *(arg_.my_connection);int client_fd = arg_.client_fd;int cmd1024 = 0;strcpy(cmd, arg_.cmd);int retval;/mysql_query(arg_.my_connection, set names utf8);retval = mysql_query(&my_connection, cmd);printf(%sn, cmd);if (!retval)mysql_res *res_ptr = mysql_use_result(&my_connection);if (res_ptr)mysql_row sqlrow = mysql_fetch_row(res_ptr);if (sqlrow)if(send(client_fd, true, sizeof(true), 0) = -1)fprintf(stderr, send in check_account failed %sn, strerror(errno);elseif(send(client_fd, false, sizeof(false), 0) = -1)fprintf(stderr, send in check_account failed %sn, strerror(errno);mysql_free_result(res_ptr);elsefprintf(stderr, check_account error %d: %sn, mysql_errno(&my_connection), mysql_error(&my_connection);close(client_fd);return null;void *modify_passwd(void *arg)if (arg = null)return null;arg_attr arg_ = *(arg_attr*)arg;mysql my_connection;my_connection = *(arg_.my_connection);int client_fd = arg_.client_fd;int cmd1024 = 0;strcpy(cmd, arg_.cmd);int retval;/mysql_query(arg_.my_connection, set names utf8);retval = mysql_query(&my_connection, cmd);if (!retval)if (mysql_affected_rows(&my_connection)if(send(client_fd, true, sizeof(true), 0) = -1)fprintf(stderr, send in modify_passwd failed %sn, strerror(errno);elseif(send(client_fd, false, sizeof(false), 0) = -1)fprintf(stderr, send in modify_passwd failed %sn, strerror(errno);elsefprintf(stderr, modify_passwd error %d: %sn, mysql_errno(&my_connection), mysql_error(&my_connection);if(send(client_fd, false, sizeof(false), 0) = -1)fprintf(stderr, send in modify_passwd failed %sn, strerror(errno);close(client_fd);return null;void *query(void *arg)if (arg = null)return null;arg_attr arg_ = *(arg_attr*)arg;mysql my_connection;my_connection = *(arg_.my_connection);int client_fd = arg_.client_fd;int cmd1024 = 0;strcpy(cmd, arg_.cmd);/sleep(10);int retval;/mysql_query(arg_.my_connection, set names utf8);retval = mysql_query(&m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国(甲基)丙烯酸异冰片酯数据监测报告
- 2025至2030年中国高压高温高速溢流染色机市场分析及竞争策略研究报告
- 2025至2030年中国锯条辊压机市场分析及竞争策略研究报告
- 2025至2030年中国邻溴苯乙腈市场分析及竞争策略研究报告
- 2025至2030年中国衬线市场分析及竞争策略研究报告
- 2025至2030年中国聚苯颗粒用砂浆市场分析及竞争策略研究报告
- 2025至2030年中国立式外加压叶滤机市场分析及竞争策略研究报告
- 2025至2030年中国电网谐波监测记录装置市场分析及竞争策略研究报告
- 2025至2030年中国熔盐电加热炉市场分析及竞争策略研究报告
- 2025至2030年中国棱形轴承市场分析及竞争策略研究报告
- 国家中小学智慧教育平台培训专题讲座
- 2023新译林版新教材高一英语必修一全册课文翻译(英汉对照)
- 物业工程维修作业安全操作指南
- 《铃儿响叮当的变迁》教学设计(江苏省市级优课)-九年级音乐教案
- 装修常用数据手册(空间布局和尺寸)
- 处方销毁申请登记表
- 河南省2014年中考语文现代文阅读真题
- 外研版一起小学英语四下《Module-6Unit-1-Ill-draw-the-pictures》课件
- 三明市公安局招聘警务辅助人员考试历年真题
- 卫生部手术分级目录(2023年1月份修订)
- LY/T 2121-2013檀香栽培技术规程
评论
0/150
提交评论