java实验报告:实验一 基于控制台的购书系统
2023-09-27 14:28:32 时间
注:博主为初学java,此实验报告代码仅供参考,如有错误,还望指正。
水平有限,仅供参考
实验目的及要求
1.理解和掌握面向对象的设计程序
2.会用类图进行面向对象设计
3.掌握封装的实现及好处
4.包和访问控制修饰符的使用
实验内容
1.输出所有图书的信息:包括每本书的编号,书名,单价,库存
2.顾客购买书:根据提示输入图书编号来购买书,并根据提示输入购买书的数量
3.购买完毕后输出顾客的订单信息:包括订单号,订单明细,订单总额
BuyBooksSystem.java
package com.taor;
import java.util.ArrayList; // 引入 ArrayList 类
import java.util.Scanner;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.InputMismatchException;
// ...
class Book {
// 图书编号
private String number;
// 图书名称
private String name;
// 图书单价
private int price;
// 库存数量
private int stockNumber;
public Book() {
super();
}
public Book(String number, String name, int price, int stockNumber) {
super();
this.number = number;
this.name = name;
this.price = price;
this.stockNumber = stockNumber;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getStockNumber() {
return stockNumber;
}
public void setStockNumber(int stockNumber) {
this.stockNumber = stockNumber;
}
@Override
public String toString() {
return "编号:" + number + " 书名:" + name + " 价格:" + price + " 库存量:" + stockNumber;
}
}
//Order.java
class Order {
// 订单号
private long OrderNumber;
// 订单细节:书本编号、书本名字、单价
private String OrderInfo;
// 订单总额
private int OrderSum;
// 订单日期
private String OrderData;
public Order() {
super();
}
public Order(long orderNumber, String orderInfo, int orderSum, String orderData) {
super();
OrderNumber = orderNumber;
OrderInfo = orderInfo;
OrderSum = orderSum;
OrderData = orderData;
}
public long getOrderNumber() {
return OrderNumber;
}
public void setOrderNumber(long orderNumber) {
OrderNumber = orderNumber;
}
public String getOrderInfo() {
return OrderInfo;
}
public void setOrderInfo(String orderInfo) {
OrderInfo = orderInfo;
}
public int getOrderSum() {
return OrderSum;
}
public void setOrderSum(int orderSum) {
OrderSum = orderSum;
}
public String getOrderData() {
return OrderData;
}
public void setOrderData(String orderData) {
OrderData = orderData;
}
@Override
public String toString() {
return "个人订单" + " " + "订单编号:" + OrderNumber + " " + OrderInfo + " " + "图书总价:" + OrderSum
+ " " + "创建时间:" + OrderData;
}
}
public class BuyBooksSystem {
ArrayList<Book> list = new ArrayList<Book>();
//存放书本信息
Book[] arrBook = new Book[20]; // 书籍不超过20,在InputBookInfo()函数中添加书籍
//存放订单信息
Order[] arrOrder = new Order[20]; // 订单不能超过20,createOrder()自动生成订单
//订单量
int cnt = 0;
// ................................................................ 主程序..........................................//
public static void main(String[] args) {
BuyBooksSystem pbs = new BuyBooksSystem();
//存入图书信息
pbs.InputBookInfo();
//购书系统主页面
pbs.mainPage();
}
/**
* 购书系统主页面
*/
public void mainPage(){
Scanner sc = new Scanner(System.in);
for(int i = 0; i < 100; i++){
System.out.println("*****************************");
System.out.println("\t通理工购书系统");
System.out.println("\t1.图书信息");
System.out.println("\t2.购买图书");
System.out.println("\t3.订单信息");
System.out.println("\t4.退出系统");
System.out.print("\t请选择你需要的业务:");
try{
int number = sc.nextInt();
switch (number) {
case 1:
//输出图书信息
bookInfo();
break;
case 2:
//购买图书
bookBought();
break;
case 3:
lookOrder();
break;
case 4:
System.out.println("\n\n\n\n退出成功!");
return;
default:
System.out.println("\n\n\n\n\n\n\n\n请输入正确的数字!");
break;
}
}catch(InputMismatchException e){
System.out.println("\n\n\n\n\n\n\n\n输入有误,请重新输入!");
sc = new Scanner(System.in);
}
}
}
/**
* 存入图书信息
*/
public void InputBookInfo(){
Book book1 = new Book("0001","红楼梦",298,999);
Book book2 = new Book("0002","西游记",49,999);
Book book3 = new Book("0003","三国演义",98,999);
Book book4 = new Book("0004","水浒传",128,999);
Book book5 = new Book("0005","鲁滨逊漂流记",68,999);
arrBook[0] = book1;
arrBook[1] = book2;
arrBook[2] = book3;
arrBook[3] = book4;
arrBook[4] = book5;
list.add(arrBook[0]);
list.add(arrBook[1]);
list.add(arrBook[2]);
list.add(arrBook[3]);
list.add(arrBook[4]);
}
/**
* 输出图书信息
*/
public void bookInfo(){
System.out.println("\n\n\n\n\n\n\n\n");
for(int i = 0; i < list.size(); i++){
if(list.get(i) != null){
System.out.println(list.get(i));
}
}
}
/**
* 购买图书
*/
public void bookBought(){
int flag = 0; // 没买到书
Scanner sc = new Scanner(System.in);
while(flag == 0) {
System.out.print("请输入您需要购买的图书编号:(输入 q 退出购买界面) ");
String number = sc.next();
if(number.equals("q")) // 按q退出购买
{
System.out.println("\n\n\n\n\n\n\n\n");
break;
}
if(number.length() == 4){ // 判断输入是否为正确的书号
for (int n = 0; n < list.size(); n++){
if(number.equals(arrBook[n].getNumber()))
{
flag = 1; // 找到
break;
}
}
}
if(number.length() != 4 || flag == 0) {
System.out.println("输入错误,请输入正确的图书编号");
sc = new Scanner(System.in);
continue;
}
for(int j = 0; j < list.size(); j++){
if(number.equals(arrBook[j].getNumber())){
System.out.println(arrBook[j]);
System.out.print("请输入您需要购买的数量:");
int boughtNumber = sc.nextInt();
//当库存数量大于需要购买数量的时候可以购买
if(arrBook[j].getStockNumber() > boughtNumber && arrBook[j].getStockNumber() > 0){
//修改库存
arrBook[j].setStockNumber(arrBook[j].getStockNumber() - boughtNumber);
//生成订单
createOrder(cnt++,arrBook[j],boughtNumber);
break;
}else{
System.out.println("超过可购买数量!请重新购买!");
break;
}
}
}
}
}
/**
* 生成订单
*/
public void createOrder(int i,Book arr,int boughtNumber){
long orderNumber = i + 10001;
int OrderSum = arr.getPrice() * boughtNumber;
SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String OrderData = date.format(new Date());
String OrderInfo = "图书编号:" + arr.getNumber() + " "+ "图书名:" + arr.getName() + " " + "图书价格:" + arr.getPrice();
Order order = new Order(orderNumber,OrderInfo,OrderSum,OrderData);
arrOrder[i] = order;
System.out.println("订单已提交!");
System.out.println("订单号:" + orderNumber + " " + OrderInfo + " " + "订单金额:" + OrderSum + " " + "订单生成时间:" + OrderData);
}
/**
* 查看订单
*/
public void lookOrder(){
for(int i = 0; i < cnt; i++){
if(arrOrder[i] != null){
System.out.println(arrOrder[i]);
}
}
}
};
相关文章
- 【Java】理解封装、继承、多态和对象数组的综合实例(简易的租车系统,附代码)
- 关于Java的10个谎言
- Java核心技术卷I基础知识3.5.3 强制类型转换
- 系统学习JAVA第六天
- 基于Java+MySQL实现新闻发布系统【100010499】
- 基于Java+MySQL 实现(Web)企业信息展示系统【100010224】
- 基于Java(SSM)+MySQL实现(Web)具有智能推荐功能的图书销售系统【100010208】
- 基于Java(Springboot+Gradle+Mybatis+templeaf 框架)+Mysql构建的(Web)校园二手平台系统【100010102】
- 基于Java( Spring+SpringMVC+JDBC)+MySQL实现(Web)家电售后服务系统【100010064】
- Java DESede 加解密("DESede/ECB/PKCS5Padding")
- Ubuntu系统中CUDA套件nvvp启动后报错Unable to make protected void java.net.URLClassLoader.addURL(java.net.URL) accessible: module java.base does not "opens java.net" to unnamed module @380fb434
- 一款基于java的超级棒的开源支付系统(用来毕设也不错),国内首款开源的互联网支付系统
- Linux系统小技巧(4):环境变量JAVA_TOOL_OPTIONS简介
- java中获取系统属性以及环境变量
- Java开发 - Quartz初体验
- 最新版MacOS系统轻松配置基础依赖库、环境变量、Java、Python、NodeJS等开发环境