前言:
下面所有代码存在纰漏与不完善处,欢迎指导与批评。
1选题
1.选题名称
饮料售货机系统
2.选题描述
本系统除用户管理、登录和一键注册功能外,还设计了账户余额查询、账户充值、购买、升级会员4个业务模块。
2系统功能说明
2.1 系统功能模块
系统的主要角色为用户和管理员模块。
2.2 主要模块功能说明
用户:一键注册、登录、查询账单、消费、充值、注册会员。
管理员:补全货物、查看用户名字和上次登录时间、查看购买记录。
3数据结构设计
3.1 IO流读写数据结构及其基本操作(含数据查找和排序,要求每个数据结构采用不同的排序算法)
如图所示,本系统的service.IO.getWholeText()方法使用了java.io.BufferedReader的方法,其底层算法采用字符缓冲和编码表的数据结构,以完成一次文件的数据读取。 |
3.2购买饮料数据结构及其基本操作(含数据查找和排序,要求每个数据结构采用不同的排序算法)
/**
* 购买1个name商品
* @param name
* @return int -2:余额不足 -1:缺货 1:成功 0:查无商品
*/
public static int buy(String name) {
for(int i=0; i<10; i++) {
if(Storge.nameList[i].equals(name)) {
if(Integer.parseInt(Storge.shelf[i]) <= 0) {
return -1;
}
else {
if(Storge.vip[User.userNo].equals("会员")) {
if(Double.parseDouble(Storge.balance[User.userNo]) < Double.parseDouble(Storge.priceList[i])*Storge.discount4Vip) {
return -2;
}
else {
Storge.shelf[i] = String.valueOf(Integer.parseInt(Storge.shelf[i]) - 1);
Storge.balance[User.userNo] = String.valueOf((Double.parseDouble(Storge.balance[userNo]) - Double.parseDouble(Storge.priceList[i])*Storge.discount4Vip));
return 1;
}
}
else {
if(Double.parseDouble(Storge.balance[User.userNo]) < Double.parseDouble(Storge.priceList[i])) {
return -2;
}
else {
Storge.shelf[i] = String.valueOf(Integer.parseInt(Storge.shelf[i]) - 1);
Storge.balance[User.userNo] = String.valueOf((Double.parseDouble(Storge.balance[userNo]) - Double.parseDouble(Storge.priceList[i])));
return 1;
}
}
}
}
}
return 0;
}
如上所示采用线性表结构读列表内容。 |
3. IO流读写数据结构的测试情况
// 测试源码 |
// 测试结果 |
4数据的文件存储
本地存储
File file = new File(bundlePath);
out_Server(nameList, measurementList, netWtList, priceList, shelf);
out_History(history);
out_User(user);
|
5业务层设计
5.1 用户一键注册及登录
public static void in_User() {
String[] list = input(System.getProperty("user.dir") + "\\User.ini");
int arr1 = 0, arr2 = 0, arr3 = 0, arr4 = 0, arr5 = 0;
// i: user组号 j: user序号 k: list序号
for(int i = 0, j = 0, k = 1; k<list.length && list[k]!=null; k++, j++) {
if(!list[k].equals(" ")) {
if(k%6==1 && k!=1) {
i++;
j=0;
}
user[i][j] = list[k];
}
}
for(int i = 0; i < list.length; i++) {
if(i%6 == 1) {
userName[arr1
|