生活工程体验信仰哲学精神
投稿投诉
精神世界
探索历史
哲学文学
艺术价值
信仰创造
境界审美
体验技术
技能工具
工程信息
医学生产
生活运用
操作能力

项目超市管理系统

1月5日 暗影泪投稿
  一。概述
  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一号回复jdbc即可获取,);
  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(){returnGood〔idid,namename,priceprice,numnum〕;}有参构造,方便初始化对象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(欢迎使用超市购物管理系统);是否继续的标志量,默认是StringisGdo{调用菜单那展示的函数showMenu();System。out。println(请输入要执行的操作);接受键盘的输入,这里使用String,一次性处理数字和字符输入,不建议使用int类型数字Stringselectinput。next();根据输入的选择执行对应的方法switch(select){执行商品入库方法case1:insertGood();执行商品查詢方法case2:System。out。println(输入要查询的商品编号);intgoodIdinput。nextInt();调用查询商品的方法,GoodgoodsearchGoodById(goodId);存在if(good!null){System。out。println(商品编号:goodId商品名称:good。getName()商品价格:good。getPrice()商品数量:good。getNum());}else{System。out。println(此商品不存在);}执行商品列表方法case3:getGoodList();执行商品购买方法case4:buyGood();执行商品购买方法case5:System。out。println(输入要刪除的商品编号);intidinput。nextInt();调用查询商品的方法,if(searchGoodById(id)!null){deleteGood(id);}else{System。out。println(沒有此商品);}case6:updateGood();退出系统case0:System。out。println(欢迎下次使用再见!);终止程序System。exit(0);default:System。err。println(输入有误请重新输入!);}System。out。println(输入y继续否则退出);isGoinput。next();}while(isGo。equals(y));System。out。println(欢迎下次使用再见!);}更新商品操作1。先查询当前要更新的商品存不存在2。如果存在更新即可,不存在提示privatevoidupdateGood(){System。out。println(输入要修改的商品id);intgidinput。nextInt();GoodgoodsearchGoodById(gid);System。out。println(商品信息如下);if(good!null){System。out。println(商品编号:gid商品名称:good。getName()商品价格:good。getPrice()商品数量:good。getNum());System。out。println(修改商品名称);Stringnameinput。next();System。out。println(修改商品单价);floatpriceinput。nextFloat();System。out。println(修改商品库存);intnuminput。nextInt();Stringsqlupdatetgoodsetname?,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(此商品不存在);}}用于展示系统界面菜单的方法privatevoidshowMenu(){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){Stringsqldeletefromtgoodwhereid?;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入侵Stringsqlinsertintotgood()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语句Stringsqlselectid,name,price,numfromtgoodwhereid?;try{创建一个操作数据库的对象ConnectionconDbUtil。getConnection();创建执行sql的对象PreparedStatementPreparedStatementpstcon。prepareStatement(sql);pst。setInt(1,id);ResultSetrspst。executeQuery();if(rs。next()){有结果,将查到的数据通过构造函数封装成一个商品对象GoodgoodnewGood(rs。getInt(id),rs。getString(name),rs。getFloat(price),rs。getInt(num));}关闭连接DbUtil。close(con,pst);}catch(SQLExceptione){e。printStackTrace();}}商品列表privatevoidgetGoodList(){执行的sql语句Stringsqlselectid,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(yy)方法参数是数据库列名System。out。println(rs。getInt(id)rs。getString(name)rs。getFloat(price)rs。getInt(num));}}关闭连接DbUtil。close(con,pst);}catch(SQLExceptione){e。printStackTrace();}}购买商品publicvoidbuyGood(){用来存储购买商品的集合ArrayLgoodsnewArrayL();是否继续购买标记Sdo{System。out。println(输入购买商品的编号);intidinput。nextInt();GoodgoodsearchGoodById(id);if(good!null){System。out。println(输入购买商品的数量);intnuminput。nextInt();if(good。getNum()num){stringsqlupdatetgoodsetnum?whereid?;connectionconDbUtil。getConnection();preparedstatementpstcon。prepareStatement(sql);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(y)){结算account(goods);}}else{System。out。println(没有此商品);}}while(flag。equals(y));}结算购物车privatevoidaccount(ArrayLgoods){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(总计消费:sum元);}}num){
  总结
  至此,项目已经完成了,当然项目本身还是存在不足,比如,在接受键盘输入的合法性判断。对于java操作数据库而言可以参考,不是在搬砖,就是搬砖的路上,希望你的程序永无bug
投诉 评论 转载

我收获了友谊友谊,是一种看不见,摸不着的东西,他是两个好朋友之间的友爱、关心、互相帮助。前几天,我收获了一份友谊,这份友谊让我感到无比温暖。前几天正是雨季,每天都下雨,造成了行人的不……孕妇难产了怎么办难产是泛指在分娩过程中出现某些情况,导致婴儿本身产生问题,或因母亲骨盘腔狭窄、zg或YD结构异常、zg收缩无力或异常所导致。实和联合诊所妇产科主治医师于西海也指出,难产依字面解……小米空气净化器如何重置重置后还是不能连接怎么办小米空气净化器2如何重置重置方法:按下空气净化器顶部和背部的两个按钮,注意要同时按下5秒钟左右,直到空气净化器发出滴滴滴的声音说明重置wifi完成。重置后还是不能连……有赚钱的好门路吗不上班也可以赚钱老司机分享五大方日常生活中除了上班时间,下班之后我们会选择干点什么来打发时间呢?很多人下班之后都会选择玩手机、玩电脑或者是打游戏,说实话这种休息方式除了打发时间之外没有任何实质的作用,与其这样……什么篮球鞋适合塑胶球场篮球比赛场地是一个长方形的坚实平面,篮球场地长28米,宽15米,无障碍物。篮球场地有土质、水泥、沥青和木质等。现在的篮球比赛场塑胶地面的使用较多。土质、水泥和沥青场地比较经济,……重新思考创业法则解密人性脱变过程文雾满拦江(01)来看个奇葩投稿:树洞投稿(拿我这里当树洞了),二线城市,工作稳定,有房有车,颜值中上,拍照不开美颜。男友经济条件相当,就是性格老实,不爱说话……数据分析一数据分析的意识对于产品经理来说,数据分析能力的核心不在方法理论和工具模型,更多的是要能够敏锐的发现应该去关注的数据、并且能够从这些数据中找出潜在的规律,推理出数据背后的导致原因。在如今……可能是造句用可能是造句大全六十一、技能化的习惯会使人机械,缺乏内心的认同与热情;人格化的习惯则可能是自然和谐的,因为已化为理论,内心会认同,也会有热情,简言之,技能化习惯培养的是机器,而人格化培养的是真……项目超市管理系统一。概述1。鹏哥前面有写过java项目超市管理系统项目,传送门2。收到很多朋友私信给我,也很感谢老铁们的反馈和交流,前面这个项目只是对java基础知识和面向对象的思……为何的新晋管理者举步维艰推荐语:大部分新晋升的经理,工作会变的非常吃力,甚至胜任不了。这是许多企业存在的普遍现象,也是困扰很多经理人自己的问题。如何破解上任第一年的举步维艰,更顺利的开展管理工作?作者……什么牌子的电子血压计好血压是人的最基本生命体征之一,血压的测量是身体监测的基本要求,选好、用好家用血压计才能更好监测我们的身体!那么,什么牌子的电子血压计好呢?本站来为您普及下吧!血压计从血压……杀死爱情的个生活小节别小看任何细节,那些生活中的小习惯,小不满都会导致你们的爱情瓦解。具体有哪些呢?让我们一起来看一下杀死爱情的方法之男人说:她的高潮总是很假做爱本来是一项快乐的……
医案脂溢性脱发油风理法方药通副镇长年度述职述廉报告精选多篇青岛市完成市级党政机关群团组织所办幼儿园脱钩改革我爱您祖国疾恶如仇造句用疾恶如仇造句大全商家是如何利用人性弱点让你掏腰包的解密职场爱炫耀者背后真相满纸荒唐言一把辛酸泪冬天剖腹产好恢复吗哪种呼啦圈瘦身效果好中国人口最少的县市三沙市常住人口余人杜嵩古源独针独穴针法书博鸡者事(节选)阅读练习及答案井水烧开有黑色油质应急救援中心我和我的支部微视频网络征集作品展(3)又崩了!0比3变2比3!恩比德拒绝手术,哈登继续拉胯清明节为什么要扫墓法律专业学什么法律专业内容库里造成的阴影面积有多大?湖人四巨头都被打服过鸟的天堂教案为什么手机号是十一位数(为什么手机号码偏偏是11位数)白掌叶子发黄:浇水不当也可引起发黄男人早上“第1泡尿”能反映出肾脏问题,若有。。。科普下枯枝落叶覆盖层的作用

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找