资源描述
面向对象课程设计报告
姓 名
Name
学 号
Student No。
班 级
Class
代码总行数
Code Lines
1150
项目名称
Item
商品信息管理系统
1.实验目的
本次课程设计旨在通过一个完整项目的开发,巩固面向对象程序设计、软件工程、数据库技术等课程的相关知识,加深学生对Java语言的理解,尤其是对面向对象思想、Java编码规范、JDBC访问数据库的理解,使学生进一步掌握环境构建、代码编写、文档阅读与理解、文档编写、软件测试、发行与部署等技能,进一步提高学生的学习能力、理解能力、表达能力及沟通能力。
2.实验内容
用户正确的用户名和密码登录到图书信息管理界面,用户可以对商品的所有信息进行增加、删除、修改、查找等基本的简单操作,主要功能如下:
(1)用户登录
l 用户名和密码预先存储在数据库内,用户必须在登录成功后才能进行相关操作。
l 当用户名和密码错误时,系统给出相应的提示。
l 当用户名和密码连续输入三次错误后,自动退出系统。
(2)添加记录
l 用户根据设计的GUI,输入相关信息,完成对信息表插入记录的操作.
l 当输入的数据为空时,将弹出对话框提示输入不能为空,输入类型与数据库中的类型不匹配 时会报错.
(3)删除记录
l 用户根据设计的GUI,输入相关信息,完成对信息表删除记录的操作.
l 当输入的数据不全或类型不正确时,系统会弹出相应的消息提示框。
(4)修改记录
l 用户根据设计的GUI,输入相关信息,完成对信息表修改记录的操作。
l 当输入的数据类型不正确或空时,系统会弹出相应的消息提示框。
(5)查询
l 用户根据设计的GUI,输入相关信息,完成对信息表查询记录的操作。
l 当输入的数据类型不正确或者没有要查找的信息时,系统会自动弹出相应的消息提示框。
3。类图
该系统包括五个类,它们的功能描述如下:
Goods 类图、User类图用来与数据库相关信息进行关联,InfoDAo类图用来对数据库中的信息进行增加、删除、修改、查找等操作。UserDAO类图用来对数据库中的信息进行查找。DBCconnection类图用来连接数据库。
图3。1商品信息管理类图
4.运行界面
4。1用户登录界面
用户通过该页面输入正确的用户名和密码才能进入到主界面,如果用户名和密码输入不正确,系统会给出相应的提示信息.
图4.1登录界面
4。2商品信息管理界面
当用户登录成功后进入该主界面,进行相应的增、删、改、查等操作。
图4。2商品信息管理界面
4。3添加信息界面
用户点击操作菜单下的添加后进入该添加页面,输入相应的信息将记录添加到相应的表中,如果输入格式不正确会提示错误信息。
图4—3添加商品信息
4。4修改商品信息界面
当用户点击操作菜单下的修改后将进入修改页面。
图4—4修改商品信息
4。5修改商品信息界面
在该界面用户输入正确的编号进行相应记录的删除操作,如果输入的编号不正确会给出错误提示信息.
图4-5修改商品信息
4。6帮助界面
如果用户对本系统不太了解可以通过该界面进行查看。
图4—6修改商品信息
5.关键代码(要求在类的定义以及方法定义的前面给出相关描述信息)
5。1商品信息操作类(InfoDAO.java)
该类中实现与数据库信息的交互。
public List〈Info〉 findByName(String name) {
dbConnection = new DBConnection();
String sql = ”select * from t_goodsmessage where goodsname like ’%” +name+ ”%’";
ResultSet rs = dbConnection。executeQuery(sql);
List〈Info〉 list=new ArrayList〈Info>();
try {
while (rs。next()) {
Info info = new Info();
info。setId(rs。getInt(1));
info。setGoodsname(rs。getString(2));
info。setPrice(Float。parseFloat(rs.getString(3)));
info.setNum_now(Integer.parseInt(rs。getString(4)));
info.setDescription(rs.getString(5));
list。add(info);}
} catch (SQLException e) {
e.printStackTrace();
}finally{
dbConnection.dbClose();}
5.2用户登录类(LoginFrame.java)
当用户进入登录页面后输入用户名和密码,在LoginFrame。java界面中将所输入的数据信息传入数据库进行匹配.
int count=0;
publicvoid actionPerformed(ActionEvent arg0) {
String name = username。getText();
String pwd = new String(password.getPassword());
if(name.equals(””)||pwd.equals("”))
{
JOptionPane。showMessageDialog(null, ”用户名或密码不能为空!”);
}
else
{
boolean flag = userDAO.findUserByNameAndPwd(user);
if(flag) {
InfoFrame infoFrame = new InfoFrame();
this。setVisible(false);
infoFrame.setVisible(true);
} else{
if(count〉=3){
JOptionPane.showMessageDialog(null, ”登录次数已达上限!");
System.exit(0);
}
count++;
JOptionPane。showMessageDialog(null, "用户名或密码有误!请重新输入!”);}
5。3商品信息主界面(InfoFrame)
在该类中实现增删改查等界面的跳转。
publicvoid refreshTable() {
infoDAO= new InfoDAO();
List〈Info> list =infoDAO.findAllInfo();
int count=list。size();
data = new Object[count][5];
for (int i = 0; i 〈 count; i++) {
data[i][0] = list。get(i)。getId();
data[i][1] = list.get(i)。getGoodsname();
data[i][2] = list.get(i)。getPrice();
data[i][3] = list.get(i).getNum_now();
data[i][4] = list。get(i).getDescription();
}
table_1.setModel(new DefaultTableModel(
data,
new String[] {
"商品编号”, "商品名称”, ”商品价格”, "库存数量”, "商品描述"
}
){
privatestaticfinallongserialVersionUID = 1L;
boolean[] columnEditables = newboolean[] {
false, true, true,true,true
};
publicboolean isCellEditable(int row, int column) {
returncolumnEditables[column];}}
5.4商品信息添加界面(AddFrame。Java)
当用户登录成功后进入添加新闻信息页面,在AddFrame。Java界面中将添加的信息存入数据库。
publicvoid actionPerformed(ActionEvent e)
{
String goodsname=textField。getText();
String price=textField_1.getText();
String num=textField_2.getText();
String des=textField_3.getText();
if(goodsname.equals(””)||price.equals(”")||num.equals(”")||des。equals(""))
{
JOptionPane。showMessageDialog(null, ”添加的记录不能为空!”);
}
elseif(!price。matches("^\\d+?\\d+(\\。\\d+)?$"))
{
JOptionPane.showMessageDialog(null, ”商品价格格式不对!”);
}
elseif(!num.matches("^\\d+$”))// "^[1—9]\\d*$"
{
JOptionPane.showMessageDialog(null, ”库存数量必须为正整数!");}
5。5商品信息修改界面(UpdateFrame。java)
当用户登录成功后进入修改页面,根据新闻编号查询要修改的信息,在UpdateFrame.java中将修改后存入数据库.
publicvoid actionPerformed(ActionEvent e)
{
String id=textField。getText();
if(id.equals(""))
{
JOptionPane。showMessageDialog(null, ”商品编号不能为空!");
}
else
{Info info=new Info();
InfoDAO infoDAO = new InfoDAO();
info = infoDAO。findById(Integer.parseInt(id));
if (info == null) {
JOptionPane。showMessageDialog(null, ”没有查找结果!");
5。6商品删除界面(DeleteFrame.java)
登录成功进入删除页面,根据查询新闻编号,在DeleteFrame.java界面中删除新闻信息。
publicvoid actionPerformed(ActionEvent arg0)
{
String id=textField。getText();
InfoDAO infoDAO=new InfoDAO();
if(id。equals(”"))
{JOptionPane.showMessageDialog(null, ”不能为空!”);
}elseif(id。matches(”^[1—9]\\d*$”))
{
boolean flag=infoDAO。deleteById(Integer.parseInt(id));
if(flag){
JOptionPane。showMessageDialog(null, ”删除成功!”);
InfoFrame info=new InfoFrame();
//info。refreshTable();
setVisible(false);
info。setVisible(true); }
else{JOptionPane。showMessageDialog(null, "对不起,没有你要删除的记录!”);}}
else{JOptionPane.showMessageDialog(null, ”你输入的不是数字,请重新输入!”);}
6.上机调试及问题分析
6。1链接数据库方面的问题
6.1。1驱动问题
出现问题:运行程序前未加载mysql驱动提示错误:
图6-1错误提示
6。2商品信息管理系统运行期间的问题
6。2。1空指针错误
当查询的结果为空时将出现如图6—3所示:
图6—2错误提示
6.2。2连数据的密码不对出现如图6-5所示:
图6-3错误提示
6.2.3商品信息增加界面存在的问题
出现的问题:当价格文本框中输入的不是数字时,程序出错
错误提示:
图6-4错误提示
7.心得体会及建议
时间过得真快,不知不觉本学期的实训就要结束了,本次实训不仅使我学到了很多东西,更重要的是增强了我的自信心.
本次实训给我最大的感触是累,因为是第一次接触Java项目,而且是用GUI来实现可视化界面,什么都要从零做起,熟悉新的开发工具,使用新的数据库,这让本来就对编程不感兴趣的我有了退缩的念头,但让我高兴的是有这么一帮好同学,是他们鼓励我、帮助我,让我重拾信心,最终完成了本次实训的内容.
以前总觉得实训没什么意义,但通过本次实训我学到了不少东西,也深切地体会到实训的意义, 以前上课的时候认为书上的知识点挺容易的,但当我们真正使用它的时候才发现“纸上得来终觉浅"。它不仅将我们所学的东西学以致用,也发现了一些知识上的漏洞,更加深了我们对知识的理解和应用。同时也发现了自己的不足,所以会在以后的学习中,不断地给自己充电来弥补自己的不足和缺陷.
在实训的时候,老师还安排一些同学讲了一些有关Java的课外知识,扩展了我们的知识面,使我们在实训期间学到更多知识.我认为我在程序方面做的还不够完整,希望能够做得更好。
成 绩
Score
教师签字 日期
- 7 -
展开阅读全文