开始去做的时候才知道这才是努力
软件背景
在当今时代什么事情都可能发生,在我十几年的生涯中,小卖部的凌乱给我留下了很大的印象,分类不够合理,账单比较随意,进出帐单没有章节,所以开了很多年都是很稳定,没有挣到什么钱,但是却让我的心算有了一点起色,不过在这里,我希望开发一个简单的易用的网络在线小卖部,也许项目不是很大,但是对于我这个新手来说估计也足够啦,所以想了想,还是把它写下来,仅当是对这个小项目的一个回顾
软件前景和规划
作为一个严谨一点的我,还是决定写下这个项目的前景,现在淘宝的小店开启新农村模式,现在城市的市场已经趋向于饱和,急需开拓国际市场和农村市场,这是这个软件的应运而生,实现了简单的前后台分离,界面简单,应用在商品在小于100以内的小店使用,规划是实现商品的添加和删除,实现进出库的汇总和营收额的结算简单功能,现在要使用到的技术栈使用了简单的servlet和c3p0的数据库导入,使用jsp作为前端的现实,虽然简陋,不过还是有生存的空间
使用周期大概五年
咋这段时间争取做到系统的更新和换代,可是现在要出去工作啦,估计时间上会有欠缺的,不过我相信既然想到开发就有存在的道理
好啦,废话少说,开始我的网上小卖部的开发
首先开发jopo层和数据库的简单应用,开始享用hibernate后来想了想还是用原始的c3p0连接,虽然繁琐,但是没有那么重,而且处理的数据相对极少,从而确定了商品和用户还有就是订单和分类四个对象去构建这个软件,然后接下来是先连接数据库
import entity.User;
public interface UserDao {
void add(User user);
User find(String id);
User find(String username, String password);
public class UserDaoImpl implements UserDao{
@Override
public void add(User user) {
// TODO Auto-generated method stub
try{
QueryRunner runner=new QueryRunner(JdbcUtils.getDataSource());
String sql="insert into user(id,username,password,phone,cellphone,address,email)values(?,?,?,?,?,?,?)";
Object params[]={user.getId(),user.getUsername(),user.getPassword(),user.getPhone(),user.getCellphone(),user.getAddress(),user.getEmail()};
runner.update(sql,params);
}catch(Exception e){
throw new RuntimeException(e);
}
}
}
使用了最原始的连接方式,这样虽然每次要查找或者其他都要书写这么一段代码,但是这样却是能够更进一步了解更多实在的东西,就像今天的错误一样,看到了最基本的查询语句才能够快速的纠正错误。这样是实现了基本可i型和表的关系,这样我们只要在网络上接受数据类型的信息就能够存储到数据库中
接下来要写的当然就是服务即就是书写这个软件的逻辑,这样要考虑的地方就有很多,比如说分页问题,商品的基本操作和现实,这就会用到一些其他技术,比如反射,不过这里只是为了获取class,倒没有太过于深入的去写这个,毕竟我还有很多的地方没弄明白,还是慎用为好,下面使用一段代码来说明下吧,感觉都没有真正的把自己的表达说得更加仔细啦
public void createOrder(Cart cart,User user){
if(cart==null){
throw new RuntimeException("对不起。你没有购买任何商品");
}
Order order =new Order();
order.setId(WebUtils.makeID());
order.setOrdertime(new Date());
order.setPrice(cart.getPrice());
order.setState(false);
order.setUser(user);
for(Map.Entry<String, CartItem>me:cart.getMap().entrySet()){
CartItem citem=me.getValue();
OrderItem oitem=new OrderItem();
oitem.setGoods(citem.getGoods());
oitem.setPrice(citem.getPrice());
oitem.setId(WebUtils.makeID());
oitem.setQuantity(citem.getQuantity());
order.getOrderitems().add(oitem);
}
orderDao.add(order);
}
public List<Order> listOrder(String state) {
return orderDao.getAll(Boolean.parseBoolean(state));
}
总结
在开发这个过程中,遇到很多坑,不过最后虽然还不怎么让我满意,但是我却对各个流程有一个了解吧,其他的以后再说吧。