基于CS模式的数据库管理程序毕业论文.doc

上传人:laozhun 文档编号:2395243 上传时间:2023-02-17 格式:DOC 页数:38 大小:247KB
返回 下载 相关 举报
基于CS模式的数据库管理程序毕业论文.doc_第1页
第1页 / 共38页
基于CS模式的数据库管理程序毕业论文.doc_第2页
第2页 / 共38页
基于CS模式的数据库管理程序毕业论文.doc_第3页
第3页 / 共38页
基于CS模式的数据库管理程序毕业论文.doc_第4页
第4页 / 共38页
基于CS模式的数据库管理程序毕业论文.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《基于CS模式的数据库管理程序毕业论文.doc》由会员分享,可在线阅读,更多相关《基于CS模式的数据库管理程序毕业论文.doc(38页珍藏版)》请在三一办公上搜索。

1、大学毕业设计(论文) 题 目: 指导教师: 职称: 学生姓名: 学号: 专 业: 院(系): 完成时间: 摘 要随着数据库的普及和相关技术的成熟,基于数据库的企业工作越显其普遍性和重要性。本文论述的数据库管理程序具有数据库与excel之间的互相导入导出功能。本程序具有其他的数据库管理系统没有的特点:自定义化高,简单明了,适合不会数据库的人员使用,系统的开发选用了当前比较流行的编程技术Java作为主要实现手段(暂时支持mysql数据库,理论上支持各种数据库),同时选用了microsoft和wps的excel。本系统针对小型企业的小需求设计,基于C/S模式,可以作为数据库和其他文件格式交互的原始模

2、型。关键字:java,sql,excel,软件工程ABSTRACTWith the popularity of databases and related technologies mature, based on the enterprise database work more significant its universality and importance. This paper discusses the database management program which has import and export functions between database and e

3、xcel. Compared with the other database management system,The program has some different features : high degree of self-defined, simple, fit the person who do not understand database, development of the system selected current popular programming technology - Java as the primary means of achieving (t

4、emporary support mysql database, in theory, support a variety of databases), while selecting excel of wps or microsoft . The system for the low needs of small businesses , based on B / S mode, as the original model of database and other file formats interaction.Keywords: java,sql,excel,software engi

5、neering目 录摘 要IABSTRACTII目 录III第一章 绪论11.1 课题研究背景11.2课题研究现状11.3 课题研究的目的和方法11.3.1 项目的研究目的11.3.2 开发方法及步骤2第二章 研究该课题用到的工具和技术32.1 系统平台环境32.1.1 硬件平台32.1.2 软件平台32.2相关技术42.2.1 C/S模式42.2.2 Java技术42.2.3 MySQL数据库4第三章 系统需求分析及概要设计53.1功能分析53.2性能分析53.3总体和各模块功能流程图及实现思路63.3.2、数据库数据导入到excel模块流程及类实现思路73.3.2、excel数据导入到数据

6、库103.4数据流分析103.5数据字典11第四章 系统详细设计134.1总体设计134.1.1系统功能描述134.1.2系统功能模块图134.2 数据库设计144.2.1 概念结构设计144.2.2 系统E-R图144.2.3 数据库分析与物理结构设计154.3 类图15第五章 界面展示165.1 界面设计原则165.2 数据输入界面设计165.3 界面显示16总结20附录21致 谢32参考文献33第一章 绪论1.1 课题研究背景随着社会高科技,商品经济化突飞猛进的发展,数据库和excel的应用已经普及到经济和社会生活的各个领域。为了适应现代社会人们高度强烈的时间观念,数据库管理软件为中小型

7、企业、公司等的日常管理带来了极大的方便。数据库能够为用户提供可靠的信息储存和快捷的信息处理手段。作为计算机应用的一部分,使用计算机对企业、公司的产品销售信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、可靠性高、存储量大、保密性好、寿命长、成本低,操作简单等。这些优点能够极大的提高一个企业、公司销售规模,同时能够提高工作的效率。因此,开发这样一套软件成为很有必要的事情,它能够简单化的管理单位的工作情况。1.2课题研究现状随着计算机软硬件技术日新月异、突飞猛进的发展,计算机已成为现代社会人们工作、生活、学习甚至娱乐不可或缺的工具。数据库和excel的使用也随之日渐完善,其中数据库和ex

8、cel表的交互也是重要的一部分。现在有很多软件,syncnavigator就是其中的代表。这给本系统的是实现提供了很好的参考。1.3 课题研究的目的和方法1.3.1 项目的研究目的 目前市场上有很多类似作用的软件,功能也很多,但并不完善。本课题主要是在导出导入功能的基础上实现以下功能: 1.保证数据安全性,自动生成备份文件,以待恢复时用。 2.向已有excel表中导入数据时不会覆盖原有数据,而是接着往下写,如果存在某列,就不会创建同名列。 3.有更强的易用性,致力于让不会数据库的人员照样可以对其操作。1.3.2 开发方法及步骤1、可行性分析通过不同方案的比较得出方案的可行性研究结论。2、需求分

9、析通过深入了解数据库的运行和设计模式,收集多方面切实可行的资料,对excel格式的需求进行深入调研,确定出信息系统该具备的目标、功能、性能。3、数据库设计与实现根据业务需求、信息需求、和处理需求,确定信息系统的数据结构、数据操作。建立ER 图,进行系统设计。4、系统实现用Eclipse工具对设计好的系统模型进行编程,实现此系统。5、测试与维护对系统每一个功能模块程序进行测试。第二章 研究该课题用到的工具和技术2.1 系统平台环境2.1.1 硬件平台硬件设备设计是根据信息系统的设计需求,确定信息系统物理设备方案,所设计的硬件设备方案在能够充分满足信息系统功能需求的前提下,还应满足系统的效率、可靠

10、性、安全性和适应性等性能要求,并具有较高的性价比。根据前面的需求分析,我们得出本系统理想的环境当然是配置较高最好,实际操作中硬件平台如下:硬件环境(访问者):建议用户在允许的情况下采用较高配置硬件资源。硬件环境(开发者):Intel 2.4 G处理器,2G内存,320G磁盘空间。2.1.2 软件平台软件平台是信息系统开发和运行所需的集成软件环境,设计和选择高效、实用、方便、功能齐全的软件平台,对信息系统的开发具有十分重要的意义。在结合实际开发的需要并充分考虑各种软件平台的性能及适用范围和对软件平台的使用能力,本系统的软件平台选择如下:1、操作系统操作系统是计算机系统中最重要的系统软件,目前在微

11、机上使用的桌面操作系统有Windows xp/7/8 等,本系统在Windows 7 操作系统下进行开发,可运行于前面所列举的各种操作系统。2、支撑软件支撑软件是协助人们开发和维护软件的工具和环境软件,包括编辑程序,数据库系统,集成开发环境等,本系统的支撑软件如下:(1)数据库管理系统(DBMS):为了对数据库实施集中管理,同时并发的处理多个客户机发来的数据处理要求,我们选用MySQL数据库管理系统。(2)编程技术:在这里我们使用Java来建立系统。2.2相关技术2.2.1 C/S模式C/S(Client/Server,客户端/服务器)模式又称C/S结构。C/S模式是指在TCP/IP的支持下,

12、以TCP/IP为传输协议,客户端通过客户端软件访问数据库服务器技术及体系结构。它由客户端,服务器组成。客户端软件通过URL访问服务器,服务器请求数据,并将获得的结果返回客户端。它是随着Internet技术的兴起,对C/S模式应用的扩展。在这种结构下,用户工作界面是客户端软件来实现的。2.2.2 Java技术Java技术简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。 2.2.3 MySQL数据库MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被SUN公司收购。而2009年,SUN又被Oracle收购.对于MySQL

13、的前途,没有任何人抱乐观的态度.目前 MySQL被广泛地应用在中小型企业中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型企业为了降低总体拥有成本而选择了MySQL作为数据库。第三章 系统需求分析及概要设计软件需求分析是软件生命周期中的关键步骤,通过软件需求分析后,把软件功能和性能总体概念描述为具体的软件需求规格说明书,进而建立软件开发的基础。软件需求分析同时也是一个不断认识和逐步细化的过程,通过软件需求分析,准确地回答了“系统必须做什么”。在本次系统分析过程中采用结构化分析方法,结构化分析方法是面向数据流进行需求分析的方法,其核心思想是分解简化问题,将物理与逻辑表示

14、分开,对系统进行数据与逻辑的抽象,其描述工具是数据流图(DFD)和数据字典(DD)。数据流图是从数据传递和加工的角度,以图形的方式来描述数据流从输入到输出的传输变换过程,而数据字典是对数据流图中的各个元素作完整定义和说明,是数据流图的补充工具。3.1功能分析 1.软件与各种数据库连接功能 软件能与各种数据库连接,并能动态确定服务器地址和数据库名以及其中的表 2.数据库数据导出到excel功能 能将数据库中指定的数据提取出来,并自定义导入到excel中,且能保持原有数据类型不变 3.excel数据导入到数据库功能 能将excel中指定的数据提取出来,并自定义导入到数据库中,且能保持原有数据类型不

15、变,但不能导入不满足数据库数据要求的数据3.2性能分析1、设计规范要求:项目开发规范统一:模块划分,代码编写均遵照命名规范文档; 程序安全并要有良好的可扩展性;用户界面简洁明了、操作简单实用。2、精度及灵活性要求:该管理系统要能在较高精度下完成操品牌发出的命令,并且在操作员发出错误的指令时给予警告或提示,而非陷入不响应状态。3、时间特性要求:响应时间:所有操作均在2s内完成;更新处理时间:所以操作均在2s内完成。3.3总体和各模块功能流程图及实现思路 3.3.1、系统整体业务流程图系统整体业务流程图如所示:excel数据库导入到数据库选择功能人员excel导入到excel数据库 整体业务流程图

16、3.3.2、数据库数据导入到excel模块流程及类实现思路如表显示了数据库数据导入到excel的整个处理流程输入选择数据库表名,需要的字段名,对应的自定义名,excel路径 处理流程 开始 从数据库采集所需数据 根据自定义名转换数据创建该列N 根据自定义名检索excel表 中是否存在该列Y确定位置,将对应值插入结束循环检索excel对应名,如不存在则创建后插入输出显示执行的sql语句 此功能用到的excel读写类: 主要作用:与excel建立连接,负责读写excel表以及得到表结构和必要信息。 ExcelRW- wb :HSSFWorkbook- filePath:String+ getTot

17、alRownum(String):int得到表总行数+ getTotalColnum(String):int得到表总列数+ getColnumByColname(String, String):int通过列/名得到此列索引+ readCell(String, int, int):String读取表某一个单元格+ createCol(String, String)创建新列+ findLocation(String, String):int得到插入位置+ writeCell(String,int,String,Object,String) :Object往表中写入数据+ saveAs()备份文件+

18、 close()断开与文件链接,并关闭。 数据库管理类 主要作用:负责管理各种数据库,采用单例模式,根据配置文件生成对应数据库操作对象。 DataBaseManager- DBManager:DataBaseManager - DBTYPE :String - Prop: Properties - curDataBase:DataBase+ getInstance():DataBaseManager+ produceCurDB() :DataBase生成当前使用的数据库对象实例 数据库抽象类 主要作用:对各种数据库抽象,提供统一接口,实现多态。DataBase# DBURL :String#

19、prop :Properties# conn :Connection+ DBToExcel(String, String, String):String实现从数据库往excel中导入数据+excelToDB(String,String,String ,String):String实现从excel往数据库中导入数据mysql数据库类 主要作用:实现数据库抽象类的各种接口。Mysql# DBURL :String# prop :Properties# conn :Connection+ DBToExcel(String, String, String):String+excelToDB(Strin

20、g , String , String ,String):String3.3.2、excel数据导入到数据库如表显示了excel数据导入到数据库的整个处理流程输入选择excel表名,需要的字段名,对应的自定义名,数据库表名 处理流程YN 结束 插入到数据库循环检索数据库中是否存在对应名将字段替换成用户自定义名从excel取出所需数据开始输出数据导入到excel中,并显示执行的sql语句3.4数据流分析处理后数据数据库表数据数据库excel数据处理系统excel表数据处理后数据 DFD顶层图图是顶层DFD,它表现出了我们要开发的系统所需要的外部参与人员和流入流出的数据流的种类。3.5数据字典数据

21、库的逻辑结构设计是把上面的设计用逻辑表格的形式加以表示,并对数据的类型进行定义,在整个过程中必须严格定义每一个具体的数据,形成数据字典。 系统主要数据字典数据存储名:数据库路径说明:数据库服务器的url以及账户名,密码,数据库名数据描述:数据库服务器的url+账户名+密码+数据库名 数据存储名: 字段名说明:导出的数据数据描述:表名+该表中字段名 数据存储名:自定义字段名说明:映射的别名数据描述:表名+该表中字段名第四章 系统详细设计4.1总体设计总体设计由总体设计的一般作用、层次图及说明三部分组成,在前面系统分析的基础上,通过总体设计为后期将要构造的系统实体建立一个模型或表达式。4.1.1系

22、统功能描述在软件的总体设计中,完成了数据和系统构建,并通过层次图或结构图来描绘软件结构系统功能模块在设计时应该遵循模块独立原理,也就是说,软件应该有一组完成相对独立的子功能模块组成,这些功能模块之间的借口关系彼此应该尽量简单。查询数据库连接数据库导入到数据库模块4.1.2系统功能模块图添加数据总体模块创建新列导入到excel模块获取插入位置写入数据读取数据系统结构功能图 4.2 数据库设计4.2.1 概念结构设计概念结构设计是将分析得到的用户需求抽象为概念模型的过程。即在需求分析的基础上,设计出能够满足用户需求的各种实体以及它们之间的相互关系概念结构设计模型。这样才能更好地、更准确地用某一DB

23、MS实现这些需求。它是整个数据库设计的关键。概念结构的主要特点是能真实、充分地反映现实世界;易于理解;易于更改;易于向关系、网状、层次等各种数据模型转换。描述概念模型的有力工具是E-R模型。4.2.2 系统E-R图概念模型的设计是为了将现实世界信息进行抽象,实现信息世界的建模,是进行数据库设计的有力工具。数据库概念模型设计可通过E-R图来描述现实世界的概念模型。本系统的E-R图表现了系统中各个实体之间的联系,具体的如下图:行路径包含1N表名sheetexcel 列路径行列N1table表名包含数据库4.2.3 数据库分析与物理结构设计数据库是信息系统的基础和核心,数据库设计的质量将直接关系到信

24、息系统开发的成败和优劣。制作数据库首先要确定实体的属性和实体间的关系。根据关系做出数据表。 鉴于该系统功能对表表结构无要求,所以数据库表可以是任何字段,本人测试时用的表如下:字段名类型可否为空含义idint(11)N主键namevarchar(10)N姓名PhoneVarchar(11)Y电话AgeInt(11)Y年龄SexChar(1)Y性别AddressVarchar(100)Y地址SalaryInt(11)Y薪水DeptVarchar(20)Y所属部门TimeDateY注册日期其他测试用表均参照此表创建。1DataBaseManager4.3 类图组合1DataBase1n依赖泛化11E

25、xcelRWMysql第五章 界面展示以下只给出比较复杂的程序设计说明,其余的程序设计说明在源代码中注释。5.1 界面设计原则(1) 用户原则。人机界面设计首先要确立用户类型。划分类型可以从不同的角度,视实际情况而定。(2)信息最小量原则。人机界面设计要尽量减少用户记忆负担,采用有助于记忆的设计方案。(3)帮助和提示原则。要对用户的操作命令做出反应,帮助用户处理问题。在系统内部处理工作要有提示,尽量把主动权让给用户。5.2 数据输入界面设计数据输入界面往往占终端用户的大部分使用时间,也是计算机系统中最易出错的部分之一。其总目标:简化用户的工作,并尽可能降低输入出错率,还要容忍用户错误。这些要求

26、在设计实现时可采用多种方法:(1)尽可能减轻用户记忆,采用列表选择。对共同输入内容设置默认值;使用代码和缩写等;系统自动记录用户已输入过的内容。(2)使界面有一致风格的数据输入界面。(3)防止用户出错。对致命错误,要警告并退出。在输入框中也有限制,限制可输入的字符类型。(4)提供反馈。要使用户能查看已输入的内容,并提示有效的输入回答。(5)数据输入界面若条件具备尽可能采用自动输入。5.3 界面显示由于很多界面都是类似的,因此只展示从数据库导入到excel界面进行说明。界面采用向导式开始界面提供了一个分类进入系统的接口,选择不同功能后方能进入系统。如图所示:选择后进入相应界面。如图所示: 界面上

27、显示了连接的数据库中所有表,可以多选,假设选择dept和user,按下一步如下图所示:选择相应表后,右侧将列出其中所有字段,可多选。表连接条件可不填。按下一步如下图所示: 在字段右侧填入对应映射到excel中的名字,下面可以选择排序方式以及导出的个数。按下一步如下图所示:选择文件后,按导出即可将数据库数据导入到excel相应位置。总结通过几个月来资料的收集和系统设计,该系统终于完成。在设计整个系统的过程中,我感受最深的就是对用户体验的考虑。只有用户感觉用的习惯,才能真正解决问题。以下是我对系统做的总结:1.系统功能基本达到设计的要求。系统各模块均按设计要求编写,并已实现。2.系统界面简洁,操作

28、简单。3.系统结构和功能易于扩充。4.系统不足的地方在于安全性方面。总的来说,本系统最终实现了预期的主要功能。由于本人水平有限,对于设计和编程的经验不足,系统还存在着或多或少的缺陷。附录部分关键功能实现的程序清单如下:/从数据库导入到excel算法public String DBToExcel(String excelName, String sheetName, String sql) Connection conn = this.getConn();if (conn = null) return conn-error!;PreparedStatement preStmt = null;Re

29、sultSet rs = null;ResultSetMetaData metaData = null;try preStmt = conn.prepareStatement(sql);if (preStmt = null) return preStmt-error!;rs = preStmt.executeQuery();if (rs = null) return rs-error!;metaData = rs.getMetaData();if (metaData = null) return metaData-error!; catch (SQLException e) e.printSt

30、ackTrace();return SQLexception-1!;ExcelRW excel = ExcelRW.getInstance(excelName);if (excel = null) return excel-error!;int beginRownum = 0;int only = 1;try for (int i = 1; i = metaData.getColumnCount(); i+) String dataType = metaData.getColumnTypeName(i).toLowerCase();String colName = metaData.getCo

31、lumnLabel(i);int location = excel.findLocation(sheetName, colName);if (1 = only) beginRownum = location0;only+;location0 = beginRownum;while (rs.next() Object object = rs.getObject(i);excel.writeCell(sheetName, location, colName, object,dataType);location0+;rs.absolute(1);rs.previous(); catch (SQLEx

32、ception e) e.printStackTrace();return SQLexception-2!; finally if (excel != null) excel.close();excel = null;this.closeConn(conn);return 已完成!;/从excel导入到数据库Overridepublic String excelToDB(String excelName, String sheetName, String sql,String field_sheet) String re = new String();Connection conn = thi

33、s.getConn();if (conn = null) return conn-error!;PreparedStatement preStmt = null;try preStmt = conn.prepareStatement(sql);if (preStmt = null) return preStmt-error!; catch (SQLException e) e.printStackTrace();return SQLexception-1!;ExcelRW excel = ExcelRW.getInstance(excelName);if (excel = null) retu

34、rn excel-error!;int totalRownum = excel.getTotalRownum(sheetName);int colnum = 0;try conn.setAutoCommit(false); catch (SQLException e2) e2.printStackTrace();return 失败;try for (int rownum = 1; rownum totalRownum; rownum+) for (int i = 0; i field_sheet.length; i+) colnum = excel.getColnumByColname(she

35、etName, field_sheeti);String str = excel.readCell(sheetName, rownum, colnum);if (str0.equals(numeric) preStmt.setDouble(i + 1, Double.parseDouble(str1); else preStmt.setString(i + 1, str1);re = re+preStmt.toString()+n;preStmt.executeUpdate(); catch (NumberFormatException e) try conn.rollback(); catc

36、h (SQLException e1) e1.printStackTrace();return 失败;e.printStackTrace(); catch (SQLException e) try conn.rollback(); catch (SQLException e1) e1.printStackTrace();return 失败;e.printStackTrace(); finally try mit();conn.setAutoCommit(true);this.closeConn(conn);excel.close(); catch (SQLException e) e.prin

37、tStackTrace();return re + 已成功导入到数据库n;/寻找数据插入位置public int findLocation(String sheetName, String colName) int location = new int2;location0 = -1;location1 = -1;if (!this.isValid(sheetName) | !this.isValid(colName) return location;HSSFSheet sheet = wb.getSheet(sheetName);if (sheet = null) return locati

38、on;int colnum = 0, rownum = 0;this.createCol(sheetName, colName);colnum = this.getColnumByColname(sheetName, colName);rownum = this.getTotalRownum(sheetName);location0 = rownum;location1 = colnum;return location;/ 通过指定位置和数据类型插入数据public Object writeCell(String sheetName, int location, String colName,

39、Object writeIn, String dataType) if (!this.isValid(sheetName) | !this.isValid(colName) return sheetName is invalid;if (dataType = null) dataType = string;HSSFSheet sheet = wb.getSheet(sheetName);if (sheet = null) return sheetName is not exist;HSSFRow row = sheet.getRow(location0);if (row = null) row

40、 = sheet.createRow(location0);HSSFCell cell = row.getCell(location1);if (cell = null) cell = row.createCell(location1);String javaType = Judger.judgeType(dataType);if (javaType.equalsIgnoreCase(Integer) if (writeIn = null) writeIn = 0;cell.setCellValue(Integer) writeIn); else if (javaType.equalsIgnoreCase(Double) if (writeIn = null) writeIn = 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号