自己的第一个小程序

ps:书是在集合里面后面文件处理的有一点小问题,希望有人会给点意见

//客户类

import java.io.Serializable;

public class Customer implements Serializable{
//客户的属性
private String name ;//客户姓名
private String passWord;//客户密码
//客户属性的get,set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
//带参构造方法
public Customer(String name, String passWord) {
super();
this.name = name;
this.passWord = passWord;
}
public Customer() {
super();
}
}

//客户登陆类

public class Signin {
ArrayList<Customer> arrayList=new ArrayList<Customer>();//存储客户信息的集合
Customer customer=new Customer();//构造客户对象
//将集合加入客户信息
public void setInformation(){
arrayList.add(new Customer("张3","123"));
arrayList.add(new Customer("李4","1234"));
arrayList.add(new Customer("王5","12345"));
arrayList.add(new Customer("赵6","123456"));
}
//遍历客户集合
public int bianLi(String name,String passWord ){
for(int j=0;j<arrayList.size();j++){//以密码,名字找到客户
customer=arrayList.get(j);
//customer=it.next();
//如果与传入信息相同就返回1
if(customer.getName().equals(name)&&customer.getPassWord().equals(passWord)){
break;
}else if(j!=arrayList.size()-1){//控制for循环循环到集合中的每一个
continue;
}else{
return 0;//没有找到返回0
}
}
return 1;//找到返回1
}
//将客户集合写入文件
public void writeInformation(){
ObjectOutputStream oos=null;
try {
oos=new ObjectOutputStream( new FileOutputStream("d:\\pro2.docx"));//在文件后面追加不把信息覆盖
oos.writeObject(arrayList);
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
oos.flush();
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
//将文件的信息读出
@SuppressWarnings("unchecked")
public void readInformation(){
ObjectInputStream ois=null;
try {
ois=new ObjectInputStream(new FileInputStream("d:\\pro2.docx"));
arrayList=(ArrayList<Customer>) ois.readObject();//读入对象
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally{
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

//书的类

public class BookTwo {
//书的属性
private String bname;//图书名字
private String btype;//图书种类
private double bprice;//图书价格
private String bnum;//图书编号
private int bleft;//图书库存
//书的属性的get,set方法
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname;
}
public String getBtype() {
return btype;
}
public void setBtype(String btype) {
this.btype = btype;
}
public double getBprice() {
return bprice;
}
public void setBprice(double bprice) {
this.bprice = bprice;
}
public String getBnum() {
return bnum;
}
public void setBnum(String bnum) {
this.bnum = bnum;
}
public int getBleft() {
return bleft;
}
public void setBleft(int bleft) {
this.bleft = bleft;
}
//带参的构造函数
public BookTwo( String bnum,String bname, String btype, double bprice,
int bleft) {
super();
this.bname = bname;
this.btype = btype;
this.bprice = bprice;
this.bnum = bnum;
//this.bcount = bcount;
this.bleft = bleft;
}
//不带参的构造函数
public BookTwo() {
super();
}
}

//书的方法类

public class BookTwoMenthod {
int count;
BookTwo book=new BookTwo();
//客户成功登陆后的界面
public void show(){
System.out.println("*********欢迎使用书店系统**********");
System.out.println("1.查看");
System.out.println("2.还书");
System.out.println("3.退出");
System.out.print("请输入要选择的编号:");
}
//将传入的list加入图书内容
public void show1(ArrayList<BookTwo> list) {
list.add(new BookTwo("1001","《淘气包马小跳》","搞笑",23,100));
list.add(new BookTwo("1002","《水煮大神》","搞笑",23,100));
list.add(new BookTwo("1003","《爆笑小白》","搞笑",23,100));
list.add(new BookTwo("1004","《然后爱情随遇而安》","温馨",23,100));
list.add(new BookTwo("1005","《心有不甘》","虐心",23,100));
list.add(new BookTwo("1006","《神仙肉》","搞笑+虐心",23,100));
}
//遍历传入list并输出所有信息
public void show2(ArrayList<BookTwo> list){
Iterator<BookTwo> ti=list.iterator();//迭代器迭代输出
System.out.println("编号\t名称\t\t种类\t价格\t库存");
while(ti.hasNext()){
BookTwo e=(BookTwo) ti.next();
System.out.println(e.getBnum()+"\t"
+e.getBname()+"\t"+e.getBtype()+"\t\t"
+e.getBprice()+"\t"+e.getBleft());
}
}
//购买的方法
public void buyBook(ArrayList<BookTwo> list,String bnum,int bcount){
for(int i=0;i<list.size();i++){
book=list.get(i);
if(bcount>=book.getBleft()){//比较库存与所买书数量
System.out.println("书库没有足够库存!");
break;
}else if(book.getBnum().equals(bnum)){//通过bnum来找到该书
System.out.println("您要购买的书是:"+book.getBname());
System.out.println("您需要支付金额是:"+bcount*book.getBprice());
//传递修改数据,通过set方法修改集合中的信息
book=new BookTwo(bnum, book.getBname(), book.getBtype(), book.getBprice(), book.getBleft()-bcount);
list.set(i, book);
break;
}else if(i==list.size()-1){//控制for循环循环到集合中的每一个
System.out.println("没有您要购买的书");
}else{
continue;
}
}
}
//租书的方法
public void rentBook(ArrayList<BookTwo> list,String bnum,int bcount,int date){
for(int i=0;i<list.size();i++){
book=list.get(i);
if(bcount>=book.getBleft()){//比较库存与所买书数量
System.out.println("书库没有足够库存!");
break;
}else if(book.getBnum().equals(bnum)){
switch (date){
case 1://租书一周所需价钱
System.out.println("您要租的书是:"+book.getBname());
System.out.println("您要支付的价格是:"+7*bcount*5);
break;
case 2://租书一月所需价钱
System.out.println("您要的书是:"+book.getBname());
System.out.println("您要支付的价格是:"+15*bcount*2);
break;
case 3://租书半年所需价钱
System.out.println("您要购买的书是:"+book.getBname());
System.out.println("您要支付的价格是:"+183*bcount*1);
break;
default:
System.out.println("请输入数字(1-3)!");
break;
}
}else if(i!=list.size()-1){//控制for循环循环到集合中的每一个
continue;
}else{
System.out.println("没有该本书!");
break;
}
break;
}
//数据更新
for(int i=0;i<list.size();i++){
book=list.get(i);
if(book.getBnum().equals(bnum)){
book=new BookTwo(bnum, book.getBname(), book.getBtype(), book.getBprice(), book.getBleft()-bcount);
list.set(i, book);
}else{
continue;
}
}
}
//还书的方法
public int returnBook(ArrayList<BookTwo> list,String bnum,int bcount){
for(int i=0;i<list.size();i++){
book=list.get(i);
if(book.getBnum().equals(bnum)){
if(book.getBleft()<100){
//更新数据
book=new BookTwo(bnum, book.getBname(), book.getBtype(), book.getBprice(), book.getBleft()+bcount);
list.set(i, book);
System.out.println("还书成功!");
return 1;//有该书时返回1
}else{
System.out.println("您没有借这个书请确定书编号后,在还书");
return 1;
}
}else if(i!=list.size()-1){//控制for循环循环到集合中的每一个
continue;
}else{
System.out.println("没有该书,请确定书的编号,重新登陆");
break;
}
}
return 0;//没有该书时返回0
}

}

//测试类

public class BookTwoTest {
public static void main(String[] args) {
Signin signin=new Signin();//登陆的对象
Customer customer=new Customer();
ArrayList<BookTwo> list=new ArrayList<BookTwo>();//图书集合
//ArrayList<Customer> arrayList2=new ArrayList<Customer>();//新加入的客户信息集合
BookTwoMenthod fiction=new BookTwoMenthod();//图书方法对象
Scanner input=new Scanner(System.in);
signin.setInformation();//调用Signin类里面的客户信息写入集合
signin.writeInformation();//调用Signin类里面的写入文件的方法
fiction.show1(list);//调用BookTwoMenthod类的将图书信息写入集合
do{
//客户登陆界面
System.out.println("**********欢迎使用登陆界面***********");
System.out.println("请输入您的姓名:");
String name =input.next();
System.out.println("请输入您的密码:");
String passWord=input.next();
if(signin.bianLi(name, passWord)==1){//调用Signin遍历方法若返回为1则登陆成功
System.out.println("登陆成功!");
for(int j=0;;j++){
fiction.show();//显示客户成功登陆后的界面
String i=input.next();//客户选择的功能
switch(i){
case "1"://显示图书
fiction.show2(list);
System.out.println("您要买书(1)还是租书(2)还是退出(3)?");
String k=input.next();
if(k.equals("1")){//购买图书
System.out.println("请输入您要购买的书的编号,数量:");
String bnum=input.next();
int bcount =input.nextInt();
fiction.buyBook(list,bnum, bcount);
continue;//跳到选择主界面
}else if(k.equals("2")){//租图书
System.out.println("请输入您要购租的书的编号,数量,日期:");
String bnum=input.next();
int bcount =input.nextInt();
System.out.println("您要租的时长:1.一个周;2.一个月;3.半年");
try{
int date=input.nextInt();
fiction.rentBook(list,bnum, bcount, date);
}catch(InputMismatchException e){
System.out.println("请输入数字");
}
continue;//跳到选择主界面
}else if(k.equals("3")){//退出到登陆界面
break;//跳到登陆界面
}else{
System.out.println("请输入规定数字!");
continue;//跳到选择主界面
}
case "2"://还书
do{
System.out.println("请输入要还书的编号,数量");
String bnum=input.next();
int bcount=input.nextInt();
if(fiction.returnBook(list,bnum, bcount)==0){//调用还书方法
continue;//跳到选择还书界面
}else{
break;//跳到选择大界面
}
}while(true);
continue;
case "3"://退回登陆界面
break;
default://输入有错误
System.out.println("请输入数字(1-3)!");
continue;//退回登陆界面
}
break;
}
}else{
//调用Signin遍历方法若返回不为1则需要注册
System.out.println("密码或用户名错误!");
System.out.println("您是否要注册?y or n");
String s=input.next();
if(s.equals("y")){
//需要注册时
System.out.println("请输入您的姓名:");
String name1 =input.next();//得到姓名
System.out.println("请输入您的密码:");
String passWord1=input.next();//得到密码
//遍历客户集合判断姓名,密码是否存在文件中
for(int j=0;j<signin.arrayList.size();j++){
customer=signin.arrayList.get(j);
//已存在
if(customer.getName().equals(name)&&customer.getPassWord().equals(passWord)){
System.out.println("用户已存在!");
break;//跳到登陆界面
//不存在
}else{
signin.arrayList.add(new Customer(name1, passWord1));//在客户集合中加入新成员
signin.writeInformation();//调用写的方法将新成员写入
System.out.println("注册成功!");
signin.readInformation();//调用读的方法读入内存
signin.bianLi(name1, passWord1);//可有可无
break;//跳到登陆界面
}
}
continue;//退回登陆界面
}else{
System.out.println("用户名或密码错误!否则不注册您不能访问该系");
continue;//退回登陆界面
}
}
}while(true);//循环到登陆界面
}
}

一个书店管理系统java的更多相关文章

  1. Java设计系列之书店管理系统单机版

    书店管理系统: 项目练习目标 :1.Java应用程序基本分析2.培养面向对象编程的基本思想3.Java基本设计模式综合应用4.掌握分层和接口的基本设计5.构建合理的Java应用程序包结构6.综合应用J ...

  2. 使用Java MVC模式设计一个学生管理系统

    最近在做web实验,要求是用jsp+servlet+mysql实现一个学生管理系统,完成对数据库的增删改查. 效果图:   代码: package dao; import java.util.List ...

  3. Java-单机版的书店管理系统(练习设计模块和思想_系列汇总)

    介绍: 本软件系列到此,我已经全部写完了. 项目练习目标 : 1.Java应用程序基本分析 2.培养面向对象编程的基本思想 3.Java基本设计模式综合应用 4.掌握分层和接口的基本设计 5.构建合理 ...

  4. Linux环境下部署完JDK后运行一个简单的Java程序

    前言 前一篇文章详细讲解了如何在Windows环境下安装虚拟机+Linux系统,并且成功部署了JDK. 不过部署完JDK之后,我们判断部署是否成功的依据是看"java -version&qu ...

  5. 一个简单的Java web服务器实现

    前言 一个简单的Java web服务器实现,比较简单,基于java.net.Socket和java.net.ServerSocket实现: 程序执行步骤 创建一个ServerSocket对象: 调用S ...

  6. 【Jetlang】一个高性能的Java线程库

    actor  Jetlang 提供了一个高性能的Java线程库,该库是 JDK 1.5 中的 java.util.concurrent 包的补充,可用于基于并发消息机制的应用. .net的MS CCR ...

  7. 《图书管理系统——java》

    /* (程序头部凝视開始) * 程序的版权和版本号声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名:    < ...

  8. 搭建一个完整的Java开发环境

    搭建一个完整的Java开发环境 作为一个Java程序员,配置一个java开发环境是必备的技能,今天给广大菜鸟初学者补上一课.环境的配置,大概就分三个1,JDK 2,Tomcat(或者其他的)3,ecl ...

  9. Java学习笔记 11/15:一个简单的JAVA例子

    首先来看一个简单的 Java 程序. 来看下面这个程序,试试看是否看得出它是在做哪些事情! 范例:TestJava.java   // TestJava.java,java 的简单范例  public ...

随机推荐

  1. Parquet与ORC:高性能列式存储格式(收藏)

    背景 随着大数据时代的到来,越来越多的数据流向了Hadoop生态圈,同时对于能够快速的从TB甚至PB级别的数据中获取有价值的数据对于一个产品和公司来说更加重要,在Hadoop生态圈的快速发展过程中,涌 ...

  2. ASP.NET Misconfiguration: Debug Information

    Abstract: Debugging messages help attackers learn about the system and plan a form of attack. Explan ...

  3. ORACLE 实例及RAC

    ORACLE 实例及RAC 一.问题 (1)现象 部署一个sh脚本到生产oracle服务器上,该sh脚本负责读取外系统提供的txt文件,然后用sql loader入库,由oracle服务器的cront ...

  4. Sublime文本排序&查找重复行&删除重复行

    排序 按F9或者选择菜单:Edit > Sort Lines,对每行文本进行排序 查找重复行 排序好后,按Ctrl+F,调出查找面板 查找字符串: ^(.+)$[\r\n](^\1$[\r\n] ...

  5. 打造一个有感觉的vim(四)

    今天要介绍的VIM插件的名字叫做surround,这个插件的主要作用是将一个VIM的tex-objects(文本对象)添加或者取消包裹(单引号,双引号,XML标签等等)下载地址如下:https://g ...

  6. windows 下 gvim打开默认全屏显示

    在_vimrc文件中加入如下配置即可: autocmd GUIEnter * simalt ~x

  7. jenkins入门

    look at http://www.cnblogs.com/itech/archive/2011/11/23/2260009.html

  8. 理解View与Model分离

    说实话MV*架构中,Model与View分离已经听人谈了好久,但是以前始终没太弄懂什么意思,最近终于稍微懂了一些,虽然不一定很对,暂且先记录下来. 谈Model与View分离,首先要弄懂页面在前端渲染 ...

  9. cordova常用资料源

    cordova的中文资料https://github.com/CordovaCn/CordovaCn 官方文档: http://cordova.apache.org/docs/en/latest/ E ...

  10. C语言中的回调函数(Callback Function)

    1 定义和使用场合 回调函数是指 使用者自己定义一个函数,实现这个函数的程序内容,然后把这个函数(入口地址)作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数.函数是你实现 ...