纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

java项目超市管理系统

9月9日 凉夕夏投稿
  一。概述
  1。鹏哥前面有写过java项目超市管理系统项目,传送门
  2。收到很多朋友私信给我,也很感谢老铁们的反馈和交流,前面这个项目只是对java基础知识和面向对象的思想练习,但是没有涉及到java如何操作数据库,如何通过java将数据从数据库拿出来,如果存进去这些问题。对于java新手来说,这些问题不知道从何处下手。有很多刚入门的java新手建议我写个java操作数据库的实战项目供入门者参考,我想如果能帮助他们少花点时间出坑,何乐不为?鹏哥就特意思考了一天,整理了一下思路,今天就抽时间写个超市购物管理系统。。。。。gogogo
  3。超市购物管理系统涉及到的知识:java基础语法,java面向对象的开发思想,java如何操作数据库,集合方面的知识
  4。适合java入门,不知道java如何操作数据库
  5。基本所有的代码鹏哥会打上注释,方便阅读
  6。因为是java操作数据库的实战项目,不会详细讲解java环境搭建,数据库安装,sql语法这些知识。太多了,我写一周不见得写完。。。。。或者可以去鹏哥站java一号查看相关文章。所以开始之前你总的把java开发环境安装好吧、数据库安装好吧、
  7。开发工具jdk是1。8;数据库用的是mysql5。5(当然sqlserver数据库完全可以)
  8。源码获取:我会将核心代码粘贴出来,所有的代码关注鹏哥公众号java一号实战项目中会给出
  二:效果演示
  欢迎使用超市购物管理系统1。商品入库2。根据商品编号查询商品3。商品列表4。购买商品5。删除商品6。更新商品0。退出系统请输入要执行的操作3编号名称单价数量1234苹果12。0351235衣服123。001236篮球200。020输入y继续否则退出y1。商品入库2。根据商品编号查询商品3。商品列表4。购买商品5。删除商品0。退出系统请输入要执行的操作4输入购买商品的编号1235输入购买商品的数量1此商品库存0无法购买;输入y继续购买输入其他结算y输入购买商品的编号1234输入购买商品的数量2购买成功输入y继续购买输入其他结算1236编号名称数量总价1234苹果224。0总计消费:24。0元输入y继续否则退出y1。商品入库2。根据商品编号查询商品3。商品列表4。购买商品5。删除商品0。退出系统请输入要执行的操作5输入要刪除的商品编号4564沒有此商品输入y继续否则退出y1。商品入库2。根据商品编号查询商品3。商品列表4。购买商品5。删除商品0。退出系统请输入要执行的操作3编号名称单价数量1234苹果12。0331235衣服123。001236篮球200。020输入y继续否则退出y1。商品入库2。根据商品编号查询商品3。商品列表4。购买商品5。删除商品0。退出系统请输入要执行的操作4输入购买商品的编号1234输入购买商品的数量2购买成功输入y继续购买输入其他结算y输入购买商品的编号1234输入购买商品的数量2购买成功输入y继续购买输入其他结算t编号名称数量总价1234苹果448。0总计消费:48。0元输入y继续否则退出
  三:创建项目
  在eclipse创建一个ShopManager项目
  接着我们将数据库驱动jar包引入(可以去官网下载或者在我的公众号java一号回复即可获取,);
  java和这个数据库驱动有什么关系呢?简单理解就是这个数据库驱动是java和数据库中间的桥梁,用于两者通信。
  创建lib的文件夹
  将我们准备好的驱动复制到这个lib中
  在这个驱动上右键执行
  最后完整的结构
  创建项目结构,很重要,很重要,很重要,这些都是开发要注意的,对于这些小项目而言,完全可以将所有的代码类都放在src下,但是以后项目越来越大,所有的类成千上百个,都放在src,没有分包的的话,项目项目其他开发者看到代码什么承受多少点伤害。
  这个系统中比较简单,下面四个包就可以,其中app包用于放系统主入口类,pojo放系统涉及的实体类,service放系统业务,utils放系统中的工具类;test临时测试类
  四:连接数据库
  因为系统会涉及到多次对数据库中数据的访问,所以我们将连接数据库操作写成一个工具类DbUtil,不要每次涉及到操作数据库就写重复的连接代码。
  packagecom。javayihao。top。importjava。sql。Cimportjava。sql。DriverMimportjava。sql。ResultSimportjava。sql。SQLEimportjava。sql。Sdate2019129Description连接数据库工具类authorcom。javayihao。toppublicclassDbUtil{把几个用于连接数据库的字符串定义成常量,不必每次去创建privatestaticfinalStringUSER;数据库用户名privatestaticfinalStringUPWD;数据库密码本地数据库shopprivatestaticfinalStringURLjdbc:mysql:localhost:3306;驱动privatestaticfinalStringDRIVERcom。mysql。jdbc。D;注册驱动static{try{Class。forName(DRIVER);}catch(ClassNotFoundExceptione){e。printStackTrace();}}得到数据库连接对象Connection的函数publicstaticConnectiongetConnection()throwsSQLException{returnDriverManager。getConnection(URL,USER,UPWD);}关闭连接和执行的打开资源publicstaticvoidclose(Connectionconnection,Statementstatement){if(statement!null){try{statement。close();}catch(SQLExceptione){e。printStackTrace();}}if(connection!null){try{connection。close();}catch(SQLExceptione){e。printStackTrace();}}}关闭所有的打开资源publicstaticvoidclose(Connectionconnection,Statementstatement,ResultSetrs){if(statement!null){try{statement。close();}catch(SQLExceptione){e。printStackTrace();}}if(connection!null){try{connection。close();}catch(SQLExceptione){e。printStackTrace();}}if(rs!null){try{rs。close();}catch(SQLExceptione){e。printStackTrace();}}}}
  测试
  packagecom。javayihao。top。importjava。sql。Cimportjava。sql。SQLEimportcom。javayihao。top。utils。DbUdate2019129Description测试数据库连接类authorcom。javayihao。toppublicclassDbUtilTest{publicstaticvoidmain(String〔〕args)throwsSQLException{ConnectionconDbUtil。getConnection();System。out。println(con);}}
  如下,说明数据库连接成功
  五:创建实体类
  packagecom。javayihao。top。date2019129Description商品实体authorcom。javayihao。toppublicclassGood{商品编号商品名称privateS商品价格(价格可能涉及到小数,这里使用float,当然真正大型购物平台不会使用float,有兴趣的朋友可以上网了解)库存空参构造publicGood(){super();}打印方法OverridepublicStringtoString(){Good〔,,,〕;}有参构造,方便初始化对象publicGood(intid,Stringname,floatprice,intnum){super();this。this。this。this。}setget方法publicintgetId(){}publicvoidsetId(intid){this。}publicStringgetName(){}publicvoidsetName(Stringname){this。}publicfloatgetPrice(){}publicvoidsetPrice(floatprice){this。}publicintgetNum(){}publicvoidsetNum(intnum){this。}}
  六:数据库
  本地创建数据库shop,创建表tgood
  CREATETABLEtgood(idint(5)NOTNULL,namevarchar(25)NOTNULL,pricefloat(10,2)NOTNULL,numint(5)NOTNULL,PRIMARYKEY(id))ENGINEInnoDBDEFAULTCHARSETutf8mb4;
  七。核心业务
  packagecom。javayihao。top。importjava。sql。Cimportjava。sql。PreparedSimportjava。sql。ResultSimportjava。sql。SQLEimportjava。util。ArrayLimportjava。util。Simportcom。javayihao。top。pojo。Gimportcom。javayihao。top。utils。DbUdate2019129Description系统主界面authorcom。javayihao。toppublicclassShopView{获取键盘输入对象ScannerinputnewScanner(System。in);系统运行方法publicvoidShopStart(){System。out。println(欢迎使用超市购物管理系统);是否继续的标志量,默认是StringisG;do{调用菜单那展示的函数showMenu();System。out。println(请输入要执行的操作);接受键盘的输入,这里使用String,一次性处理数字和字符输入,不建议使用int类型数字Stringselectinput。next();根据输入的选择执行对应的方法switch(select){执行商品入库方法1:insertGood();执行商品查詢方法2:System。out。println(输入要查询的商品编号);intgoodIdinput。nextInt();调用查询商品的方法,GoodgoodsearchGoodById(goodId);存在if(good!null){System。out。println(商品编号:goodI商品名称:good。getName()商品价格:good。getPrice()商品数量:good。getNum());}else{System。out。println(此商品不存在);}执行商品列表方法3:getGoodList();执行商品购买方法4:buyGood();执行商品购买方法5:System。out。println(输入要刪除的商品编号);intidinput。nextInt();调用查询商品的方法,if(searchGoodById(id)!null){deleteGood(id);}else{System。out。println(沒有此商品);}6:updateGood();退出系统0:System。out。println(欢迎下次使用再见!);终止程序System。exit(0);default:System。err。println(输入有误请重新输入!);}System。out。println(输入y继续否则退出);isGoinput。next();}while(isGo。equals());System。out。println(欢迎下次使用再见!);}更新商品操作1。先查询当前要更新的商品存不存在2。如果存在更新即可,不存在提示privatevoidupdateGood(){System。out。println(输入要修改的商品);intgidinput。nextInt();GoodgoodsearchGoodById(gid);System。out。println(商品信息如下);if(good!null){System。out。println(商品编号:商品名称:good。getName()商品价格:good。getPrice()商品数量:good。getNum());System。out。println(修改商品名称);Stringnameinput。next();System。out。println(修改商品单价);floatpriceinput。nextFloat();System。out。println(修改商品库存);intnuminput。nextInt();Supdatetgoodsetname?,price?,num?whereid?;try{创建一个操作数据库的对象ConnectionconDbUtil。getConnection();创建执行sql的执行对象PreparedStatementPreparedStatementpstcon。prepareStatement(sql);给占位符设置值pst。setString(1,name);pst。setFloat(2,price);pst。setInt(3,num);pst。setInt(4,gid);如果是查询的话execute()返回true,如果是更新或插入的话就返回falseif(!pst。execute()){System。out。println(更新成功);}关闭连接DbUtil。close(con,pst);}catch(Exceptione){e。printStackTrace();System。out。println(更新异常e。getMessage());}}else{System。out。println(此商品不存在);}}用于展示系统界面菜单的方法showMenu(){System。out。println(1。商品入库);System。out。println(2。根据商品编号查询商品);System。out。println(3。商品列表);System。out。println(4。购买商品);System。out。println(5。删除商品);System。out。println(6。更新商品);System。out。println(0。退出系统);}刪除商品1。首先得判断该商品存在2。根据商品编号id删除privatevoiddeleteGood(intid){Sdeletefromtgoodwhereid?;try{创建一个操作数据库的对象ConnectionconDbUtil。getConnection();创建执行sql的执行对象PreparedStatementPreparedStatementpstcon。prepareStatement(sql);给占位符设置值pst。setInt(1,id);如果是查询的话execute()返回true,如果是更新或插入的话就返回falseif(!pst。execute()){System。out。println(刪除成功);}关闭连接DbUtil。close(con,pst);}catch(Exceptione){e。printStackTrace();System。out。println(删除异常e。getMessage());}}商品入库这里只处理编号不能重复的逻辑,关于输入的编号是不是数字这里就不做判断,有兴趣的朋友可以试试privatevoidinsertGood(){商品编号intid0;System。out。println(输入商品编号);while(true){idinput。nextInt();判断当前输入的编号重复没有,重复重新输入if(searchGoodById(id)null){}System。err。println(编号重复,请重新输入商品编号);}System。out。println(输入商品名称);Stringnameinput。next();System。out。println(输入商品单价);floatpriceinput。nextFloat();System。out。println(输入商品数量);intnuminput。nextInt();要执行的sql语句,这里使用占位符防止sql入侵Sinsertintotgood()values(?,?,?,?);try{创建一个操作数据库的对象ConnectionconDbUtil。getConnection();创建执行sql的执行对象PreparedStatementPreparedStatementpstcon。prepareStatement(sql);给占位符设置值pst。setInt(1,id);pst。setString(2,name);pst。setFloat(3,price);pst。setInt(4,num);执行sql语句if(!pst。execute()){System。out。println(入库成功);}关闭连接DbUtil。close(con,pst);}catch(Exceptione){e。printStackTrace();System。out。println(入库异常e。getMessage());}}商品查询返回的是一个商品对象,没有此商品返回nullprivateGoodsearchGoodById(intid){执行的sql语句Sselectid,name,price,numfromtgoodwhereid?;try{创建一个操作数据库的对象ConnectionconDbUtil。getConnection();创建执行sql的对象PreparedStatementPreparedStatementpstcon。prepareStatement(sql);pst。setInt(1,id);ResultSetrspst。executeQuery();if(rs。next()){有结果,将查到的数据通过构造函数封装成一个商品对象GoodgoodnewGood(rs。getInt(),rs。getString(),rs。getFloat(),rs。getInt());}关闭连接DbUtil。close(con,pst);}catch(SQLExceptione){e。printStackTrace();}}商品列表privatevoidgetGoodList(){执行的sql语句Sselectid,name,price,;try{创建一个操作数据库的对象ConnectionconDbUtil。getConnection();创建执行sql的对象PreparedStatementPreparedStatementpstcon。prepareStatement(sql);ResultSetrspst。executeQuery();System。out。println(编号名称单价数量);if(rs。wasNull()){System。out。println(没有商品);}else{while(rs。next()){有结果,打印通过rs。getxxx()方法参数是数据库列名System。out。println(rs。getInt()rs。getString()rs。getFloat()rs。getInt());}}关闭连接DbUtil。close(con,pst);}catch(SQLExceptione){e。printStackTrace();}}购买商品publicvoidbuyGood(){用来存储购买商品的集合ArrayListgoodsnewArrayL();是否继续购买标记S;do{System。out。println(输入购买商品的编号);intidinput。nextInt();GoodgoodsearchGoodById(id);if(good!null){System。out。println(输入购买商品的数量);intnuminput。nextInt();if(good。getNum()0){for(inti0;goods。size();i){if(goods。get(i)。getId()id){如果购物车中有该商品数量加即可goods。get(0)。setNum(numgoods。get(0)。getNum());}else{如果购物车中没有该商品数量加即可goods。add(g);}}}else{购物车中没有商品,加入到购物车中goods。add(g);}System。out。println(购买成功);}else{System。out。println(购买失敗);}}catch(Exceptione){e。printStackTrace();System。out。println(购买异常e。getMessage());}}System。out。println(输入y继续购买输入其他结算);flaginput。next();if(!flag。equals()){结算account(goods);}}else{System。out。println(没有此商品);}}while(flag。equals());}结算购物车privatevoidaccount(ArrayListgoods){System。out。println(编号名称数量总价);lambda表达式遍历集合,当然是用for循环也okgoods。forEach(System。out。println(in。getId()in。getName()in。getNum()in。getNum()in。getPrice()));合计floatsum0;for(inti0;goods。size();i){对总价求和sum(goods。get(i)。getNum())(goods。get(i)。getPrice());}System。out。println(总计消费:元);}}
  总结
  至此,项目已经完成了,当然项目本身还是存在不足,比如,在接受键盘输入的合法性判断。对于java操作数据库而言可以参考,不是在搬砖,就是搬砖的路上,希望你的程序永无bug
投诉 评论 转载

保存私密资料的简便方法很多人都有一些不想让他人知道的秘密资料,而这些资料(包……python关键字UI自动化测试框架(4)主运行。。。利用python的getattr自省方法,执行excle中定义的方法fromunit。operExcleimportoperExclefromunit。baseim……不满于现状?月薪3W和3K间的差距,也许就藏。。。俗话说的好,人生每一个成长的阶段都伴随着学习,只有不断的学习才能丰富自己的知识与义务能力。这对于上班族来讲尤为重要,如果你不满于现在,想将月薪3K变为3W,你必须的知道这些网站……Python编程:如何将多个一维数组的元素交叉。。。问题提出假定有3个一维数组x0、x1、x2,其元素分别为:x0〔1,2,3〕x1〔4,5,6〕x2〔7,8,9〕请将这3个一维数组的元素交叉拼接后……java项目超市管理系统一。概述1。鹏哥前面有写过java项目超市管理系统项目,传送门2。收到很多朋友私信给我,也很感谢老铁们的反馈和交流,前面这个项目只是对java基础知识和面向对象的思……怎样做好seo?高效方法经验:10个搜索引擎优。。。10个搜索引擎优化工具推荐1、SEMrushSEMrush可以让你分析一个大范围的预点击数据为你的PPC运动:找到目标关键词,查看搜索和显示广告的例子,你的竞争对手……U盘PK移动硬盘,到底谁才是“移动存储之王”。。。慢慢买比价2019120420:24:16如今移动存储设备已经成为了人们生活中不可或缺的工具,特别是U盘与移动硬盘最为常见。慢慢君从学生时代就开始使用这些设备,体积较小的……处理器哪个好?i3i5i7如何选择?处理器顾名思义就是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心(ControlUnit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。……appium多设备并行运行codingutf8fromappiumimportwebdriverimporttimeimportyamlimportosfromtomorr……你知道幼儿园的冷暴力?别不在意,也许你的。。。现在的孩子就是父母的心肝宝贝,舍不得打舍不得骂,受了别人的欺负,那更是不能接受的。幼儿园是一个充满欢笑,充满快乐的地方,是孩子懵懂时期最喜欢的地方。这是孩子初次独自……PythonPyQt架构:纯代码方式编写界面程序入。。。PyQt是Qt界面库在Python下的绑定,为在Python语言下编写GUI界面程序提供了极大的便利。对于界面程序的设计,可以使用纯代码构建,也可以借助于其提供的设计师(QtD……台式电脑何去何从?大家一定会认为台式电脑的黄金发展期或许已经成为历史了,我认为这是错误的,今后台式机的发展会更加智能,更加偏重于专业性较强的公司和企业进行发展!随着软件业和硬件业的快速发展……
QQ安装文件夹里面的小秘密爆笑动态图,笑死人不管,哈哈!!QQ技术全攻略如何删减QQ无用功能为系统彻底减负QQ视频聊天无声音的解决方法QQ群等级头衔名称大全怎样为QQ消息记录设置密码你知道QQ隐藏着多少秘密?那些用老版QQ头像的同学都到哪去了?免费装饰QQ非常有趣的qq美图QQ道歉表情

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形