2019年的最后一个月,我和我的小团队完成了一个简单的小项目,为本学期的《软件工程》画上了一个完整的句号。
小组成员 | 分工 | 博客地址 |
mxy | 主功能实现 | http://home.cnblogs.com/u/ms-bk/ |
bq | 界面布局实现 | http://home.cnblogs.com/u/1797404 |
wxm | 数据库编写 | https://home.cnblogs.com/u/1975920 |
zy | 系统设计 |
口红推荐系统设计
总体设计
1.模块说明
表2.1 注册账号说明
模块名称:注册账号 |
编号:0021 |
主要功能:注册新账号 |
|
上级调用模块:无 |
下级调用模块:无 |
局部数据结构:账号 |
|
约束:所注册账号必须是6位数字,不能是其他字符,不能少于或多于6位 |
表2.2 登录说明
模块名称:登录 |
编号:0022 |
主要功能:用户登录 |
|
上级调用模块:注册账号 |
下级调用模块:无 |
局部数据结构:账号 |
|
约束:已注册账号才有权登录,账号密码正确才能登录 |
表2.3 查询说明
模块名称:查询 |
编号:0023 |
主要功能:查询信息 |
|
上级调用模块:无 |
下级调用模块:品名、用途、功效 |
局部数据结构:信息 |
|
约束:查询请求发出后,读取数据库信息,加载到指定位置,显示在页面上 |
详细设计
1.算法设计及描述:
(1)注册模块
1)注册的步骤是:用户输入用户名及密码进行注册,如果用户名不重复,且符合要求,注册成功;反之注册失败。
(2)登录模块
1)登录的步骤是:用户输入用户名及密码进行登录,如果用户名及密码匹配,登录成功;反之登录失败。
(3)查询模块
1)查询的步骤是:用户输入或点击需要查询的内容,如果查到,显示查到的具体信息,查询成功;反之输出提示“抱歉,未找到,是否继续查询”,查询失败。
2.数据库设计:
(1)用户表
用户表存储用户账号及密码。如表3.1所示。
表3.1 用户表
名 称 |
字 段 |
长 度 |
null/not |
PK |
FK |
账 号 |
user |
10 |
Y |
PK |
|
密 码 |
passwd |
45 |
Y |
|
|
(2)口红信息表
口红信息表存储化妆品信息,略。
界面布局代码
用“name.setOpaque(false)”函数将JPanel、JTextField等组件设置为透明;
用“name.setBorder(null)”函数取消各组件边框;
用“name.setContentAreaFilled(false)”函数将JButton设置为透明;
用“name.setIconImage(icon.getImage())”函数给窗体添加图标;
用“name.setResizable(false)”函数禁止窗体缩放。
// 设置账号密码输入框 jtf = new JTextField("请输入3-6位用户名"); jtf.setOpaque(false);
// 设置背景透明 jtf.setBorder(null);// 取消边框 jtf.setFont(new Font("宋体",Font.BOLD,20));
// 设置文本框字体属性 jpf = new JPasswordField(); jpf.setOpaque(false); jpf.setBorder(null); jpf.setFont(new Font("宋体",Font.BOLD,20));
// 设置按钮 jb0 = new JButton(new ImageIcon("./imgs/注册2.png")); jb0.setContentAreaFilled(false);
// 设置按钮背景为透明 jb0.setBorder(null); jb0.addActionListener(this);
// 设置监听 jb1 = new JButton(new ImageIcon("./imgs/登录2.png")); jb1.setContentAreaFilled(false);
// 设置按钮背景为透明 jb1.setBorder(null); jb1.addActionListener(this);
系统功能实现
完整代码我托管在github上面,点击链接即可跳转。https://github.com/C-O-L/Lipstick