本来觉得还差一点点,结果15个小时了还没有弄完,说好的不熬夜的呢???!!!
一个破超市的项目,废了我这么长时间,搞什么飞机啊?!!!
喝了6罐 ’乐虎‘ 了,这是我的常态吗?想做一个不熬夜的程序员,真的这么难吗?
每一个模块都是那么的墨迹,到处报错,我觉得吧,我不是前台弱,是前台和中间那块就是servlet比较弱,jQuery好一点了,el表达式ajax,json,好难过的。
java到数据库这边是我最熟练的,而且也比较好写,主要是分层开发嘛,从下往上写呗,sql现在也不是那么的难了。主要就是servlet,我的痛!!!
小豆腐年前就让我写的,本打算看完视频再写,可是年后回来,又搞了框架,一拖再拖,现在是该还旧账的时候了,没办法,自己欠下的。上周身体确实不适,感觉没有那么多精力,总是累,我觉得我保养的还行啊,就是睡眠少了点。
还差两个模块呢,sl会员商城还没写呢,娜女士都写的差不多了吧,好气人啊!!!
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
==========================系统功能============================ 登录 退出 用户管理 修改密码 添加用户 修改用户 删除用户 查看用户 供应商管理 添加供应商 修改供应商 删除供应商 查看供应商 账单管理 添加账单 修改账单 删除账单 查看账单 ==========================数据库设计============================ 用户表: 主键ID 用户账号(用户编码) 用户密码 用户名 性别(1 男 2 女) 出生日期 用户电话 用户地址 用户类型(1 系统管理员 2 经理 3 普通员工) 创建时间 创建者(userId) 更新时间 更新者(userId) 供应商表: 主键ID 供应商编码 供应商名称 供应商描述 供应商联系人 联系电话 地址 传真 创建时间 创建者(userId) 更新时间 更新者(userId) 账单表: 主键ID 账单编码 商品名称 商品描述 商品单位 商品数量 总金额 供应商(providerID) 是否付款(1 未支付 2 已支付) 创建时间 创建者(userId) 更新时间 更新者(userId) decimal(20,2) 12.668 12.67 12.248 12.24 BigDecimal 12.248 12.24 12.66 ==========================系统框架搭建============================ (java开发环境/运行时环境)bildpath 要高于或者等于 Compliler(编译时环境) 修改字符集 MVC: jsp servlet jdbc mysql 事务:3张表 1 insert 2 update 3 detele ------------------------src------------------------- pojo:数据实体(完成与数据库表的映射) dao:数据访问接口(与数据库操作) service:业务逻辑层(处理业务逻辑,调用dao接口)--- 事务控制是跟业务相关,只有复杂的业务才有事务控制 servlet:控制层 (control) ------------------------webroot------------------------- jsp:数据展示(view) js images css (静态资源文件) ======单例======:运行期间有且仅有一个实例 关键点: 1、一个类只有一个实例---最基本的---(只提供私有的构造器) 2、它必须自行创建这个实例---(定义了静态的该类的私有对象) 3、它必须自行向整个系统提供这个实例 -----(提供一个静态的公有的方法,返回创建或者获取本身的静态私有对象) lazy loading 延迟加载 以时间换空间 懒汉模式:(线程不安全--1、同步 2、双重校验锁) 比较懒,在类加载的时候,不创建实例,运行调用的时候创建。 类加载快,在运行时获取对象速度慢 以空间换时间 饿汉模式:(线程安全) 类加载的时候,就完成了初始化。所以类加载慢,但是在运行时获取对象 静态内部类(保证了lazy loading的特性) 方法的重载体现了面向对象多态的思想 =================JDBC================= 1、service (try catch) connection.setAutoCommit(false); dao.add()...update()...delete() connection.commit(); connection.rollback(); close(connection、null、null); 2、dao(throws Exception) executeUpdate()...... close(null、prepareStatement、resultSet) 3、BaseDao(操作数据库的基类)静态类 获取连接(connection)throws Exception 查询操作(sql、params、connection、prepareStatement、resultSet) 更新操作(sql、params、connection、prepareStatement) 关闭资源(connection、prepareStatement、resultSet) ====页面结构 css html js ===登录、注销、查询==== ===用户管理----增加用户====== 修改,查看,删除 修改,查看====根据ID 获取ID 获取user信息(getUserInfoById) 保存修改信息 dao service =====修改密码===== 1、验证旧密码是否正确(输入的旧密码和当前用户的密码)--ajax 2、保存新密码(数据库)--form ====供应商管理===== dao================================ //1 增加供应商 boolean add(Connection connection, Provider provider)throws Exception //2 修改供应商 boolean modify(Connection connection, Provider provider)throws Exception; //3 删除供应商 boolean deleteProviderById(Connection connection, String delId)throws Exception; delete from smbms_provider where id=? 扩展:如果根据供应商类型进行批量删除的话 boolean deleteProviderByProType(Connection connection, String proType)throws Exception; delete from smbms_provider where proType=? //封装的删除方法 deleteProvider (Connection connection, Provider provider) sql语句要进行拼接 StringBuffer sql= new StringBuffer(); sql.append("delete from smbms_provider"); if(!StringUtils.isNULLorEmpty(provider.getId())){ sql.append(" where id=?"); }else if(!StringUtils.isNULLorEmpty(provider.getProType())){ sql.append(" where proType=?"); } 如果并存的情况 if(!StringUtils.isNULLorEmpty(provider.getId())){ sql.append(" where id=?"); } if(!StringUtils.isNULLorEmpty(provider.getProType())){ sql.append(" where proType=?"); } 。。。。。。。 userService.deleteProvider(Provider provider); //根据ID删除 provider.setId("2") //根据供应商类别删除 provider.setProType("3") //4 获取供应商列表 List<Provider> getProviderList(Connection connection,String proName)throws Exception; select * from smbms_provider where proName= like? List<Provider> getProviderList(Connection connection,Provider provider)throws Exception; select * from smbms_provider where proName= like? and...and... 原则: 凡是需要用户输入的查询都是模糊查询,凡是需要用户选择的查询都是精确查询(传到后台的是id) //5 根据ID获取供应商详细信息 Provider getProviderById(Connection connection, String id)throws Exception; ====订单管理====== //增加订单 boolean add(Connection connection, Bill bill) throws Exception; //修改订单
一定要搞完!!!!