羊场管理系统计算机专业毕业设计论文.doc
目录1 JAVA概述11.1 什么是JAVA11.2 JAVA的背景及组成12 MYSQL22.1 MYSQL简介22.2 MYSQL的系统特点22.3 在JAVA开发中使用数据库32.3.1 JDBC技术工作原理32.3.2 JDBC四种类型的驱动32.3.3 JDBC对数据库记录访问的实现33 系统具体设计43.1 总体设计思路43.1.1 实用性原则43.1.2 可维护性原则43.1.3 可扩展性43.2 系统开发语言及其环境配置43.2.1 语言选择43.2.2 运行环境53.2.3 编写环境配置53.2.4 MYSQL 数据库配置53.3 建立对象模型63.3.1 建立对象模型63.3.1.1各个类的类图63.3.1.2总的系统结构流程图83.3.1.3登陆界面时的流程图83.3.1.4子系统各个实现流程图93.4 数据库的设计143.4.1 设计数据库143.4.2设计表143.4.2.1羊只信息表143.4.2.2羊舍信息表153.4.2.3员工信息表153.4.2.4饲料信息表163.4.2.5喂养信息表163.5 系统功能页面展示173.5.1 登录页面173.5.2 系统功能界面174结论265系统源码27参考文献124摘要 羊场记录是非常重要的,需要有效的管理。现在大多数的养殖场仍采用原始的手工操作方式,工作效率低下,出错也在所难免。因此在本着适应养殖场的实际需求,针对手工管理存在的弊端开发了该系统,从而实现对养殖场基本信息和养殖情况进行高效管理的目的,实现自动化。本系统实现对羊只管理和羊场日常工作记录和规划的集成化,协助管理人员完成繁重的工作,并且作为评估羊场工作的依据。本系统在前台采用了开发工具java程序语言编写,后台数据库使用了mysql数据库,建立在windows作业系统上,但适合各种安装了java的jre虚拟机的操作系统。本系统记录主要包括如下的几个模块:羊群管理模块,羊舍管理模块,员工管理模块,喂养信息喝饲料信息管理这5个模块。各个模块都包括着对羊群各种信息的管理,喝对羊群各种信息的增删改查。关键词:羊群信息;羊场;JAVA;MYSQL;JDBC绪 论一直以来,人们都使用传统的手工方式进行羊场养殖的日常管理工作,这种传统的手工模式有很多缺点,如手工记录太麻烦繁琐,工作量大,数据量大,效率低下等等。同时在数据量大的情况下的增删改查操作都是十分麻烦的事情,需要大量的纸质来记录各种数据,资源造成浪费。如今还没有专门的软件来进行羊场养殖管理,现如今的人工管理已经不能满足当前的科技发展了。为了提高传统方式的羊场养殖管理,针对现如今的人工养殖管理系统的缺点,本小组开发了一款提供便利的软件来进行羊场养殖管理,本系统采用单机模式,开发简单。同时,本款软件的可操作性很好,界面简洁易懂,容易操作。这款软件充分的利用了数据库的特性,节省了大量的资源。同时为管理的工作人员提供便利,大大提高了效率,节省了人力物力,节省大量的资源。而养殖管理也会渐渐规范化,细致化,便捷化。1 JAVA概述1.1 什么是JAVAjava是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。1.2 JAVA的背景及组成1.背景Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。1995年更名为Java,并重新设计用于开发Internet应用程序。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器均支持Javaapplet。另一方面,Java技术也不断更新。Java自面世后就非常流行,发展迅速,对C+语言形成有力冲击。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。2010年Oracle公司收购Sun Microsystems。2.组成Java由四方面组成:Java编程语言,即语法Java文件格式,即各种文件夹、文件的后缀Java虚拟机(JVM),即处理*.class文件的解释器Java应用程序接口(Java API)2 MYSQL2.1 MYSQL简介MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。2.2 MYSQL的系统特点 1使用C和C+编写,并使用了多种编译器进行测试,保证源代码的可移植性。2支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。3为多种编程语言提供了API。这些编程语言包括C、C+、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和Tcl等。4支持多线程,充分利用CPU资源。5优化的SQL查询算法,有效地提高查询速度。6既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。7提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。8提供TCP/IP、ODBC和JDBC等多种数据库连接途径。9提供用于管理、检查、优化数据库操作的管理工具。10支持大型的数据库。可以处理拥有上千万条记录的大型数据库。11支持多种存储引擎。12.Mysql是开源的,所以你不需要支付额外的费用。13.MySQL使用标准的SQL数据语言形式。14.Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。15.Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。16.在线 DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性17.复制全局事务标识,可支持自我修复式集群2.3 在JAVA开发中使用数据库2.3.1 JDBC技术工作原理JDBC是Java数据库连接(Java Data Base Connectivity)技术的简称,是为各种常用数据库提供无缝连接的技术。JDBC向应用程序开发者提供了独立于数据库的统一的API,这个API提供了编写的标准和考虑不同应用程序设计的标准。其奥秘是一组由驱动程序实现的Java接口。驱动负责标准JDBC调用向支持的数据库所要的具体转变。JDBC API中有两层接口:应用程序层,开发人员用API通过SQL调用数据库和取得结果;驱动程序层,处理与具体驱动程序版本的所有通信。2.3.2 JDBC四种类型的驱动(1) JDBC-ODBC Bridge 它为Java应用程序提供了一种把JDBC 调用映射为ODBC调用的方法。(2) JDBC Native Bridge 它提供了一个建筑在本地数据库驱动上的JDBC接口。(3) JDBC Network Bridge 它不需要客户端的数据库驱动。(4) pure Java JDBC drive 纯Java驱动运行在客户端,并且直接访问数据库。2.3.3 JDBC对数据库记录访问的实现JDBC有一个非常独特的动态连接结构,它使得系统模块化。使用JDBC来完成对数据库的访问包括以下四个主要组件:Java的应用程序、JDBC驱动管理器、驱动器和数据源。JDBC实现访问数据库记录步骤(1) 通过驱动器管理器获取连接接口。(2) 获得Statement或它的子类。(3) 限制Statement中的参数。(4) 执行Statement。(5) 查看返回的行数是否超出范围。(6) 关闭Statement。(7) 处理其他的Statement.3 系统具体设计3.1 总体设计思路3.1.1 实用性原则首先符合实际需要,养殖场的业务是繁多而复杂的,一般情况是程序员对这些业务的认知程度较低,为此,要做到实用性并不简单。因此,养殖场信息管理系统的实用性不仅仅是一个设计的问题,还要靠软件的不断升级来实现。3.1.2 可维护性原则系统运行后,维护工作是一个长期的工作。因此本系统充分考虑维护工作的需求:设计采用面向对象、模块化技术,提高软件的复用性、界面的一致性、代码的重用性,尽量降低维护工作量及困难3.1.3 可扩展性 系统应具有较好的可扩展性。系统的可扩展性应包括能接纳已有的系统和在今后系统软硬件扩展时,能有效地保护已有的资源。特别是在应用需求变化时,有一个较好的平台,能容易的加以调整。系统易于扩充升级,既能满足现有的功能需求,又为今后的扩充留有空间。3.2 系统开发语言及其环境配置3.2.1 语言选择本系统的设计采用JAVA产生一系列高效的交互式GUI界面。使本系统拥有一个很好的交互界面,可以给用户一个很好的使用感受。数据库选用MYSQL作为系统后台数据库。3.2.2 运行环境本系统运行环境如下:1.编写环境*编译环境 JDK1.7*后台数据库 MYSQL6.0*IDE MYECLIPSE6.52. 用户端环境:* Windows7/Windows8*JRE1.6以上3.2.3 编写环境配置(1) 下载并安装JDK1.7(2) JDK环境配置* 打开我的电脑属性环境变量用户变量新建在变量名中输入 CLASS在变量值中输入 D:JDK1.7BIN* 重复新建在变量名中输入 CLASSPATH在变量值中输入 D:JDK1.7LIBTOOL.JAR* 重复新建在变量名中输入 JAVA_HOME在变量值中输入 D:JDK1.73.2.4 MYSQL 数据库配置(1)在MYSQL官网上下载最新版的MYSQL(2)在电脑上运行MYSQL的安装文件,进行安装(3)使用默认的ROOT用户名进行登陆3.3 建立对象模型3.3.1 建立对象模型3.3.1.1各个类的类图候选类描述类名羊在系统中,描述羊的各种信息,它应该是系统的对象Sheep羊舍在系统中,描述羊舍的各种信息,它应该是系统的对象SheepRoom员工在系统中,描述员工的各种信息,它应该是系统的对象Staff饲料在系统中,描述饲料的各种信息,它应该是系统的对象Feed用户账号在系统中,用户账号用来保存用户名和密码等信息,用于权限判定,它应该是系统的对象User通过分析得到“羊场管理系统”的对象模型 1243.3.1.2总的系统结构流程图3.3.1.3登陆界面时的流程图3.3.1.4子系统各个实现流程图1、有关系统操作的流程图2、 羊只信息管理3、人员档案管理4、 饲养管理流程图5、 羊舍信息管理3.4 数据库的设计3.4.1 设计数据库对于本系统,首先需要创建一个专门用于管理羊场数据的数据库。3.4.2设计表3.4.2.1羊只信息表创建语句: 表的结构:3.4.2.2羊舍信息表创建语句:表的结构:3.4.2.3员工信息表创建语句:表的结构:3.4.2.4饲料信息表创建语句:表的结构:3.4.2.5喂养信息表创建语句:表的结构:3.5 系统功能页面展示3.5.1 登录页面 它的主要功能是使客户进入这个羊场管理系统,并且该客户必须是数据库授权的合法用户,他的角色一般是员工.其页面如下所示 图4.5.1登录页面3.5.2 系统功能界面(1) 系统界面显示系统主要功能菜单,当合法的客户进入系统,它所看到的页面如下:图4.5.2.1系统主页(2)羊只信息的增删改查界面图4.5.2.2 查询所有羊只信息界面图4.5.2.3 根据ID查询羊只信息界面 图4.5.2.4 根据ID更新羊只信息界面图4.5.2.5 增加羊只信息界面图4.5.2.5 删除羊只信息界面(3)员工的增删改查界面图4.5.2.6查询所有员工信息界面图4.5.2.7根据ID查询员工信息界面图4.5.2.8添加员工信息界面 图4.5.2.9修改员工信息界面 图4.5.2.10删除员工信息界面(4)羊舍信息的增删改查界面图4.5.2.11查询所有羊舍信息界面图4.5.2.12增加羊舍信息界面图4.5.2.13删除羊舍信息界面图4.5.2.14更新羊舍信息界面图4.5.2.15根据ID查询羊舍信息界面(5)饲料、喂养信息管理界面图4.5.2.15饲料信息界面图4.5.2.16喂养信息界面4结论通过各种技术方法之间的比较,确定了使用C/S结构作为开发模式,MYSQL作为后台数据库处理,JAVA编写的GUI作为前台的交互界面开发的过程中充分考虑了系统的实用性和易操作性,大部分信息的录入、查询、修改、删除等都集中在一个布局中,这样就减少了用户在使用过程中的不断选择菜单,提高了软件的效率。通过对此系统的编写,提高了我们小组对java中的GUI和点击事件,各种基本知识的理解,让我们更好的掌握java。通过对数据库的链接与跟表的建立,巩固了对数据库知识的理解通过书写整体的设计过程,加深了对软件工程这门课程的理解,了解了软件开发中各个模块的设计。5系统源码.tian.sheepmanager.db包BaseDao.javapackage com.tian.sheepmanager.db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;/* * 操作数据库的基本封装 * author Administrator * */public class BaseDao /链接Connectionprivate Connection conn;/结果集变量定义private ResultSet rs;/数据库地址private String strUrl="jdbc:mysql:/localhost:3306/sheepmanager"/* * 获取链接Connection方法 * return */public Connection getConnetion()try /加载驱动Class.forName("com.mysql.jdbc.Driver");/建立链接conn=DriverManager.getConnection(strUrl,"root","root"); catch (ClassNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return conn;/* * 释放Connection链接的方法 */ public void releaseConnection() try this.conn.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); /* * 释放PreparedStatment方法 * param pstmt */ public void releasePreparedStatment(PreparedStatement pstmt) if(pstmt!=null) try pstmt.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); /* * 释放结果集resultSet方法 * param rs */ public void releaseResultSet(ResultSet rs) if(rs!=null) try rs.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace(); IFeed.javapackage com.tian.sheepmanager.db;import java.util.List;import com.tian.sheepmanager.entities.Feed;/* * 饲料信管跟数据库中信息的增删改查 * author Administrator * */public interface IFeed /添加一条饲料信息public boolean add(Feed feed);/更新一条饲料信息public int update(Feed feed);/删除一条饲料信息public boolean delete(String feed_id);/根据id查饲料信息public Feed getFeedById(String feed_id);/查询所有饲料的信息public List<Feed> getFeedList();IFeedEat.javapackage com.tian.sheepmanager.db;import java.util.List;import com.tian.sheepmanager.entities.FeedEat;/* * 喂养信息接口,实现对喂养信息的增删改查 * author Administrator * */public interface IFeedEat /增加一条喂养信息public boolean add(FeedEat feedEat);/更新一条喂养信息public int update(FeedEat feedEat);/删除一条喂养信息public boolean delete(String feedEat);/根据Id查询一条喂养信息public FeedEat getfeedEatById(String feedEat);/查询所有喂养信息public List<FeedEat> getfeedEatList();ISheep.javapackage com.tian.sheepmanager.db;import java.util.List;import com.tian.sheepmanager.entities.Sheep;/* * 羊只信息管理接口 * author Administrator * */public interface ISheep public boolean add(Sheep sheep);public int update(Sheep sheep);public boolean delete(String sheep_id);public Sheep getSheepById(String sheep_id);public List<Sheep> getSheepList();ISheepRoom.javapackage com.tian.sheepmanager.db;import java.util.List;import com.tian.sheepmanager.entities.SheepRoom;/* * 羊舍信息管理接口 * author Administrator * */public interface ISheepRoom public boolean add(SheepRoom sheepRoom);public int update(SheepRoom sheepRoom);public boolean delete(String sheepRoom_id);public SheepRoom getSheepRoomById(String sheepRoom_id);public List<SheepRoom> getSheepRoomList();IStaff.javapackage com.tian.sheepmanager.db;import java.util.List;import com.tian.sheepmanager.entities.Staff;/* * 操作员工表接口 * author Administrator * */public interface IStaff public boolean add(Staff staff);public int update(Staff staff);public boolean delete(String staff_id);public Staff getStaffById(String staff_id);public List<Staff> getStaffList();IUser.javapackage com.tian.sheepmanager.db;import java.util.List;import com.tian.sheepmanager.entities.Feed;import com.tian.sheepmanager.entities.Users;/* * 登陆人员注册管理 * author Administrator * */public interface IUsers public boolean add(Users users);public int update(Users users);public boolean delete(String users_id);public Feed getUsersById(String users_id);public List<Users> getUsersList();com.tian.sheepmanager.db.dao包FeedDao.javapackage com.tian.sheepmanager.db.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.tian.sheepmanager.db.BaseDao;import com.tian.sheepmanager.db.IFeed;import com.tian.sheepmanager.db.IStaff;import com.tian.sheepmanager.entities.Feed;import com.tian.sheepmanager.entities.SheepRoom;import com.tian.sheepmanager.entities.Staff;/* * 实现对数据库中饲料信息 * author Administrator * */public class FeedDao extends BaseDao implements IFeed/* * 添加饲料信息 */public boolean add(Feed feed) Connection conn=this.getConnetion();String sql="insert into feed (_id,_name,_prices,_feednum,_buytime,_buyspace,_buyperson) values(?,?,?,?,?,?,?)"PreparedStatement pstmt=null;try pstmt=conn.prepareStatement(sql); pstmt.setString(1,feed.get_id(); pstmt.setString(2, feed.get_name(); pstmt.setDouble(3, feed.get_prices(); pstmt.setDouble(4,feed.get_feednum(); pstmt.setLong(5,feed.get_buytime(); pstmt.setString(6, feed.get_buyspace(); pstmt.setString(7, feed.get_buyperson(); pstmt.execute(); return true; catch (SQLException e) e.printStackTrace();this.releasePreparedStatment(pstmt);this.releaseConnection();return false;/* * 更新饲料信息 */public int update(Feed feed) Connection conn=this.getConnetion();String sql="update feed set _name = ?,_prices = ?,_feednum = ?,_buytime = ?,_buyspace = ?,_buyperson = ? where _id = ?"PreparedStatement pstmt=null;try pstmt=conn.prepareStatement(sql); pstmt.setString(7,feed.get_id(); pstmt.setString(1, feed.get_name(); pstmt.setDouble(2, feed.get_prices(); pstmt.setDouble(3,feed.get_feednum(); pstmt.setLong(4,feed.get_buytime(); pstmt.setString(5, feed.get_buyspace(); pstmt.setString(6, feed.get_buyperson(); return pstmt.executeUpdate(); catch (SQLException e) e.printStackTrace();this.releasePreparedStatment(pstmt);this.releaseConnection();return 0;/* * 根据ID查询饲料信息 */public Feed getFeedById(String feed_id) Connection conn = this.getConnetion();Feed feed = null;PreparedStatement prepareStatement = null;ResultSet executeQuery = null;String sql = "select * from feed where _id = ?"tryprepareStatement = conn.prepareStatement(sql);prepareStatement.setString(1,feed_id);executeQuery = prepareStatement.executeQuery();if(executeQuery != null &&executeQuery.next()feed = new Feed();feed.set_id(executeQuery.getString(1);feed.set_name(executeQuery.getString(2);feed.set_feednum(executeQuery.getDouble(3);feed.set_prices(executeQuery.getDouble(4);feed.set_buytime(executeQuery.getLong(5);feed.set_buyspace(executeQuery.getString(6);feed.set_buyperson(executeQuery.getString(7);return feed; catch (Exception e) e.printStackTrace();this.releaseResultSet(executeQuery);this.releasePreparedStatment(prepareStatement);this.releaseConnection();return null;/* * 查询饲料全部信息 */public List<Feed> getFeedList() Connection conn = this.getConnetion();List<Feed> lists = null;Feed feed = null;PreparedStatement pStatement = null;ResultSet resultSet = null;String sql = "select * from feed"try pStatement = conn.prepareStatement(sql);resultSet = pStatement.executeQuery();if(resultSet != null)lists = new ArrayList<Feed>();while(resultSe