学习java已经两个月了,编写一个管理系统花了我两周的时间,一直在测试修改,写了3个版本的。但是我写的这个代码目前只实现了一些简单的操作,代码的执行效率也不是很高,希望大家能多多指正!
一、项目设计分析
该管理系统主要用于管理员对商品数据信息的录入、删除、修改、查询,以及用户对信息的查询。
二、程序功能简介
1.登录
用户可以用用户账号登录系统,管理员可以用管理员账号登录 系统。
首先我定义了两个接口,初始化了管理员和用户的账号及密码
interface AD{
final String azh="fan";
static String amm="333";
abstract void denglu();
}
interface UE {
String zh1="u1";
static String mm1="111";
String zh2="u2";
static String mm2="222";
abstract void denglu();
}
再定义一个类继承这两个接口,设计登录界面
public class login implements AD,UE {
static String zzz;
public void denglu(){
System.out.println("------欢迎来到商品管理系统------");
Scanner reader=new Scanner(System.in);
System.out.print("请输入你的账号:");
String zh=reader.nextLine();
System.out.print("请输入你的密码:");
String mm=reader.nextLine();
创建一个主方法,保证程序的运行,在主方法里创建login对象,调用login方法并进行跳转。在login类里对输入的账号密码进行判断,选择管理员或者用户登录,返回到主方法。
import java.util.Scanner;
public class login implements AD,UE {
static String zzz;
public void denglu(){
System.out.println("------欢迎来到商品管理系统------");
Scanner reader=new Scanner(System.in);
System.out.print("请输入你的账号:");
String zh=reader.nextLine();
System.out.print("请输入你的密码:");
String mm=reader.nextLine();
if(zh.equals(azh)&&mm.equals(amm)) {
System.out.println("欢迎您,尊贵的管理员!");
zzz="fan";
Admin.menu();
}
else if(zh.equals(zh1)&&mm.equals(mm1)) {
System.out.println("登陆成功!");
zzz="u1";
User.menu();
}
else if(zh.equals(zh2)&&mm.equals(mm2)) {
System.out.println("登陆成功!");
zzz="u2";
User.menu();
}
else {
System.out.println("您输入的密码有误或账号不存在,请重新登录!");
denglu();
}
}
接下来在主方法里就可以根据选择来跳转到管理员界面或者用户界面了。
if(zzz.equals("fan"))
admenu.adme();
else if((zzz.equals("u1"))||(zzz.equals("u2")))
usmenu.usme();
先来看管理员操作吧!
接上面管理员登陆操作,管理员成功登录后直接跳转到Admin类里
public class Admin{
public static void menu(){
System.out.println("--------管理员主页--------");
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("------------------------");
System.out.println("请输入你进行操作的目录序号:");
return;
}
}
输出之后返回到主方法里继续进行流程,根据选择来跳转到各自的操作方法里。
2.录入数据信息
只有管理员登录时才可以录入商品数据信息,登录后按主要菜单提示进行相应操作。
public class GoodsDate {
private String num;
private String name;
public double money;
private String id;
public void setNum(String num) {
this.num = num;
}
public String getNum() {
return num;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setMoney(double money) {
this.money = money;
}
public double getMoney() {
return money;
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public GoodsDate(){}
}
创建一个数组,将数据信息全部储存到里面,从而实现增、删、改、查等功能。数组创建在管理员菜单类里面,该类是通过主类跳转进行的,间接将数组创建在了主方法里面。
创建Goods类,用于增、删、该方法的进行
考虑到商品编号的唯一性,增添了一个方法对输入的编号是否重复进行判断
public static void add(ArrayList<GoodsDate>array){
String num;
Scanner reader = new Scanner(System.in);
while (true) {
System.out.print("请输入商品编号:(五位数)");
num = reader.nextLine();
boolean b = isused(array, num);
if (b)
System.out.println("您输入的编号已被使用,请重新输入!");
else
break;
}
System.out.print("请输入商品名称:");
String name = reader.nextLine();
System.out.print("请输入商品品牌:");
String id = reader.nextLine();
System.out.print("请输入商品价格:");
double money = reader.nextDouble();
GoodsDate gd=new GoodsDate();
gd.setNum(num);
gd.setName(name);
gd.setMoney(money);
gd.setId(id);
array.add(gd);
System.out.println("添加商品数据成功!");
}
public static boolean isused (ArrayList<GoodsDate> array, String num){
boolean b = false;
for (int i = 0; i < array.size(); i++) {
GoodsDate gd = array.get(i);
if (gd.getNum().equals(num)) {
b = true;
break;
}
}
return b;
}
3.删除数据信息
只有管理员登录时才可以删除商品数据信息,登录后按主要菜单提示进行相应操作。
对数组进行遍历,读取数组里面的数据信息,实现方法
public static void shanchu(ArrayList<GoodsDate>array){
Scanner reader = new Scanner(System.in);
System.out.println("请输入你要删除的商品编号:");
String bh = reader.nextLine();
int index = -1;
for (int i = 0; i < array.size(); i++) {
GoodsDate gd = array.get(i);
if (gd.getNum().equals(bh)) {
index = i;
break;
}
}
if (index == -1)
System.out.println("该信息不存在,请重新输入!");
else {
array.remove(index);
System.out.println("删除成功!");
}
}
4.修改数据信息
只有管理员登录时才可以修改商品数据信息,登录后按主要菜单提示进行相应操作。
对数组进行遍历,读取数组里面的数据信息,实现方法
public static void xiugai (ArrayList <GoodsDate> array) {
int index = -1;
Scanner reader = new Scanner(System.in);
System.out.println("请输入你要修改的商品编号:");
String bh = reader.nextLine();
for (int i = 0; i < array.size(); i++) {
GoodsDate gd = array.get(i);
if (gd.getNum().equals(bh)) {
index = i;
break;
}
}
if (index == -1)
System.out.println("该信息不存在,请重新输入!");
else {
System.out.println("请输入商品名称:");
String mc = reader.nextLine();
System.out.println("请输入商品品牌:");
String pp = reader.nextLine();
System.out.println("请输入商品价格:");
double jg = reader.nextDouble();
GoodsDate gd = new GoodsDate();
gd.setNum(bh);
gd.setName(mc);
gd.setMoney(jg);
gd.setId(pp);
for (int i = 0; i < array.size(); i++) {
GoodsDate good = array.get(i);
if (good.getNum().equals(bh)) {
array.set(i, gd);
break;
}
}
System.out.println("修改成功!");
}
}
5.查找数据信息
管理员及用户登录时才都可以查找商品数据信息,登录后按主要菜单提示进行相应操作。
这里我设计的查看方法管理员和用户都可以看到,所以我重新创建了一个Look类,用于调用方法。
public static void look1 (ArrayList<GoodsDate> array) {
DecimalFormat df=new DecimalFormat("0.00");
if (array.size() == 0)
System.out.println("暂无数据,请稍后查询!");
else {
System.out.println("商品编号\t\t" + "商品名称\t\t\t" + "价格\t\t\t" + "品牌");
for (int i = 0; i < array.size(); i++) {
GoodsDate gd = array.get(i);
System.out.println(gd.getNum() + "\t\t" + gd.getName() + "\t\t\t" + df.format(gd.getMoney()) + "元\t\t" + gd.getId());
}
}
}
因为价格我用double定义,所以在该方法里我用到了DecimalFormat,对所有数据保留了两位数字。
上面是查看所有数据,下面的是对某一类数据进行查找,代码如下:
public static void look2(ArrayList<GoodsDate>array){
DecimalFormat df=new DecimalFormat("0.00");
if (array.size()==0)
System.out.println("暂无数据,请稍后查询!");
else{
Scanner reader=new Scanner(System.in);
System.out.println("----查看某类商品数据----");
System.out.println("1、商品编号");
System.out.println("2、商品名称");
System.out.println("3、价格");
System.out.println("4、品牌");
System.out.println("5、返回操作页面");
System.out.println("请输入你要查找的内容:");
String xh=reader.nextLine();
switch (xh){
case("1"):
int ds=-1;
System.out.println("输入你要查找的商品编号:");
String bh=reader.nextLine();
for(int i=0;i<array.size();i++){
GoodsDate gd= array.get(i);
if(gd.getNum().equals(bh)){
System.out.println("商品编号\t\t" + "商品名称\t\t\t" + "价格\t\t\t" + "品牌");
System.out.println(gd.getNum() + "\t\t" + gd.getName() + "\t\t\t" + df.format(gd.getMoney()) + "元\t\t" + gd.getId());
ds=i;
look2(array);
}
}
if(ds==-1){
System.out.println("您输入的编号不存在!");
look2(array);
}
case("2"):
int ds2=-1,d=-1;
System.out.println("输入你要查找的商品名称:");
String mc=reader.nextLine();
for (int i = 0; i < array.size(); i++) {
GoodsDate gd = array.get(i);
if (gd.getName().equals(mc)) {
if (d == -1) {
System.out.println("商品编号\t\t" + "商品名称\t\t\t" + "价格\t\t\t" + "品牌");
d += 1;
}
System.out.println(gd.getNum() + "\t\t" + gd.getName() + "\t\t\t" + df.format(gd.getMoney()) + "元\t\t" + gd.getId());
ds2 = i;
}
}
if(ds2==-1){
System.out.println("您输入的商品名称不存在!");
look2(array);
}
look2(array);
case("3"):
int ds3=-1,d3=-1;
System.out.println("输入你要查找的商品价格:");
double jg=reader.nextDouble();
for (int i = 0; i < array.size(); i++) {
GoodsDate gd = array.get(i);
if (jg-(gd.getMoney())==0) {
if (d3 == -1) {
System.out.println("商品编号\t\t" + "商品名称\t\t\t" + "价格\t\t\t" + "品牌");
d3 += 1;
}
System.out.println(gd.getNum() + "\t\t" + gd.getName() + "\t\t\t" + df.format(gd.getMoney()) + "元\t\t" + gd.getId());
ds3 = i;
}
}
if(ds3==-1){
System.out.println("您输入的数据不存在!");
look2(array);
}
look2(array);
case("4"):
int ds4=-1,d4=-1;
System.out.println("输入你要查找的商品品牌:");
String pp=reader.nextLine();
for (int i = 0; i < array.size(); i++) {
GoodsDate gd = array.get(i);
if (gd.getName().equals(pp)) {
if (d4 == -1) {
System.out.println("商品编号\t\t" + "商品名称\t\t\t" + "价格\t\t\t" + "品牌");
d4 += 1;
}
System.out.println(gd.getNum() + "\t\t" + gd.getName() + "\t\t\t" + df.format(gd.getMoney()) + "元\t\t" + gd.getId());
ds2 = i;
}
}
if(ds4==-1){
System.out.println("您输入的商品名称不存在!");
look2(array);
}
look2(array);
case("5"):
return;
}
}
}
好了,以上就是我编写的管理系统的整个内容,里面还存在有许多的不足,比如每次运行程序只能一次登录管理员或者用户。由于所有的数据信息写在管理员菜单,导致用户登录无法查看。真的已经尽力写了,我也在努力解决,感觉自己要碎掉了,还希望大家多多指正!