基于java和Sql Server数据库的停车场管理系统

YouthShouting

发布日期: 2018-11-19 09:31:15 浏览量: 6418
评分:
star star star star star star star star star star
*转载请注明来自write-bug.com

一、实验内容:

实现停车场管理系统,应用于车辆的出、入管理。

二、功能要求:

包括车辆进出管理与系统管理等功能模块,可根据车辆停放时间及收费标准自动收费。用户需要事先办理停车卡并充值,停车卡分优惠卡和普通卡两类。

  • 车场管理:车辆入场、车辆出场

  • 信息查询:某时间段的出入场信息,当前在场信息,车辆历史停车记录及收费信息

  • 信息维护:用户及停车卡信息维护、充值等

  • 系统管理:车位信息,计费标准等

系统包含两类用户:管理员用户和普通用户。

管理员可以使用系统所有功能,普通用户只能查询车辆历史记录、用户信息、停车卡充值,查询计费标准。

三、实验环境:

  • Windows XP

  • JDK 1.6

  • Eclipse

  • SQL Server

  • 备注:

    • 在XP平台开发
    • DK(JavaDevelopment Kit)是Sun Microsystems针对Java开发员的产品
    • Eclipse进行前台和程序设计,开发图形用户界面和停车收费功能实施
  • SQL建立数据库

四、需求分析与设计:

4.1 需求分析:

本软件具有如下主要功能:

  • 本系统包括两类用户:管理员用户和普通用户。管理员可以使用系统所有功能,普通用户只能查询车辆历史记录、用户信息(只限于个人信息)、查询计费标准、查询当前在场信息、查询出入场信息、当前可用车位信息、口令修改。具体模块划分为如下模块:车场管理模块、信息查询模块、信息维护模块、系统管理模块。

  • 车场管理模块:(应该分为车辆入场和车辆出场两部分)

    • 车辆入场
    • 功能描述:车辆进入停车场时进行登记,记录入场时间并指定车位。只有具有停车卡的车辆才可进场,没有办理停车卡的车辆,应先办理车卡。如果没有相应车位,不能入场;如果卡中余额低于100元,应先充值后再入场。满足条件的车辆,为其指定车位并记录入场时间。车卡分两种类型普通型和优惠型。
    • 车辆出场
    • 功能描述:车辆开出停车场时进行登记,记录出场的时间并进行自动收费(从卡上扣除)。根据车辆进场时间,出场时间及收费标准自动计算车主应该缴纳的费用。如果停车时间包含不足一小时的时间,超过30分钟按一小时计算,不足三十分钟不计算。如果卡上余额足够则直接扣除;如果卡上余额不足,则应先充值后再扣除相应费用。
  • 信息查询模块
    功能描述:在这个模块里用户可以查询出入场信息、当前在场信息、用户个人信息、用户历史记录、收费标准以及当前可用车位信息

  • 查询出入场信息
    功能描述: 查询当前在场信息户可以在这里查询到两种车位的总量及当前可有的车位数量。

  • 查询用户个人信息
    功能描述:登录的管理员可以根据卡号和名字查询用户信息。登陆的普通用户只可以查到自己的信息。

  • 查询用户历史记录
    功能描述:用户可以输入卡号查询相应卡号的历史记录,包括车位号、开始停车时间、结束停车时间、停车总时间、相应收取的费用。

  • 收费标准
    功能描述:用户可以在这里查询不同种类的车位和不同卡的计费标准。

  • 当前在场信息
    功能描述:用户可以在这里查询到当前在场的车辆信息,包括卡号,车位号,开始停车时间。

  • 当前可用车位信息
    功能描述:在这里用户可以查询当前可用的车位的信息,包括车位号、车位类型。

  • 信息维护模块
    在这个模块里用户可以实现用户注册、用户修改及用户充值

  • 用户注册
    功能描述:在这里管理员可添加新的用户(普通用户)。

  • 用户修改
    管理员在这里可以修改用户。这里会以表的形式显示所有的用户信息,包括用户的停车卡信息维护,充值信息等。管理员点击相应的一行用户信息,这行信息会自动填充到表下的面板里,用户可以在面板里修改用户信息,面板下面有两个按钮,修改、删除,点击相应的按钮可以实现相应的功能。

  • 用户充值
    功能描述:用户可以再这里查到自己的余额,并且可以在这里完成充值。

  • 系统管理模块
    功能描述:在这个模块里可以修改相应的车位信息计费标准、注册管理员、更改用户口令以及查看系统声明信息。

  • 管理员注册
    功能描述:管理员可以在这里添加新的管理员。

  • 更改口令
    功能描述:用户可以在这里更该自己的密码。注:操作员只可以修改自己的密码。

  • 计费标准管理
    功能描述:管理员可以在这里不同车位类型、不同车卡类型的收费标准。

  • 关于
    功能描述:用户可以在这里看到系统声明。

4.2 界面设计

登陆界面

管理员主界面

普通用户主界面

车辆入场界面

车辆出场界面

计费标准界面

当场在场信息界面

用户历史信息界面

用户个人信息界面

普通用户个人信息界面

出入场信息界面

当前可用车位信息界面

用户注册界面

用户修改界面

用户充值界面

管理员注册界面

更改口令界面

计费标准管理界面

关于界面

五、数据库设计

5.1 数据库关系图

5.2 数据表的结构设计

用户表:users
字段名称 数据类型 可空 默认值 说明
cardid int 不可 主键,用户的停车卡号
name Nvarchar(20) 不可 用户姓名
password Nvarchar(20) 用户密码
cardtype Nvarchar(20) 停车卡类型
userstype Nvarchar(20) 用户类型
carid int 用户车牌号
tel int 用户电话号码
overage int 用户余额
车位信息表:sit_infor
字段名称 数据类型 可空 默认值 说明
stationid int 不可 主键,车位号
stationtype Nvarchar(20) 不可 车位类型
停车收费卡收费表:charger
字段名称 数据类型 可空 默认值 说明
cardtype Nvarchar(6) 车卡类型
stationtype Nvarchar(20) 车位类型(车卡类型与车位类型一起作为主键)
charge int 价格
停车表:park
字段名称 数据类型 可空 默认值 说明
cardid int 车卡号(外键)
stationid int 车位号(外键)
parkid int 1,每次增加一 停车号,主键
startpark datetime 停车开始时间
endpark datetime 停车结束时间
fee int 停车的收费
sumpark int 停车总时间

六、关键技术介绍

6.1 在其他类中得到当前登录用户对象

实现方法:在LoginFrame类中设置两个静态方法,在其他类中只需要引入LoginFrame类,然后调用他的静态方法即可。方法体如下:

  1. public static users getUser() {
  2. return user;
  3. }
  4. public static void setUser(users user) {
  5. LoginFrame.user = user;
  6. }

6.2 实现用户类型不同,主界面不同的功能

可以定义静态方法disMenu().当用户是普通用户时,调用disMenu()方法即可。具体实现如下

  1. public void disMenu() {
  2. mnuPark.setEnabled(false);
  3. mnuSever.setEnabled(false);
  4. mnuManZhuCe.setEnabled(false);
  5. mnuManCharge.setEnabled(false);
  6. }
  7. if(user.getUserstype().equals("管理员")) {
  8. MdiFrame frame1 = new MdiFrame();//创建一个主窗体
  9. frame1.setVisible(true);//设置其可见
  10. LoginFrame.this.setVisible(false);//设置登录窗体为不显示
  11. }
  12. else {//判断用户名是否为null
  13. MdiFrame frame = new MdiFrame();//创建一个主窗体
  14. frame.disMenu();
  15. frame.setVisible(true);//设置其可见
  16. LoginFrame.this.setVisible(false);//设置登录窗体为不显示
  17. }

6.3 怎么得到系统时间

  1. SimpleDateFormat myfmt=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  2. String a4 = myfmt.format(new java.util.Date()).toString();

6.4 怎么计算时间差值

  1. try {
  2. java.util.Date now = myfmt.parse(a3);//a3是系统当前时间(即出场时间)
  3. java.util.Date date=myfmt.parse(a7);//a7是入场时间
  4. int l=(int) (now.getTime()-date.getTime());//计算毫秒差值
  5. day=l/(24*60*60*1000);//获取天数
  6. hour=(l/(60*60*1000)-day*24);//获得小时
  7. min=((l/(60*1000))-day*24*60-hour*60);//获得分钟
  8. }
  9. catch (Exception e1)
  10. {
  11. JOptionPane.showMessageDialog(null,"消费计算错误");
  12. }
  13. if(min < 30)//如果分钟小于30分钟
  14. a8 = day*24+hour;
  15. else //如果分钟大于30分钟
  16. a8 = day*24+hour+1;

6.5 怎么让布局更优美

使用布局管理器; GridBagLayout,以更改密码界面为例:

  1. getContentPane().setLayout(new GridBagLayout());
  2. setBounds(234, 129, 285, 223);
  3. final JLabel label_5 = new JLabel();
  4. label_5.setText("登 录 名:");
  5. final GridBagConstraints gridBagConstraints_11 = new GridBagConstraints();
  6. gridBagConstraints_11.gridy = 2;
  7. gridBagConstraints_11.gridx = 0;
  8. getContentPane().add(label_5, gridBagConstraints_11);

七、系统实现

功能结构图

上传的附件 cloud_download 基于java的停车场管理系统.7z ( 1.10mb, 1027次下载 )
error_outline 下载需要10点积分

keyboard_arrow_left上一篇 : 基于java和Sql Server数据库的停车场管理系统 仿天猫电子商务(含前端后台数据库) : 下一篇keyboard_arrow_right



YouthShouting
2018-11-19 09:31:46
java和Sql Server数据库实现的停车场管理系统
输入一个整数
2019-05-19 23:09:00
谢谢大神!!
maye
2019-05-29 21:35:57
请问大佬,我想用java连接mysql,可以用您的代码吗? 如果可以的话,大致需要改哪些地方呢?
所示
2019-07-16 13:02:38
怎么打开啊?是个压缩包,解压后是文件,请问怎么用ecplise打开?
所示
2019-07-16 13:53:23
登录账号,密码多少?
所示
2019-07-16 22:56:43
数据库怎么导入,能留个联系方式忙

发送私信

遇顺境,处之淡然;遇逆境,处之泰然

9
文章数
8
评论数
eject