基于JAVA对象流写的图书进销存系统管理
来源:互联网 发布:sql 2008 sa 密码 编辑:程序博客网 时间:2024/05/18 00:04
基于JAVA对象流写的图书进销存系统管理
1、用户登录
用户只需一个,即admin管理员,用户密码为123456,用户登录信息保存在属性文件user. properties中,用户登录时输入用户名和密码,如果成功则打印系统菜单,不成功则重新登录,不成功的次数最多3次,超过3次,则系统退出。
(在内存中一行一行读取出来,对字符串进行修改,然后覆盖)
2、系统菜单:1、库存管理 2、销售管理 3、查询库中所有图书信息
4、查询销售信息、5,退出
3、选择不同的菜单,进入不同的管理功能。1、库存管理 : 使用bookStore.txt文件作为图书数据文件,
进入库存管理后只能进行图书入库操作和退出,既向文件中添加图书信息,如果图书名称在文件中已经存在,则再录入此书的时候,需要在原有的图书的库存基础上添加数据。如果没有此书,则作为新的数据录入。
如果录入信息为: Java基础,则下一步只需要录入进货数量即可。
如果录入信息为:HTML,此书没有,则需要进行详细录入,下一步录入作者名称、进价、售价、库存等信息。
4、销售管理:使用sell.txt文件作为图书销售信息保存,
卖出去之后 用新的集合对象(盈利)
提示:第一次运行可能会抛出异常,因为第一次写入的时候会读到文件末尾流!!!后面运行一切正常!
第一个文件Book.java
package com.langxikeji.Object;import java.io.Serializable;//创建一个Book类,并且实现Serializable接口public class Book implements Serializable{ private int bookId; private String bookName; private String auther; private double purprice; private double sellprice; private int stock; private int salecount; private double profit; public int getBookId() { return bookId; } public void setBookId(int bookId) { this.bookId = bookId; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public String getAuther() { return auther; } public void setAuther(String auther) { this.auther = auther; } public double getPurprice() { return purprice; } public void setPurprice(double purprice) { this.purprice = purprice; } public double getSellprice() { return sellprice; } public void setSellprice(double sellprice) { this.sellprice = sellprice; } public int getStock() { return stock; } public void setStock(int stock) { this.stock = stock; } public int getSalecount() { return salecount; } public void setSalecount(int salecount) { this.salecount = salecount; } public double getProfit() { return profit; } public void setProfit(double profit) { this.profit = profit; } //读取和写入sell.txt文件 public Book(int bookId, String bookName, String auther, double purprice, double sellprice, int salecount, double profit) { super(); this.bookId = bookId; this.bookName = bookName; this.auther = auther; this.purprice = purprice; this.sellprice = sellprice; this.salecount = salecount; this.profit = profit; } //读取和写入bookStore.txt文件 public Book(int bookId, String bookName, String auther, double purprice, double sellprice, int stock) { super(); this.bookId = bookId; this.bookName = bookName; this.auther = auther; this.purprice = purprice; this.sellprice = sellprice; this.stock = stock; } //空的构造方法,初始化变量 public Book() { // TODO Auto-generated constructor stub }}
第二个文件Booksadd.java
使用对象流和集合输入和输出增加库存信息
package com.langxikeji.Object;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.util.ArrayList;import java.util.List;public class BooksAdd { //保存bookStore.txt文件里面的对象 public List<Book>booklist=new ArrayList<Book>(); //无参的构造方法,Book对象初始化 public BooksAdd(){ readFile(); if(booklist.size()==0){ Book book=new Book(1,"JAVA基础","李刚",36.80,45.50,50); insert(book); book=new Book(2,"JAVAEE编程","李刚",25.50,36.78,100); insert(book); } } //往booklist中传入对象,并且写入bookStore.txt文件中 public void insert(Book book){ booklist.add(book); writeFile(); } public List<Book> totalBooks(){ return booklist; } //对象输出流 public void writeFile(){ String name="C:\\Users\\lenovo\\Desktop\\bookStore.txt"; try(FileOutputStream ops=new FileOutputStream(name); ObjectOutputStream oos=new ObjectOutputStream(ops);){ oos.writeObject(booklist); oos.flush(); System.out.println("数据保存成功!"); }catch(Exception e){ e.printStackTrace(); } } //对象输入流 public void readFile(){ String name="C:\\Users\\lenovo\\Desktop\\bookStore.txt"; try(FileInputStream ips=new FileInputStream(name); ObjectInputStream ois=new ObjectInputStream(ips)){ booklist=(List<Book>)ois.readObject(); }catch(Exception e){ e.printStackTrace(); } }}
第三个文件Bookssell.java
输入和输出销售信息
package com.langxikeji.Object;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;public class BooksSell { //保存sell.txt文件里面的对象 public List<Book>selllist=new ArrayList<Book>(); public BooksSell(){ readFilesell(); if(selllist.size()==0){ Book book=new Book(1,"JAVA基础","李刚",36.80,45.50,0,0.0); insertsell(book); } } //往insertsell中传入对象,并且写入sell.txt文件中 public void insertsell(Book book){ selllist.add(book); writeFilesell(); } public List<Book> sellBooks(){ return selllist; } public void readFilesell(){ String name="C:\\Users\\lenovo\\Desktop\\sell.txt"; File file=new File(name); try(InputStream ips=new FileInputStream(file); ObjectInputStream ois=new ObjectInputStream(ips)){ selllist=(List<Book>)ois.readObject(); }catch(Exception e){ e.printStackTrace(); } } //对象输出流 public void writeFilesell(){ String name="C:\\Users\\lenovo\\Desktop\\sell.txt"; File file=new File(name); try(OutputStream ops=new FileOutputStream(file); ObjectOutputStream oos=new ObjectOutputStream(ops);){ oos.writeObject(selllist); oos.flush(); System.out.println("数据保存成功!"); }catch(Exception e){ e.printStackTrace(); } }}
第四个文件,
登录程序,主程序
package com.langxikeji.Object;import java.io.File;import java.io.FileInputStream;import java.math.BigDecimal;import java.util.ArrayList;import java.util.List;import java.util.Properties;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Booksmanagement { //新建一个BooksIO对象 BooksAdd bio=new BooksAdd(); BooksSell bis=new BooksSell(); public void welcome(){ System.out.println("***********************"); System.out.println("*******|-------|*******"); System.out.println("*******|welcome|*******"); System.out.println("*******|-------|*******"); System.out.println("***********************"); System.out.println("提示:用户名格式为5-10位字母,密码格式为6位数字!"); } public void Login(){ if(Logininfo()){ System.out.println("*****欢迎登陆图书进销存管理系统*****"); adminLogin(); }else{ System.out.println("登录失败,系统退出"); System.exit(0); } } public void adminLogin(){ Scanner sc=new Scanner(System.in); System.out.println("请输入数字选择你需要的功能:"); System.out.println("1,库存管理。2,销售管理。3,查询书库中的所有书籍。4,查询销售记录5,系统退出"); switch(sc.nextInt()){ case 1: Inmanagement(); break; case 2: Outmanagement(); break; case 3: polling(); break; case 4: sellpolling(); break; case 5: System.out.println("系统退出!"); System.exit(0); break; default: System.out.println("输入错误,请从新输入!"); break; } } //查询书库中所有的书籍信息 public void polling(){ System.out.println("序号\t\t书名\t\t作者\t\t进价\t\t售价\t\t库存\t\t"); List<Book> booklist=bio.totalBooks() ; for(Book book:booklist){ System.out.print(book.getBookId()+"\t\t"); System.out.print(book.getBookName()+"\t\t"); System.out.print(book.getAuther()+"\t\t"); System.out.print(book.getPurprice()+"\t\t"); System.out.print(book.getSellprice()+"\t\t"); System.out.print(book.getStock()+"\n"); } adminLogin(); } //输出销售信息 public void sellpolling(){ System.out.println("序号\t\t书名\t\t作者\t\t进价\t\t售价\t\t销售数量\t\t盈利\t\t"); List<Book>selllist=bis.sellBooks(); for(Book book:selllist){ System.out.print(book.getBookId()+"\t\t"); System.out.print(book.getBookName()+"\t\t"); System.out.print(book.getAuther()+"\t\t"); System.out.print(book.getPurprice()+"\t\t"); System.out.print(book.getSellprice()+"\t\t"); System.out.print(book.getSalecount()+"\t\t"); System.out.print(book.getProfit()+"\n"); } adminLogin(); } //库存管理模块 public void Inmanagement(){ Scanner sc=new Scanner(System.in); System.out.println("请按照提示输入选择以下功能:"); System.out.println("1,图书入库。2,退出"); switch(sc.nextInt()){ case 1: jionBook(); break; case 2: adminLogin(); break; default: System.out.println("输入错误,请从新输入!"); break; } } public void jionBook(){ Scanner sc=new Scanner(System.in); System.out.println("请输入要入库书籍的名字:"); String bookname=sc.nextLine(); //创建一个对象 List<Book>booklist=bio.totalBooks(); Book book = new Book(); //遍历booklist数组 for(int i=0;i<booklist.size();i++){ book=booklist.get(i); //判断书库中是否存在该书 if(book.getBookName().equals(bookname)){ System.out.println("库中已经存在该书!"); System.out.println("请输入入库库存数量:"); int store=sc.nextInt(); store+=book.getStock(); book.setStock(store); bio.writeFile(); adminLogin(); }else{ System.out.println("书库中该书不存在!"); System.out.println("请输入增加图书信息:"); System.out.println("请输入书籍序号:"); int m=sc.nextInt(); System.out.println("请输入书名:"); String a=sc.next(); System.out.println("请输入作者:"); String b=sc.next(); System.out.println("请输入书籍进价:"); double c=sc.nextDouble(); System.out.println("请输入书籍售价:"); double d=sc.nextDouble(); System.out.println("请输入库存"); int e=sc.nextInt(); Book book1=new Book(m,a,b,c,d,e); bio.insert(book1); adminLogin(); } } } //销售管理 public void Outmanagement(){ Scanner sc=new Scanner(System.in); System.out.println("请按照提示输入选择以下功能:"); System.out.println("1,图书销售。2,退出"); switch(sc.nextInt()){ case 1: outBook(); break; case 2: adminLogin(); break; default: System.out.println("输入错误,请从新输入!"); break; } } //购买书籍改变bookStore中的库存 public void outBook(){ Scanner sc=new Scanner(System.in); System.out.println("请输入要购买书籍的名字:"); String bookname=sc.nextLine(); //创建一个对象 Book book = new Book(); List<Book>booklist=bio.totalBooks(); //遍历booklist数组 for(int i=0;i<booklist.size();i++){ book=booklist.get(i); //判断书库中是否存在该书 if(book.getBookName().equals(bookname)){ System.out.println("书库中存在该书!"); System.out.println("请输入要购买的数量:"); int num=sc.nextInt(); if(num>book.getStock()){ System.out.println("购买数量超过库存!"); }else{ System.out.println("购买成功!"); //剩余库存 int sum=book.getStock()-num; //改变原有库存 book.setStock(sum); //写入bookStore.txt文件中 bio.writeFile(); //传入到下一个方法中 Outsell(bookname,num); } adminLogin(); }else{ System.out.println("书库中不存在该书,返回主菜单!"); adminLogin(); } } } //链接OutBook方法 改变sell.txt文件里面的值 public void Outsell(String bookname,int numbook){ Scanner sc=new Scanner(System.in); Book book=new Book(); List<Book>selllist=bis.sellBooks(); BigDecimal num=new BigDecimal(numbook); for(int j=0;j<selllist.size();j++){ book=selllist.get(j); if(book.getBookName().equals(bookname)){ //改变售卖数量 int salecount=book.getSalecount()+numbook; book.setSalecount(salecount); //改变售卖利润,处理精度丢失问题 //进价转型 BigDecimal purprice=new BigDecimal(book.getPurprice()); //售价转型 BigDecimal sellprice=new BigDecimal(book.getSellprice()); //原有的利润转型 double oldprofit=book.getProfit(); BigDecimal oprofit=new BigDecimal(oldprofit); //进行计算 double bigprofit=(((sellprice.subtract(purprice)).multiply(num)).add(oprofit)).doubleValue(); book.setProfit(bigprofit); bis.writeFilesell(); }else{ BigDecimal purprice=new BigDecimal(book.getPurprice()); //售价转型 BigDecimal sellprice=new BigDecimal(book.getSellprice()); //进行计算 double bigprofit=((sellprice.subtract(purprice)).multiply(num)).doubleValue(); Book book3=new Book(book.getBookId(),book.getBookName(),book.getAuther(),book.getPurprice(),book.getSellprice(),numbook,bigprofit); bis.insertsell(book3); } } } //系统登录模块 public static boolean Logininfo(){ try{ String adress="D:\\JAVA\\Workspaces\\sina\\src\\user.properties"; File file=new File(adress); Properties p=new Properties(); //使用输入流拿到p的key-value对 p.load(new FileInputStream(file)); //控制三次循环 for(int i=3;i>0;i--){ //控制台输入用户名和密码 Scanner sc=new Scanner(System.in); System.out.println("请输入登录用户名:"); String name=sc.nextLine(); System.out.println("请输入登录密码:"); String password=sc.nextLine(); //判断输入格式是否正确和密码是否正确 if(judge(name,password)&&p.containsKey(name)&&p.containsValue(password)){ System.out.println("登录用户名和密码正确,欢迎您!"); return true; }else if(i>1){ System.out.println("警告:用户名或密码错误,今日剩余输入次数为"+(i-1)+"次!"); System.out.println("---------------------------"); } } }catch(Exception e){ e.printStackTrace(); } return false; } //判断输入用户名和密码格式是否正确 public static boolean judge(String name,String password){ Pattern pattern1 =Pattern.compile("^[A-Za-z]{5,10}$"); Matcher m1=pattern1.matcher(name); Pattern pattern2=Pattern.compile("^[0-9]{6}$"); Matcher m2=pattern2.matcher(password); if(!m1.matches()||!m2.matches()){ System.out.println("---------------------------"); System.out.println("提示:用户名和密码输入格式不正确!"); System.out.println("提示:用户名格式为5-10位字母,密码格式为6位数字!"); System.out.println("-----------------------------"); return false; }else{ return true; } } public static void main(String[] args) throws Exception{ Booksmanagement bs=new Booksmanagement(); bs.welcome(); bs.Login(); }}
0 0
- 基于JAVA对象流写的图书进销存系统管理
- java图书系统管理
- 基于JavaSwing+MySQL写的图书进销存管理系统
- 准备写一个基于go、angularjs的系统管理平台
- 第一周 基于对象的程序设计——图书管理
- 图书管理系统基于JAVA
- 基于JAVA的图书管理系统(jsp+mysql+tomcat)
- 基于struts的图书系统
- Webmin基于Web的Unix系统管理工具
- 我的java图书
- 利用java的异常处理自己写个一个图书借阅系统的小案例
- struts+oracle写的图书管理。
- 基于PB的图书管理的数据库
- 基于Lucene的图书全文搜索引擎
- 基于数据结构的个人图书管理系统
- 基于Lucene的图书全文搜索引擎
- 基于Mahout的图书推荐系统
- 基于MVC的图书管理系统
- tensorflow:fully_connected_feed.py代码详细中文注释
- 模板方法模式【Template Method Pattern】
- 应届生/初级数据库开发笔面试汇总
- 关于main函数的第二个参数
- selenium+testng+gitblit+jenkins+ant自动化测试系列九:ant的build.xml文件详解及运用
- 基于JAVA对象流写的图书进销存系统管理
- java 求最大数
- Effective C++ 读书笔记五
- Linux命令基础14-su和sudo命令
- Python学习之面向对象编程
- intellij idea的使用
- 【Shell】-- 入门笔记(2):流程控制,重定向及文件包含
- volatile
- 常见对象-把数组拼接成指定格式的字符串案例