报刊订阅管理系统
实体类
admin类
public class Admin {
private String account; // 管理员账号
private String password; // 管理员密码
// 构造函数
public Admin(String account, String password) {
this.account = account;
this.password = password;
}
// 获取管理员账号
public String getAccount() {
return account;
}
// 获取管理员密码
public String getPassword() {
return password;
}
@Override
public String toString() {
return "Admin{" +
"account='" + account + '\'' +
", password='" + password + '\'' +
'}';
}
}
Magazine类
//报刊类
public class Magazine {
private Integer code; // 报刊代号
private String name; // 报刊名称
private String publisher; // 出版报社
private float price; // 季度报价
private String introduction; // 内容介绍
private String category; // 分类编号
// 构造函数
public Magazine(Integer code, String name, String publisher, float price, String introduction, String category) {
this.code = code;
this.name = name;
this.publisher = publisher;
this.price = price;
this.introduction = introduction;
this.category = category;
}
// 获取报刊代号
public Integer getCode() {
return code;
}
// 获取报刊名称
public String getName() {
return name;
}
// 获取出版报社
public String getPublisher() {
return publisher;
}
// 获取出版周期
@Override
public String toString() {
return "编号:" + code +
"\t\t报社名称:" + name +
"\t\t出版社:" + publisher +
"\t\t价格:" + price +
"\t\t内容介绍:" + introduction +
"\t\t分类:" + category;
}
public Magazine() {
}
public void setCode(Integer code) {
this.code = code;
}
public void setName(String name) {
this.name = name;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
public void setPrice(float price) {
this.price = price;
}
public void setIntroduction(String introduction) {
this.introduction = introduction;
}
public void setCategory(String category) {
this.category = category;
}
// 获取季度报价
public float getPrice() {
return price;
}
// 获取内容介绍
public String getIntroduction() {
return introduction;
}
// 获取分类编号
public String getCategory() {
return category;
}
}
order类
public class Order {
private Integer orderNumber; // 订单编号
private Integer userAccount; // 用户账号
private Integer magazineCode; // 报刊代号
private int subscribeCount; // 订阅份数
private String orderTime; // 订单时间
private String subscribeMonth; // 订阅月份
// 构造函数
public Order(Integer orderNumber, Integer userAccount, Integer magazineCode, int subscribeCount, String orderTime, String subscribeMonth) {
this.orderNumber = orderNumber;
this.userAccount = userAccount;
this.magazineCode = magazineCode;
this.subscribeCount = subscribeCount;
this.orderTime = orderTime;
this.subscribeMonth = subscribeMonth;
}
// 获取订单编号
public Integer getOrderNumber() {
return orderNumber;
}
@Override
public String toString() {
return
"订单编号:" + orderNumber +
"用户账号:" + userAccount +
"报刊编号:" + magazineCode +
"订阅数量:" + subscribeCount +
"订单时间:" + orderTime +
"订购月份:" + subscribeMonth ;
}
// 获取用户账号
public Integer getUserAccount() {
return userAccount;
}
// 获取报刊代号
public Integer getMagazineCode() {
return magazineCode;
}
// 获取订阅份数
public int getSubscribeCount() {
return subscribeCount;
}
// 获取订单时间
// 获取订阅月份
public String getSubscribeMonth() {
return subscribeMonth;
}
}
User类
public class User {
private Integer account; // 用户账号
private String password; // 用户密码
private String realName; // 真实姓名
private String phoneNumber; // 联系电话
private String address; // 联系地址
@Override
public String toString() {
return "用户编号:" + account +
"\t\t密码:" + password +
"\t\t用户名:" + realName +
"\t\t联系电话:" + phoneNumber +
"\t\t地址:" + address ;
}
// 构造函数
public User(Integer account, String password, String realName, String phoneNumber, String address) {
this.account = account;
this.password = password;
this.realName = realName;
this.phoneNumber = phoneNumber;
this.address = address;
}
// 获取用户账号
public Integer getAccount() {
return account;
}
// 获取用户密码
public String getPassword() {
return password;
}
// 获取用户真实姓名
public String getRealName() {
return realName;
}
// 获取用户身份证号
public User() {
}
public void setAccount(Integer account) {
this.account = account;
}
public void setPassword(String password) {
this.password = password;
}
public void setRealName(String realName) {
this.realName = realName;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public void setAddress(String address) {
this.address = address;
}
// 获取用户联系电话
public String getPhoneNumber() {
return phoneNumber;
}
// 获取用户联系地址
public String getAddress() {
return address;
}
}
service类
public class MagazineService {
//保存管理员信息
List<Admin> adminList = new ArrayList<>();
//保存用户信息
List<User> userList = new ArrayList<>();
//保存报刊信息
List<Magazine> magazineList = new ArrayList<>();
//保存订单信息
List<Order> orderList = new ArrayList<>();
Admin admin;
User user;
Magazine magazine;
public MagazineService() {
//初始化管理员信息
admin = new Admin("admin", "123456");
adminList.add(admin);
//初始化用户信息
user = new User(111, "123456", "张三", "666666", "北京");
userList.add(user);
//初始化报刊信息
magazine = new Magazine(1111, "人民日报", "中国报刊网", 5, "每日信息及时报", "科学");
magazineList.add(magazine);
}
//管理员登录
public boolean login(String name, String password) {
for (int i = 0; i < adminList.size(); i++) {
if (name.equals(adminList.get(i).getAccount()) && password.equals(adminList.get(i).getPassword())) {
return true;
}
}
return false;
}
//普通用户登录
public User UserLogin(String name, String password) {
for (int i = 0; i < userList.size(); i++) {
if (name.equals(userList.get(i).getRealName()) && password.equals(userList.get(i).getPassword())) {
return userList.get(i);
}
}
return null;
}
//注册
public void register(User user) {
userList.add(user);
}
//增加用户信息
public void addUser(User newUser) {
userList.add(newUser);
}
//查看用户信息
public List<User> findAllUser() {
return userList;
}
//修改用户信息
public User findById(int id) {
for (int i = 0; i < userList.size(); i++) {
if (id == userList.get(i).getAccount()) {
return userList.get(i);
}
}
return null;
}
//删除用户信息
public boolean deleteUser(int id) {
for (int i = 0; i < userList.size(); i++) {
if (id == userList.get(i).getAccount()) {
userList.remove(i);
return true;
}
}
return false;
}
//增加报刊信息
public void addMagazine(Magazine magazine) {
magazineList.add(magazine);
}
//查看报刊信息
public List<Magazine> findAllMagazine() {
return magazineList;
}
//修改报刊信息
public Magazine updateMagazine(int id) {
for (int i = 0; i < magazineList.size(); i++) {
if (id == magazineList.get(i).getCode()) {
return magazineList.get(i);
}
}
return null;
}
//删除报刊信息
public boolean deleteMagazine(int id) {
for (int i = 0; i < magazineList.size(); i++) {
if (id == magazineList.get(i).getCode()) {
magazineList.remove(i);
return true;
}
}
return false;
}
//订单信息添加
public void addOrder(Order order) {
orderList.add(order);
}
//根据用户编号查看订单信息
public Order findOrderById(int account) {
for (int i = 0; i < orderList.size(); i++) {
if (account == orderList.get(i).getUserAccount()) {
return orderList.get(i);
}
}
return null;
}
}
view视图菜单类
public class MagazineView {
boolean loop = true;
MagazineService service = new MagazineService();
//用户编号
int account = 112;
//报刊编号
int code = 1112;
//定义用户对象 保存登陆后的用户信息
User user1 = new User();
//定义订单编号自增
int orderNumber = 11111;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//用于格式化日期
//管理员登录
public void adminLogin() {
while (true) {
System.out.println("请输入管理员账号");
String name = MagazineUtil.readString(10);
System.out.println("请输入密码");
String password = MagazineUtil.readString(10);
if (service.login(name, password)) {
System.out.println("登录成功");
break;
} else {
System.out.println("登录失败!用户名或密码错误");
}
}
}
//普通用户登录
public void UserLogin() {
while (true) {
System.out.println("请输入用户名");
String name = MagazineUtil.readString(10);
System.out.println("请输入密码");
String password = MagazineUtil.readString(10);
User user = service.UserLogin(name, password);
if (user != null) {
user1 = user;
System.out.println("登录成功");
break;
}
System.out.println("登录失败,用户名或密码错误!");
}
}
//增加用户信息
public void addUser() {
System.out.println("请输入要用户密码");
String password = MagazineUtil.readString(16);
System.out.println("请输入真实姓名");
String name = MagazineUtil.readString(15);
System.out.println("请输入联系电话");
String phone = MagazineUtil.readString(11);
System.out.println("请输入地址");
String addr = MagazineUtil.readString(20);
User user = new User(account, password, name, phone, addr);
System.out.println(user);
service.addUser(user);
System.out.println("注册成功 账号为:" + account);
//编号自增
account++;
}
//查看用户信息
public void findAllUser() {
List<User> list = service.findAllUser();
list.forEach(System.out::println);
}
//修改用户信息
public void updateUser() {
System.out.println("请输入要修改的用户编号");
int id = MagazineUtil.readInt();
User user = service.findById(id);
if (user == null) {
System.out.println("用户不存在");
return;
}
System.out.println("请输入要用户密码(" + user.getPassword() + ")");
String password = MagazineUtil.readString(16);
user.setPassword(password);
System.out.println("请输入真实姓名(" + user.getRealName() + ")");
String name = MagazineUtil.readString(15);
user.setRealName(name);
System.out.println("请输入联系电话(" + user.getPhoneNumber() + ")");
String phone = MagazineUtil.readString(11);
user.setPhoneNumber(phone);
System.out.println("请输入地址(" + user.getAddress() + ")");
String addr = MagazineUtil.readString(20);
user.setAddress(addr);
System.out.println("修改成功");
}
//删除用户信息
public void deleteUser() {
System.out.println("请输入要删除的用户id");
int id = MagazineUtil.readInt();
boolean flag = service.deleteUser(id);
if (!flag) {
System.out.println("用户信息不存在");
return;
}
System.out.println("删除成功");
}
//查看所有报刊信息
public void findAllMagazine() {
List<Magazine> list = service.findAllMagazine();
list.forEach(System.out::println);
}
//增加报刊信息
public void addMagazine() {
System.out.println("请输入报刊名称");
String name = MagazineUtil.readString(10);
System.out.println("请输入出版报社");
String publisher = MagazineUtil.readString(10);
System.out.println("请输入季度报价");
int price = MagazineUtil.readInt();
System.out.println("请输入内容介绍");
String introduction = MagazineUtil.readString(10);
System.out.println("请输入分类编号");
String category = MagazineUtil.readString(10);
Magazine magazine = new Magazine(code, name, publisher, price, introduction, category);
service.addMagazine(magazine);
System.out.println("添加成功");
}
//修改报刊信息
public void updateMagazine() {
System.out.println("请输入要修改的报刊编号");
int id = MagazineUtil.readInt();
Magazine magazine = service.updateMagazine(id);
if (magazine == null) {
System.out.println("没有对应的报刊信息");
return;
}
System.out.println("请输入报刊名称(" + magazine.getName() + ")");
String name = MagazineUtil.readString(10);
magazine.setName(name);
System.out.println("请输入出版报社(" + magazine.getPublisher() + ")");
String publisher = MagazineUtil.readString(10);
magazine.setPublisher(publisher);
System.out.println("请输入季度报价(" + magazine.getPrice() + ")");
int price = MagazineUtil.readInt();
magazine.setPrice(price);
System.out.println("请输入内容介绍(" + magazine.getIntroduction() + ")");
String introduction = MagazineUtil.readString(10);
magazine.setIntroduction(introduction);
System.out.println("请输入分类编号(" + magazine.getCategory() + ")");
String category = MagazineUtil.readString(10);
magazine.setCategory(category);
System.out.println("修改成功");
}
//删除报刊信息
public void deleteMagazine() {
System.out.println("请输入要删除的报刊编号");
int code = MagazineUtil.readInt();
boolean flag = service.deleteMagazine(code);
if (!flag) {
System.out.println("报刊信息不存在");
return;
}
System.out.println("删除成功");
}
//订阅报刊
public void subscribeMagazine() {
System.out.println("请输入你要订阅的报刊编号");
int code = MagazineUtil.readInt();
Magazine magazine = service.updateMagazine(code);
if (magazine == null) {
System.out.println("要订阅的报刊信息不存在");
return;
}
System.out.println(magazine);
//请输入要订阅的月份
System.out.println("请输入要订阅月份");
String month = MagazineUtil.readString(2);
System.out.println("请输入要订阅的数量");
//得到需要订阅的数量
int num = MagazineUtil.readInt(10);
//计算总价并显示
double sum = magazine.getPrice() * num;
System.out.println(sum);
//将用户信息 及报刊信息 保存到订单中
//获得用户账号
int account = user1.getAccount();
//获得报刊编号
int newCode = magazine.getCode();
//订阅时间
Date date = new Date();
String data = sdf.format(date);
Order order = new Order(orderNumber, account, code, num, data, month);
service.addOrder(order);
System.out.println("订阅成功");
}
//查看订单信息
public void findOrder() {
Order order = service.findOrderById(user1.getAccount());
System.out.println(order);
}
//用户注册
public void register() {
System.out.println("请输入密码");
String password = MagazineUtil.readString(10);
System.out.println("请输入真实姓名");
String name = MagazineUtil.readString(15);
System.out.println("请输入联系电话");
String phone = MagazineUtil.readString(11);
System.out.println("请输入地址");
String addr = MagazineUtil.readString(20);
User user = new User(account, password, name, phone, addr);
service.register(user);
account++;
System.out.println("注册成功");
}
//主菜单
public void mainEu() {
do {
System.out.println("==============报刊订阅管理系统==============");
System.out.println("\t\t\t1、管理员登录");
System.out.println("\t\t\t2、普通用户登录");
System.out.println("\t\t\t3、用户注册");
System.out.println("\t\t\t4、退出");
System.out.println("请输入1、2、3命令来执行对应的操作");
int key = MagazineUtil.readInt();
switch (key) {
case 1:
adminLogin();
mainEu1();
break;
case 2:
UserLogin();
mainEu2();
break;
case 3:
register();
break;
case 4:
loop = false;
break;
default:
System.out.println("输入有误,请重新输入");
break;
}
} while (loop);
System.out.println("您退出了整个系统");
}
//管理员菜单
public void mainEu1() {
boolean loop1 = true;
do {
System.out.println("==============报刊订阅管理系统==============");
System.out.println("\t\t\t1、增加用户信息");
System.out.println("\t\t\t2、删除用户信息");
System.out.println("\t\t\t3、修改用户信息");
System.out.println("\t\t\t4、查看用户信息");
System.out.println("\t\t\t======================");
System.out.println("\t\t\t5、增加报刊信息");
System.out.println("\t\t\t6、查看报刊信息");
System.out.println("\t\t\t7、修改报刊信息");
System.out.println("\t\t\t8、删除报刊信息");
System.out.println("\t\t\t9、退出管理员");
System.out.println("请输入命令来执行对应的操作");
int key = MagazineUtil.readInt();
switch (key) {
case 1:
addUser();
break;
case 2:
deleteUser();
break;
case 3:
updateUser();
break;
case 4:
findAllUser();
break;
case 5:
addMagazine();
break;
case 6:
findAllMagazine();
break;
case 7:
updateMagazine();
break;
case 8:
deleteMagazine();
break;
case 9:
loop1 = false;
break;
default:
System.out.println("输入有误");
break;
}
} while (loop1);
System.out.println("您退出了管理员菜单");
}
public void mainEu2() {
boolean loop2 = true;
do {
System.out.println("==============报刊订阅管理系统==============");
System.out.println("\t\t\t1、查看所有报刊信息");
System.out.println("\t\t\t2、订阅报刊");
System.out.println("\t\t\t3、查看订单信息");
System.out.println("\t\t\t4、退出报刊订阅");
System.out.println("请输入命令来执行对应的操作");
int key = MagazineUtil.readInt();
switch (key) {
case 1:
findAllMagazine();
break;
case 2:
subscribeMagazine();
break;
case 3:
findOrder();
break;
case 4:
loop2 = false;
break;
default:
System.out.println("输入有误");
break;
}
} while (loop2);
System.out.println("您退出了用户订阅菜单");
}
}
接收键盘输入类
public class MagazineUtil {
//静态属性
private static Scanner scanner = new Scanner(System.in);
/**
* 功能:读取键盘输入的一个菜单选项,值:1——5的范围
* @return 1——5
*/
public static char readMenuSelection(){
char c ;
for (; ;){
String str = readKeyBoard(1,false);//包含一个字符的字符串
c = str.charAt(0);
if (c!='1'&&c!='2'&&c!='3'&c!='4'&c!='5'){
System.out.println("选择错误,请重新输入:");
}
else break;
}
return c;
}
/**
* 功能:读取键盘输入的一个字符
* @return 一个字符
*/
public static char readChar(){
String str = readKeyBoard(1,false);//读取字符
return str.charAt(0);
}
/**
* 功能:读取键盘输入的一个字符,如果直接按回车,则返回指定的默认值;否则返回输入的那个字符
* @param defaultValue 指定的默认值
* @return 默认值或输入的字符
*/
public static char readChar(char defaultValue){
String str = readKeyBoard(1,true);//读取结果不是字符就是一个空的字符串
return (str.length()==0)?defaultValue:str.charAt(0);
}
/**
* 功能:读取键盘输入的整型,长度小于2位
* @return 整数
*/
public static int readInt(){
int n;
for(; ;){
String str = readKeyBoard(10,true);//读取一个整数,长度<=10位
try {
n=Integer.parseInt(str);//进行转型,字符转换成整数
break;
}catch (NumberFormatException e){
System.out.println("数字输入的有错误,请重新输入!");
}
}return n;
}
/**
* 功能:读取键盘输入的 整数或默认值,如果直接回车,则返回默认值,否则返回输入的整数
*
* @param defaultValue 指定的默认值
* @return 整数或默认值
*
*/
public static int readInt(int defaultValue){
int n;
for(; ;){
String str = readKeyBoard(10,true);
if (str.equals("")){
return defaultValue;
}
//异常处理
try {
n = Integer.parseInt(str);
break;
}catch (NumberFormatException e){
System.out.println("数字输入的有错误,请重新输入!");
}
}
return n;
}
/**
* 功能:读取键盘输入的指定长度的字符串
* @param limit 限制的长度
* @return 指定长度的字符串
*/
public static String readString(int limit){
return readKeyBoard(limit,false);
}
/**
* 功能:读取键盘输入的指定长度的字符串或默认值,如果直接回车,返回默认值,否则返回字符串
* @param limit 限制的长度
* @param defaultValue 指定的默认值
* @return 指定长度的字符串
*/
public static String readString(int limit,String defaultValue){
String str = readKeyBoard(limit, true);
return str.equals("")? defaultValue : str;
}
/**
* 功能:读取键盘输入的确认选项,Y或N
* 将小的功能,封装到一个方法中.
* @return Y或N
*/
public static char readConfirmSelection(){
System.out.println("请输入你的选择(Y/N)");
char c ;
for(; ; ){
//将接受的字符转换成大写字母
String str = readKeyBoard(1,false).toUpperCase();
c = str.charAt(0);
if (c=='Y'||c=='N'){
break;
}else {
System.out.println("选择有错误,请重新输入!");
}
}
return c;
}
/**
* 功能: 读取一个字符串
* @param limit 读取的长度
* @param blankReturn 如果为true ,表示 可以读空字符串。
* 如果为false表示 不能读空字符串。
*
* 如果输入为空,或者输入大于limit的长度,就会提示重新输入。
* @return
*/
public static String readKeyBoard(int limit,boolean blankReturn){
//定义一个字符串
String line = "";
while (scanner.hasNextLine()){//判断是否有下一行
line = scanner.nextLine();
//如果line.length=0, 即用户没有输入任何内容,直接回车
if (line.length()==0){
if (blankReturn)return line;//如果blankReturn=true,可以返回空串
else continue; //如果blankReturn=false,不接受空串,必须输入内容
}
//如果用户输入的内容大于了 limit,就提示重写输入
//如果用户如的内容 >0 <= limit ,我就接受
if (line.length()<1||line.length()>limit){
System.out.print("输入长度(不能大于" + limit + ")错误,请重新输入:");
continue;
}
break;
}
return line;
}
}
测试类
public class Test {
public static void main(String[] args) {
MagazineView magazineView=new MagazineView();
// magazineView.mainEu1();
magazineView.mainEu();
}
}
###运行截图