1、 潍坊科技学院本科毕业设计(论文)题 目 软件在线升级系统的设计与实现 院(系) 中印计算机软件学院 专业 计算机科学与技术 学 号 201101450061 学生姓名 张贝 指导教师 郑东营、郭笃刚 起讫日期 2015.1.11-2015.6.6 设计地点 济南泰乐信息技术有限公司 摘要摘要就算是最专业的软件开发商也不可能在软件开发过程中做到完美,都会或多或少的存在这样或着那样的问题。软件开发商为了占领市场和继续发展客户,也为了自己产品的未来。软件升级这一概念我们听到的也就越来越普遍。对于用户来说,漏洞可以被软件升级来修补好,数据安全也会有很大一定的提升;软件开发商们为了开拓市场,增强自己产
2、品的竞争力,也会不断升级自己的软件,力求把升级可以做到更好。可以说软件升级是一个一举多得的事情。该系统使用C/S模型编写。主要由服务端管理员登录模块,管理升级包模块,管理升级序列号模块,设置模块,与客户端段模块组成。整个程序编写完成之后实施并通过了了相关的测试与调试。保证运行正常。系统实现的主要功能:客户端:下砸升级包,安装升级包,备份当前系统,还原系统,保存升级历史用户:运行系统,查看升级包列表,升级系统,查看升级历史管理员:添加升级包,查看升级包状态,停用升级包,启用升级包,提升升级包版本,开启升级服务,关闭升级服务,增加可升级序列号,删除可升级序列号,查看可升级序列号,升级服务器,查看服
3、务器升级历史,设置服务器密码,修改服务器密码,重置服务器密码关键字:软件升级 客户端/服务器 升级包AbstractAbstractEven the most professional software developers can not do perfect existence, will more or less of this or that kind of problem in the software development process. Software developers in order to capture the market and the continued d
4、evelopment of customers, but also for the future of their products. Software upgrade this concept we hear is more and more common. For users, the vulnerability can be repaired software upgrades, data security, there will be some great promotion; software developers to develop new markets, enhance th
5、e competitiveness of their products, will continue to upgrade their software, strive to Upgrading can do better. Software upgrades can be said to be a fully staffed thing. The system uses C / S model to prepare. The main login module by the server administrator, management upgrade package module, ma
6、nagement module upgrade serial number, set up the module, and the client segment modules. After the completion of the preparation of the implementation of the entire program and passed the relevant tests and commissioning. To ensure normal operation.abstractThe main function of system implementation
7、:Client: The next hit upgrade package, install the upgrade package, back up the current system, restore the system, save the upgrade historyUser: the operating system, view the upgrade package list, upgrade the system, view the upgrade historyAdministrator: Add the upgrade packages, view the upgrade
8、 package status, disable the upgrade package to enable the upgrade package, upgrade version upgrade package, open upgrade services, upgrade services shut down, can be upgraded to increase the serial number, delete a serial number can be upgraded, view scalable sequence No, upgrade the server, view s
9、erver upgrade history, set the server password, change the server password, reset the server passwordKeywords: software upgrade the client / server upgrade package目录目录第1章 绪论11.1 开发背景及意义11.2 系统结构及组成1第2章 系统开发分析32.1 经济可行性32.2 技术可行性32.3 操作可行性3第3章 系统理论基础53.1 开发语言53.2 开发工具63.3 数据库SQLite73.4 其他相关知识7第4章 系统总
10、体设计94.1 软件升级设计原理94.2 软件升级设计流图104.2.1 服务端系统流图104.2.2 客户端系统流图11第5章 系统模块实现125.1 系统主要界面介绍125.1.1 服务端管理员登陆页面125.1.2 服务端主页面135.1.3 客户端主页面135.2 业务模块详细介绍145.2.1 服务端管理员登陆模块145.2.2 管理升级包模块175.2.3 管理升级序列号模块205.2.4 设置模块235.2.5 客户端模块25第6章 系统数据库总体设计296.1 数据库设计296.2 数据类型设计296.3 软件升级系统UML数据库326.4 软件升级系统UML图33第7章 系统
11、调试与测试357.1 系统使用环境357.2 系统调试367.3 系统测试367.4 错误处理36第8章 总结与展望388.1 总结386.1.1 系统特色与创新388.2 展望388.3 感想38参考文献40致谢41 第1章 绪论据研究称,至今没有发现任何一个团队能够在软件的开发设计中将软件做得足够完美,不需要升级维护的,总是有着或多或少的由于考虑不周导致的问题,更有甚者还存在着相当多的漏洞;软件在不断的使用过程中用户会逐步的发现各种各样的问题,这些问题是来自各个方面的,软件自身肯定也会存在一定的问题,还有一部分原因可能是由于软硬件的运行环境改变而导致的,因此用户会有不断的完善产品功能的要求
12、。因此软件升级这一概念我们听到的也就越来越普遍。对于用户来说,漏洞可以被软件升级来修补好,数据安全也会有很大一定的提升;软件开发商们为了开拓市场,增强自己产品的竞争力,也会不断升级自己的软件,力求把升级可以做到更好。1.1 开发背景及意义任何软件开发商都不可能把软件开发做到完美,软件在使用一段时间之后由于各方面的原因,总会出现这样那样的问题,随着新技术的出现,以及用户要求的不断增加,软件升级变得越来越重要。软件在软件的整个生命周期中,升级工作显得更加尤为重要,尤其是在当今社会高速发展的时期,各软件厂商为了拓展市场和增加竞争力,都对软件升级这个方面非常关心,投入相当数量的人力物力争取搞定这块难啃
13、的骨头1。现在基本国内各种软件都具备自动升级,或者在线升级的功能。例如腾讯QQ,当检测到有新版本时提示用户进行升级,用户确定升级之后,开始下载软件,下载完成后安装软件,安装完成自动删除升级包。其它的软件也和腾讯QQ的升级流程以及做法大致相同,在告诉发展的现代社会软件升级技术已变的越来越成熟,网络上也出现了大量的参考书籍,开发人员可以通过学习此类资料,开发出属于自己的,有自己公司特色的软件升级系统2。1.2 系统结构及组成 该论文本着严肃认真的态度完成,保证是自己独力完成,无抄袭现象。现将论文结构及答题内容做以下介绍:首先第二章介绍的是该项目使用的编程语言为Java与C#,数据库为sqlite,
14、以及一些客户端与服务端的相关知识;接着第三章介绍的软件在线升级的设计原理,以及客户端与服务端的设计流图。这个在软件开发中是相当重要的;接着第四章介绍的是系统模块了,软件的界面以及各个模块的功能和具体实现代码。还有数据库的具体设计,还有软件升级系统的数据库UML表示法,和UML类图。我想这是其他论文里面所没有的,但是我在做项目时是真正用到的,我就写到里面了;接下来就是系统的调试与测试了,这也是一个软件所必要的。在这里面我加上了错误处理;接下来就是对我的软件升级系统的展望了,虽然说我的软件目前只针对的是我公司的升级系统,但是在公司全体员工的共同努力之下,会把他做到更好慢慢的推向市场;接着是参考文献
15、和致谢词。这些都是一个论文必不可少的内容。40系统开发分析第2章 系统开发分析2.1 经济可行性软件开发商们为了使用户可以得到自己的升级软件,最开始的时候他们主要采取邮寄的方式,这种方法的缺点是非常明显的:一是邮寄耗费的时间较长,不能使用户获得最新的体验;二是邮寄花费了软件开发商的很大的一笔费用,如果软件每个月都要进行更新的话,这样一年下来邮递更新软件的费用也是一笔不菲的支出。三是:邮递过程中可能会导致更新文件的丢失,从而造成用户安装不完整,影响整个软件的使用。网络得到普遍应用之后的今天,用户可以从软件开发商的服务网站下下载软件升级包,对自己的软件进行升级。这样开发商不仅节省了很大一笔开支,操
16、作简单方便,多余广大用户和开发商来说何乐而不为呢?2.2 技术可行性开发者一般都具有开发该系统所需的硬件条件,计算机。该系统使用C#与Java 语言进行开发,Java是目前使用范围最广的开发语言。它具有以下特性:面向对象、可移植、并发性、安全性、分布式、解释型、可靠性、平台无关、高性能、多线程、简单性、动态性3。C#语言继承和发扬了C和C+的几乎所有优点。正如前文所述,C#是专门为.NET应用而开发出的语言。这从根本上保证了C#与.NET框架的完美结合。使用这两种技术相结合,优势上互相补助,绝对不是一加一等于二的效果。2.3 操作可行性该升级系统采用目前十分流行的客户端/服务器模式,主要针对济
17、南泰乐信息技术有限公司的测绘师软件进行升级。管理员登陆服务端之后首先将升级包放到服务器上,并且开启升级服务。就可以了。客户端用户检测服务端版本,如果发现服务端版本号高于客户端版本并且该客户端的升级序列号必须处于存放在可升级的序列号表中,该客户端用户单击升级按钮,将升级包下载到本地,首先备份当前的客户端系统数据,并关闭客户端,然后客户端开始安装升级包。安装完成之后,自动记录升级历史到数据库。这样看来,操作简单,易懂。满足很多用户的需求。系统理论基础第3章 系统理论基础本系统使用了Eclipse和Visual Studio 2013作为开发工具,使用了Java和C#以及SQLite数据库系统来开发
18、本系统,前台使用了C#语言开发,后台主要使用Java来完成。3.1 开发语言Java是目前使用范围最广的开发语言。它具有以下特性:面向对象、可移植、并发性、安全性、分布式、解释型、可靠性、平台无关、高性能、多线程、简单性、动态性等。Java语言的特点以表格的形式显示出来,简单,直接,让人一看赏心悦目。表3.1 Java语言的特点和优势特点名称特点简介面向对象现实世界中任何实体都可以被看成是对象。现实世界中万事万物皆对象。对象之间都是通过消息来起到相互作用的。另外,现实世界中的所有的对象都可以归为某一类事物。实体又是事物的具体表现。Java编程语言支持,封装、继承、多态,三个基本特性。平台无关性
19、Java可以实现一处编译处处运行的原理,真正实现了支持跨平台。安全性Java本身自带了一种沙箱,可自由定制,Java程序完全可以在这个沙箱中运行。规定了Java程序一定要在沙箱的内部才可以运行。在外不是不可以运行的,这是很关键的。健壮性垃圾回收机制(自动回收内存的过程),异常处理机制(在程序运行过程中有可能出现某些问题,对这些问题我们要进行处理)C#语言也支持面向对象,支持多线程,解释型语言,安全性也很高,可靠性表3.2 C#语言的特点和优势特点名称特点简介简洁的语法在缺省的情况下,C#的代码不允许直接对内存进行操作。它的最大的特点是去除了指针。与此相关的是,那些在C+中被疯狂使用的操作符(例
20、如:“:”、“-”和“.,”)在C#中已经不再出现了,这样对语法进行了大量的简化。与web相结合C#已有的面向对象的知识与技巧被程序员们充分利用去开发Web服务。XML已经成为网络中数据结构传递的标准。这样就可以有效的处理各种数据。不必再担心数据的庞大与复杂。安全性与错误处理编程过程中会遇到很多的错误,这些错误常常产生的后果将会是难以预见的。我们为了尽量减少开发中的错误,编译器现在可以进行提醒了;C#中提供了边界检查与溢出检查功能。这样大提高了安全性,错误处理也进行了极大的提升。支持面向对象C#包含多种语言的特点。C#中没有了全局函数,没有了全局变量,也没有了全局常数。全部都必须封装在一个类之
21、中。这样就真正实现了面向对象。图2.2 C#语言的特点与优势3.2 开发工具表3.3 Eclipse的优势优势优势说明“系出名门”+开源eclipse最初是被IBM公司开发的一个软件产品,只是前期就投入了4千万美金。IBM公司与2001年11月将该产品捐赠给eclipse联盟,规定由该组织负责eclipse的开发与维护及其其他相关事宜。“平台+插件”“平台+插件”的完整的体系结构被Eclipse采用,平台只是被当做一个简单的容器,所有的业务功能全部都会被封装在插件中,插件组件通过插件组件来构建。灵活性高Eclipse也在不断地提供更好的灵活性为工具开发商们,使用该工具进行更多的开发工作。这样他
22、们就能更好的控制自己的软件技术。表3.4 Visual Studio 2013的优势优势优势说明TFSTFS将更加重视企业敏捷性,相信在新版本中还将提供更加完善的敏捷支持。 主页简洁明确新的Team Explorer主页也更加简洁、明确,在各个任务间切换变得更加方便。支持多个浏览器全新的VS2013支持将多个浏览器作为自己的默认浏览器,这是在之前的版本中没有的功能。我们可以通过使用CTRL键来进行选择和控制。3.3 数据库SQLiteSQLite的优势1. 遵守ACID事务2. 零配置无需任何安装和管理配置3. 储存在单一磁盘文件中的一个相对完整的数据库4. 支持数据库可至2TB大小5. 足够
23、小, 大致13万行C代码, 仅为4.43M空间6. 更加简单, 轻松的API3.4 其他相关知识客户端/服务器模式通过不同的途径应用在很多不同类型的应用程序中,最常见就是目前在因特网上使用的网页。当你的网页浏览器向维基百科请求一个指定的文章时,百度百科服务器从百度百科的数据库中找出所有该文章需要的信息,结合成一个网页,再发送回你的浏览器上。C/S模式只是一个逻辑概念,不是指计算机设备。从双方建立联系的方式来看,主动启动通信的应用叫客户端,被动等待通信的应用叫服务器。表3.5 服务器/客户端特征服务器特征被动的角色(从)。等待来自用户端的请求。处理请求并传回结果。客户端特征主动的角色(主)。发送
24、请求。等待直到收到回应。这些信息的作用域可以是全局的或者某个事务的。例如:静态 HTML 页面服务器就是一个无状态服务器,Apache Tomcat 则是一个有状态服务器。系统总体设计第4章 系统总体设计4.1 软件升级设计原理软件升级的基本原理如下:首先,当升级系统启动后,升级系统自动访问服务器的数据库,进行软件系统标识和用户序列号的合法性验证服务端鉴权通过后发出相应,并传递给文件服务器登录参数升级系统登陆成功后,发出取指令目录下的客户端软件配置文件的申请服务端将指定的配置文件传递至客户端升级系统继续发出更新文件列表和升级文件包的请求服务端将指定的更新文件列表文件和升级文件包传递给客户端升级
25、目录下是否有运行的程序首先被升级程序判断,(如果有的话就会停止,完成升级之后重新启动该程序,)然后再根据文件列表将待升级文件进行相应备份调用解压缩模块将升级包中的最新文件解压至升级目录处。实现文件更新,若此操作失败,则恢复备份文件系统升级完成后,更新配置文件,重新启动被停止的应用程序4.2 软件升级设计流图4.2.1 服务端系统流图图4.1 服务端系统流图4.2.2 客户端系统流图图4.2客户端系统流图系统模块实现第5章 系统模块实现5.1 系统主要界面介绍5.1.1 服务端管理员登陆页面服务端管理员登陆页面比较简单,因为我们的宗旨就是让软件变得简单、易用,满足大多数用户的需求。服务端管理员登
26、陆页面如图5.1所示:图5.1 服务端管理员登陆页面该页面由输入密码框,登录按钮,取消按钮组成。(1) 输入密码框:管理员用户在输入密码框中输入密码,该服务端系统存在默认密码。(2) 登录按钮:管理员用户输入密码,单击登录按钮之后,可以登录到服务端主页面。(3) 取消按钮:如果用户输入密码之后,不再想登录,这时可以单击该按钮,从而取消登录。简单的使用说明:在登陆界面(图4.1)输入密码(默认密码123456),如图2.1所示,点击“登录”按钮,进入“主界面”(图4.2,默认进入管理升级包界面)。5.1.2 服务端主页面服务端主页面,详细可以分为管理升级包模块,管理升级序列号模块,设置模块。服务
27、端主页面如图5.2所示:图5.2 服务端主页面各功能模块还进行了详细划分,具体各部分功能在下文介绍。(1) 管理升级包模块:主要完成查看服务器上的升级包,进行启用升级包,停用升级包,提升升级包版本的相关功能。(2) 管理升级序列号模块:主要完成查看可升级的序列号,增加可升级的序列号,删除可升级的序列号的功能。(3) 设置模块:主要完成开启/关闭升级服务,修改服务端登录密码的功能。5.1.3 客户端主页面客户端主页面主要完成客户端升级功能,该界面简单、易用,但是功能强大,足以满足大多数用户的使用需求。客户端主页面如图5.3所示:图5.3 客户端主页面(1)当前版本:在该页面中显示出客户端当前版本
28、号信息。(2)最新版本:在该页面中显示服务端最新版本号信息。(3)升级按钮:单击该按钮可以完成客户端系统的升级。(4)升级历史:该列表中显示升级历史信息。(5)升级进度:客户端系统升级过程中显示升级进度信息。5.2 业务模块详细介绍5.2.1 服务端管理员登陆模块图5.4 服务端管理员登陆模块该模块如图5.4所示,管理员用户只需要输入登录密码,单击登录按钮系统就会默认登录到如图5.2所示的服务端主页面。具体实现代码为:namespace CaseSerch private void button2_Click(object sender, EventArgs e) /登录 if (textBo
29、x1.Text.Trim() != ) if (textBox2.Text.Trim() != ) /从数据库中读取数据 DataTable dt = db.getDataTable(select * from S_user where Uname= + textBox1.Text.Trim() + ); if (dt.Rows.Count 0) if (dt.Rows02.ToString().Trim() = textBox2.Text.Trim() lblInfo.Text = 登录成功!; lblInfo.Visible = true; this.DialogResult = Syst
30、em.Windows.Forms.DialogResult.OK; this.Close(); else /输入的密码不正确时,给出密码不正确的提示 lblInfo.Text = 密码不正确!; lblInfo.Visible = true; else /输入的账号不正确时,给出用户不存在的提示 lblInfo.Text = 用户不存在!; lblInfo.Visible = true; else /输入的密码为空时,给出密码为空提示 lblInfo.Text = 密码不能为空!; lblInfo.Visible = true; else /输入的账号为空时,给出用户名为空提示lblInfo.
31、Text = 用户名不能为空!; lblInfo.Visible = true; private void Login_Load(object sender, EventArgs e) lblInfo.Visible = false; 5.2.2 管理升级包模块图5.5 服务端主页面(1) 升级包列表:在该列表中管理员用户可以查看升级包的版本号与升级包的状态。(2) 启用升级包按钮:选择某个状态为已停用的升级包,单击该按钮之后可以启用升级包。(3) 停用升级包按钮:选择某个状态为已启用的升级包,单击该按钮之后可以停用升级包。(4)提升升级包版本按钮:单击该按钮可以将非最新版的升级包提升到最新版
32、本。简单使用说明:(1)如图5.5所示,“升级包列表”中会显示出升级包的版本号和状态(前提是服务端存在升级包),在升级包列表中选择一个“状态”为“已停用”的升级包,如图5.5所示,点击下方的“启用升级包”按钮,等待启用完成,该升级包的状态在“升级包列表”中显示为“已启用”。(2)在“主界面”(图5.1),“升级包列表”中选择一个“状态”为“已启用”的升级包,如图5.5所示,点击下方的“停用升级包”按钮,等待停用完成,该升级包的状态在“升级包列表”中显示为“已停用”。(3)在“主界面”(图5.5),“升级包列表”中选择一个升级包(提升完成之后状态不会改变),如图4.2所示,点击下方的“提升升级包
33、版本”按钮,等待提升完成,该升级包的版本号成为最新版本号。(4)如图4.5所示,管理员用户可以在升级包列表中查看升级包状态。该模块如图4.5所示,管理员用户可以在升级包列表中查看升级包的版本以及状态,选择状态为停用的升级包,单击下方的启用升级包按钮,即可启用升级包。采用相同的方式对某个已启用的升级包进行停用。如果当某个升级包出现错误时,可以将低于该版本的安装包提升为最新版本,重新进行安装,从而去除错误,此时可以通过单击下方的提升升级版本按钮来完成。具体实现代码为:/管理升级包部分代码 public void dataGridView1Bind() /从数据库中读取数据,显示所有升级包 Syst
34、em.Data.DataTable dt = db.getDataTable(select ID,VNum as 版本号,Status as 状态 from SoftUpdate ); dataGridView1.DataSource = dt; dataGridView1.Columns0.Visible = false; /启用升级包 private void btn1_Click(object sender, EventArgs e) int id = int.Parse(dataGridView1.SelectedRows0.Cells0.Value.ToString().Trim()
35、; string sql = update SoftUpdate set Status=1 where id= + id + ; int count = db.RunSQL(sql); if (count 0) MessageBox.Show(修改成功!); else MessageBox.Show(修改失败!); /停用升级包 private void btn2_Click(object sender, EventArgs e) int id = int.Parse(dataGridView1.SelectedRows0.Cells0.Value.ToString().Trim(); str
36、ing sql = update SoftUpdate set Status=0 where id= + id + ; int count = db.RunSQL(sql); if (count 0) MessageBox.Show(修改成功!); else MessageBox.Show(修改失败!); /提升升级包版本 private void button3_Click(object sender, EventArgs e) int id = int.Parse(dataGridView1.SelectedRows0.Cells0.Value.ToString().Trim(); str
37、ing strsql = select * from SoftUpdate where id=+id+; System.Data.DataTable dt = db.getDataTable(strsql); string newbanben = dt.Rows0VNum.ToString() + V2.0; string sql = update SoftUpdate set VNum= + newbanben + where id= + id + ; int count = db.RunSQL(sql); if (count 0) MessageBox.Show(修改成功!); else
38、MessageBox.Show(修改失败!); 5.2.3 管理升级序列号模块图5.6 管理升级包序列号模块(1) 可升级的序列号列表:在该列表中可以查看哪些序列号可以进行升级。(2) 增加按钮:单击该按钮可以增加可升级的序列号。(3) 删除按钮:单击该按钮可以删除可升级的序列号。简单使用说明:(1)在主界面(图5.1)中选择“管理升级序列号”选项卡,进入“管理升级序列号”界面(图5.6)。(2)在“管理升级序列号”界面(图5.6)中,如图5.6所示,“可升级的序列号”列表会显示出可进行升级的序列号,如图5.6所示,在“请输入要增加的升级序列号”中输入要增加的序列号,待显示为“可增加时”,如图
39、5.6,点击“增加”按钮。待增加完毕,在“可升级的序列号”列表显示出刚刚增加的序列号。(3)在“管理升级序列号”主界面(图5.6)中,在“请输入要删除的升级序列号”中输入要删除的序列号,待显示为“可删除”时,如图5.6所示,点击“删除”按钮。待删除完成,会看到在“可升级的序列号”列表中,之前输入的序列号会被删除。(4)如图5.6所示,管理员用户可以在“可升级的序列号列表”查看可升级的序列号。该模块如图5.6所示,管理员用户可以在可升级的序列号列表中查看可升级的序列号,在输入要增加的升级序列号文本框中输入要增加的序列号,待显示可增加之后,单击增加按钮,即可在下方的可升级的序列号列表中看到刚增加的
40、序列号,在输入要删除的升级序列号列表中输入要删除的序列号,待显示可删除后,单击删除按钮,即可在下方的可升级序列号列表中看到输入的序列号已删除。具体实现代码为: /可升级的序列号public void dataGridView2Bind() System.Data.DataTable dt = db.getDataTable(select ID,SerialNum as 序列号 from Serial ); dataGridView2.DataSource = dt; dataGridView2.Columns0.Visible = false;/添加可升级的序列号 private void button1_Click(object sender, EventArgs e) /将升级序列号添加到数据库中 string Num = txt1.Text.Trim(); string sql