收藏 分享(赏)

Java程序设计实验报告.pdf

上传人:精品资料 文档编号:10777527 上传时间:2020-01-08 格式:PDF 页数:14 大小:631.86KB
下载 相关 举报
Java程序设计实验报告.pdf_第1页
第1页 / 共14页
Java程序设计实验报告.pdf_第2页
第2页 / 共14页
Java程序设计实验报告.pdf_第3页
第3页 / 共14页
Java程序设计实验报告.pdf_第4页
第4页 / 共14页
Java程序设计实验报告.pdf_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、 Java 程序设计实验综合课程设计报告 答答 租车 系统 2014 计算机科学与技术班 201408030130 傅 啸 震 201408030109 庞 颜 2016 年 12 月 20 日 一、 实验目的 通过编写 Java 的应用系统综合实例 答答租车系统,总结、回顾和实践面向对象的编程思想以及编程方法,并通过编写程序来掌握 Java 语言编程技巧,将学习到的知识融会贯通,同时提高调试程序的能力,养成良好的 编程习惯,并增强对程序设计整 体思路的把握。 1.熟悉在集成开发环境下编写 Java 程序。 2.掌握 Java 语言的程序设计方法。 3.掌握基于 Swing 图形用户界面设计的

2、思想。 4.理论联系实际,提高软件开发技术。 5.培养学生分析,解决问题的能力 二、 设备与环境 硬件 :多媒体计算机 软件 :Windows 2000 以上的操作系统、 JAVA 集成开发环境 Myeclipse 三、 实验内容 总体要求:程序功能基本完成,用户界面友好,代码的可维护性和可扩展性较好,最好 包括必要的注释和相应的文档。 具体要求:车辆浏览,用户注册,用户登录,用户租车,退出租车系统等功能,主要 包括: 1.系统的主界面实现车辆的动画效果 。 2.在菜单栏上添加菜单 操作,在菜单上添加菜单项 注册,登陆,浏览,租车,退出。 3.当用户点击注册按钮时,弹出用户 注册 的界面,当

3、输入正确的用户信息时,服务 器端给用户端发送一个相应的响应。 4. 当用户点击登陆按钮时,弹出用户登录的界面。当输入正确的用户信息时,服务器端给用户端发送一个相应的响应。 5. 当用户点击浏览按钮时,弹出车辆信息的界面供用户浏览。 6. 当用户点击租车按钮时,先判断用户是否已经登陆。如果登陆,则弹出租车界面,此时用户可以租车,服务器端给客户端发送相应的响应信息。如果没有登陆,这提示用户需要先登陆 四、 实验 实现思路及代码 用户通过界面输入信息或单击按钮,界面层通过事件处理控制转向业务层的不同处理方法进行处理,当需要对数据库进行操作时,业务层调用数据操作层的相应数据操作方法完成;之后数据操作层

4、将结果返回业务层继续处理,业务层处理完毕,则再将结果返回到界面层,界面层显示结果,用户 由此可进一步 在界面上进行操作。 界面层客户服务层业务层业务层用户1. Window 类 实现租车 系统界面 ,其中包含了 浏览车辆信息的界面,用户登录的界面,用户注册的界面, 以及用户租用车辆的界面。 1) 代码 package com.client.window; public class Window extends JFrame implements ActionListener private JMenuBar bar; private JMenu menu; private JMenuItem

5、item=new JMenuItem5; private PaintPanel paint; private BufferedImage image; public Timer timer; private File files =new File4; private int i; public Window() super(“答答租车系统 “); JPanel panel=new JPanel(); files0=new File(“F:java宝马 .jpg“); files1=new File(“F:java奔驰 .jpg“); files2=new File(“F:java标志 .jp

6、g“); files3=new File(“F:java东风 .jpg“); paint=new PaintPanel(image); timer=new Timer(500,new ActionListener() public void actionPerformed(ActionEvent e) try image=ImageIO.read(filesi); paint.setImage(image); catch(IOException ee) i=i list; public Response(int responseType) this.responseType=responseT

7、ype; public Response(int responseType,String message) this(responseType); this.message=message; public Response(int responseType,List list) this(responseType); this.list=list; public int getResponseType() return responseType; public void setResponseType(int responseType) this.responseType = response

8、Type; public String getMessage() return message; public void setMessage(String message) this.message = message; 4. LoginSever类 服务器端的主线程,一直监听客户端的请求 ,当客户端发送来请求时,服务器的主线程会创建一个子线程来响应客户。 1) 代码 package com.server.socket; public class LoginServer public static void main(String args) ServerSocket server = nu

9、ll; Socket client=null; try server=new ServerSocket(8788); System.out.println(“服务器已启动 “); catch (IOException e) System.out.println(“无法监听客户端 “); while(true) try client=server.accept(); System.out.println(“已经接收到客户来自“+client.getInetAddress(); LoginHandler handler=new LoginHandler(client); handler.start

10、(); catch (IOException e) System.out.println(“无法连接服务器 “); 5. LoginHander类 服务器端的子线程 ,用于响应客户端发来的各种 请求 1) 代码 package com.server.socket; public class LoginHandler extends Thread private Socket socket; private ObjectInputStream serverin; private ObjectOutputStream serverout; private Request request; priv

11、ate Response response; private Thread listener; private boolean keepListening=true; public LoginHandler(Socket socket) this.socket=socket; public synchronized void start() if(listener=null) try serverin=new ObjectInputStream(socket.getInputStream(); serverout=new ObjectOutputStream(socket.getOutputS

12、tream(); listener=new Thread(this); listener.start(); catch (IOException e) System.out.println(“没有创建成功流 “); public void run() try while(keepListening) request=(Request)serverin.readObject(); parseRequest(); serverout.writeObject(response); catch (ClassNotFoundException e) e.printStackTrace(); catch

13、(IOException e) System.out.println(“与客户端链接出现问题 “); public void parseRequest() int requesttype=request.getRequestType(); String name=request.getUsername(); String password=request.getPassword(); int id=request.getCarId(); int number=request.getNumber(); if(requesttype=1) response=new Response(1,“亲,需要

14、输入用户名和密码呦 “); if(requesttype=2) int id1=Service.login(name, password); System.out.println(name+password); if(id10) response=new Response(2,“欢迎 “+name+“登陆 “); else if(id1=0) response=new Response(3,“用户名或密码不正确! “); else if(id10) response=new Response(4,“亲,用户名或密码已经注册了 “); System.out.println(name+passwo

15、rd); if(i=0) response=new Response(4,“恭喜 “+name+“注册成功 “); if(requesttype=5) response=new Response(5,“亲,需要先登陆呦 “); if(requesttype=6) response=new Response(6,“亲,需要输入车辆编号或数量呦 “); if(requesttype=7) int money=Service.rentcar(id,number); if(money=0) response=new Response(7,“亲,你租的车没有那么多了 “); if(money0) res

16、ponse=new Response(8,“恭喜你成功租车,你的租金为: “+money); 6. Service 类 用于实现服务器与数据库的链接,掩盖对数据库具体数据操作的方法 1) 代码 package com.server.socket; public class Service private static DataOperator dataoperator=new DataOperator(); public static int login(String name,String password) boolean connectFlag=false; if(!connectFla

17、g) dataoperator.loadDatabaseDriver(); dataoperator.connect(); connectFlag=true; return dataoperator.selectQuery(name,password); public static int regist(String name,String password) boolean connectFlag=false; if(!connectFlag) dataoperator.loadDatabaseDriver(); dataoperator.connect(); connectFlag=tru

18、e; int i=dataoperator.insertQuery(name,password); return i; public static void liulan() BufferedWriter buffer=null; try buffer=new BufferedWriter( new FileWriter(“e:java实验 .txt“); catch (IOException e1) e1.printStackTrace(); boolean connectFlag=false; if(!connectFlag) dataoperator.loadDatabaseDriver

19、(); dataoperator.connect(); connectFlag=true; public static int rentcar(int id,int number) boolean connectFlag=false; if(!connectFlag) dataoperator.loadDatabaseDriver(); dataoperator.connect(); connectFlag=true; int money=dataoperator.rentcar(id,number); return money; 7. DateOperator 类 将数据库与服务器连接,并且

20、实现对数据的操作 1) 代码 package com.server.socket; public class DataOperator static private Connection coon; static private PreparedStatement preparestatement; public void loadDatabaseDriver() try Class.forName(“com.mysql.jdbc.Driver“); catch (ClassNotFoundException e) System.out.println(“数据库加载驱动失败 “); publi

21、c void connect() try String url=“jdbc:mysql:/127.0.0.1:3306/JavaExperiment“; String user=“root“; String password=“ROOT“; coon=DriverManager.getConnection(url, user, password); catch (SQLException e) System.out.println(“数据库连接失败 “); public int selectQuery(String name,String password) try String sql=“s

22、elect id from user where username=? and userpassword=?“; preparestatement=coon.prepareStatement(sql); preparestatement.setString(1,name); preparestatement.setString(2,password); ResultSet rs=preparestatement.executeQuery(); if(rs.next() int id=rs.getInt(1); return id; return 0; catch (SQLException e

23、) System.out.println(“查询用户表出错 “); return -1; public int insertQuery(String name,String password) String sql=“insert into user(username,userpassword)values(?,?)“; try int i=selectQuery(name, password); if(i0) return i; if(i=0) preparestatement=coon.prepareStatement(sql); preparestatement.setString(1,

24、name); preparestatement.setString(2,password); preparestatement.executeUpdate(); return i; catch (SQLException e) System.out.println(“添加用户表有误 “); return -1; return -1; public List liulan() List cars=new ArrayList(); Car car=null; try int i=0; String sql=“select * from cars“; preparestatement=coon.pr

25、epareStatement(sql); ResultSet rs=preparestatement.executeQuery(); while(rs.next() car=new Car(); car.setId(rs.getInt(“id“); car.setName(rs.getString(“carname“); car.setRent(rs.getInt(“rent“); car.setLoadThing(rs.getInt(“loadthing“); car.setCarryPeople(rs.getInt(“carrypeople“); car.setQuantity(rs.ge

26、tInt(“quantity“); cars.add(car); return cars; catch (SQLException e) System.out.println(“查询汽车信息表时有误 “); return cars; public int rentcar(int carid,int number) ResultSet rs=null; try String sql1=“select * from cars where id=? “; preparestatement=coon.prepareStatement(sql1); preparestatement.setInt(1,c

27、arid); rs=preparestatement.executeQuery(); if(rs.next() if(numberrs.getInt(“quantity“) return 0; else int money=rs.getInt(“rent“)*number; String sql2=“update cars set quantity=? where id=?“; preparestatement=coon.prepareStatement(sql2); preparestatement.setInt(1, rs.getInt(“quantity“)-number); prepa

28、restatement.setInt(2, carid); preparestatement.executeUpdate(); return money; catch (SQLException e) e.printStackTrace(); return -1; return -1; 五、 实验结果及分析 进行这次课程设计中,复习和巩固了本学期课堂上学习的理论和知识,并学会了如何综合应用这些基本知识,加强了动手能力,也让我更深层次上的掌握了 java 语言的编辑、编译、调试程序,并将算法转变为程序实现的知识,在这过程中也无形的锻炼了思维分析,解决问题的能力。 通过本次试验我主要学会了如何运用一下有关 java 的知识: (1). 函数定义是要做到将要实现的功能进行模块化,实现某种功能的算法集合的作用,大大增加了程序的可读性。 (2). 在做程序的时候先列框架,将这个程序所需的类函数等先列清楚,再写函数更加简单合理。 (3). 我还了解了很多的库函数的作用对函数的定义与实现有所了解。 (4). 学会了有关头文件的缺少问题用 eclipse软件中的快捷键 ctrl+shift+o直接导入的解决方法等。 这个程序还是存在很多不足,比如利用多线程和其他方法实现选择子弹个数、速度,以及游戏开始暂停等还不是自己力所能及得,希望以后能慢慢研究 ,通过学习更多的知识做出更美观完善的程序。

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报