本文将使用Java语言实现网上书店管理系统。其功能一般包括:图书信息管理、用户信息管理、图书购买、图书订单查看、图书添加、图书维护等。有兴趣的可以看看。
:
目录
1.效果展示2。需求函数3。系统整体设计及部分代码3.1登录模块设计3.2新用户注册3.3图书添加模块3.4图书添加事件3.5买家信息维护3.6订单管理模块4。数据库设计4.1系统数据库设计4.2系统E-R图设计5。JDBC连接数据库
1.效果展示
2.需求功能
用户可以注册并登录系统。在用户界面上,他们可以查看网上书店中的图书类别和类别下的图书,并根据自己的需求添加订单购买自己喜欢的图书。
管理员可以通过自己的账号登录管理员系统对书店进行管理,可以实现图书的添加、修改、查询、删除等功能,并可以查看用户的订单,进行修改和维护。为统计数据添加客户信息。
在构建系统时,首先从需求出发构建数据库,然后结合需求通过数据库表划分系统的功能模块。这样,一个大系统就解成了几个小系统。这里,系统分为三个模块:用户登录模块、管理员模块和用户购买模块。这些模块可以分别实现以下功能:
登录模块:实现登录和注册功能。管理员模块:可以添加、修改、删除图书和订单。用户模块:可以查找图书,订购需要的图书。
3.系统总体设计及部分代码
3.1登录模块设计
用户正确输入用户名和密码,连接到数据库,登录成功!
私有void loginActionPerformed(ActionEvent evt){
string userName=this . userName txt . gettext();
String password=new String(this . password txt . get password());
if(StringUtil.isEmpty(用户名)){
Joptionpane.show消息对话框(null,“用户名不能为空!”);
返回;
}
if(string util . isempty(password)){
Joptionpane.show消息对话框(null,“密码不能为空!”);
返回;
}
CUser cuser=new CUser(用户名,密码);
Connection con=null
尝试{
con=db util . getcon();
CUser current user=CUser Dao . log in(con,CUser);
if(current user!=null){
dispose();
新CMainFrm()。set visible(true);
}否则{
Joptionpane.show消息对话框(null,“用户名或密码错误!”);
}
} catch(异常e) {
//由todo自动生成的catch块
e . printstacktrace();
}
3.2新用户的注册
此模块的核心是创建实例化对象。
私有void registrationperformed(ActionEvent evt){
string userName=this . userName txt . gettext();
string password=this . password txt . gettext();
if(StringUtil.isEmpty(用户名)){
Joptionpane.show消息对话框(null,“用户名不能为空!”);
返回;
}
if(string util . isempty(password)){
Joptionpane.show消息对话框(null,“密码不能为空!”);
返回;
}
注册注册=新注册(用户名,密码);
Connection con=null
尝试{
con=db util . getcon();
int n=registrationDao.add(con,registration);
if(n==1){
Joption窗格。显示消息对话框(空,“注册成功!”);
reset value();
}否则{
Joptionpane.show消息对话框(null,“注册失败!”);
}
}catch(异常e) {
}最后{
尝试{
dbutil . close con(con);
} catch(异常e) {
//由todo自动生成的catch块
e . printstacktrace();
Joptionpane.show消息对话框(null,“注册失败!”);
}
}
}
3.3图书添加模块
管理员可以在此界面查询、修改和删除系统中的图书。
公共静态void main(String[] args) {
EventQueue.invokeLater(新的Runnable() {
公共无效运行(){
尝试{
BookAddInterFrm frame=new BookAddInterFrm();
frame . set visible(true);
} catch(异常e) {
e . printstacktrace();
}
}
});
}
3.4图书添加事件
该界面主要实现添加书籍的功能。
/**
*图书添加事件
*/
私有void bookAddActionPerformed(ActionEvent evt){
string bookName=this . bookName txt . gettext();
字符串作者=this。作者txt。gettext();
串价=这个。价格短信。gettext();
弦书desc=这个。预订desc。gettext();
if(字符串util。isempty(bookName)){
joptionpane。showmessagedialog(null,图书名称不能为空!');
返回;
}
if(字符串util。isempty(作者)){
joptionpane。showmessagedialog(null,图书作者不能为空!');
返回;
}
if(StringUtil.isEmpty(price)){
joptionpane。showmessagedialog(null,图书价格不能为空!');
返回;
}
string sex=
if(manJrb.isSelected()){
性别='男;
} else if(femalejrb。被选中()){
性别='女;
}
BookType BookType=(BookType)BookType JCB。getselecteditem();
int book typeid=booktype。getid();
Book book=新书(书名、作者、性别、Float.parseFloat(价格)、bookTypeId、Book desc);
连接con=空
尝试{
con=db util。getcon();
int addNum=bookDao.add(con,book);
if(addNum==1){
joptionpane。showmessagedialog(null,图书添加成功!');
重置值();
}否则{
joptionpane。showmessagedialog(null,图书添加失败!');
}
}catch(异常e){
e。printstacktrace();
joptionpane。showmessagedialog(null,图书添加失败!');
}最后{
尝试{
dbutil。关闭con(con);
} catch(异常e) {
//TODO自动生成的捕捉块
e。printstacktrace();
}
}
}
/**
* 重置表单
*/
私有void resetValue(){
这个。书名txt。settext(');
这个。作者txt。settext(');
这个。价格短信。settext(');
这个。manjrb。set selected(真);
这个。bookdesctxt。settext(');
如果(这个。图书类型JCB。getitemcount()0){
这个。图书类型JCB。setselectedindex(0);
}
}
/**
* 初始化图书类别下拉框
*/
私有void fillBookType(){
连接con=空
BookType bookType=null
尝试{
con=db util。getcon();
ResultSet RS=BookType Dao。list(con,new BookType());
while(rs.next()){
bookType=new bookType();
图书类型。集合id(RS。getint(' id ');
图书类型。setbooktypename(RS。getstring('图书类型名');
这个。图书类型JCB。additem(book type);
}
}catch(异常e){
e。printstacktrace();
}最后{
}
}
}
3.5买家信息维护
此模块主要用于对买家信息的查找和维护。
/**
* 买家信息搜索事件处理
*/
受保护的void consumerSerachActionPerformed(ActionEvent evt){
字符串s _ consumer name=this。s _消费者amext。gettext();
消费者消费者=新消费者();
消费者。setconsumername(s _ consumerName);
this.fillTable(消费者);
}
私有void可填充表格(消费者消费者){
DefaultTableModel DTM=(DefaultTableModel)使用者表。获取模型();
DTM。setrowcount(0);//设置成0行
连接con=空
尝试{
con=db util。getcon();
ResultSet RS=消费者Dao。列表(con,消费者);
while(rs.next()){
向量v=新向量();
五。添加(RS。getstring(' id ');
五。添加(RS。getstring('消费者名称');
五。添加(RS。getstring(' sex ');
五。添加(RS。getstring(' age ');
五。添加(RS。getstring(' number ');
五。添加(RS。getstring(' bookName ');
DTM。addrow(v);
}
}catch(异常e){
e。printstacktrace();
}最后{
尝试{
dbutil。关闭con(con);
} catch(异常e) {
//TODO自动生成的捕捉块
e。printstacktrace();
}
}
}
/**
* 买家信息修改
*/
私有void consumerUpdateActionEvet(ActionEvent evt){
字符串id=id txt。gettext();
string consumer name=consumer name XT。gettext();
字符串sex=sex txt。gettext();
字符串age=age txt。gettext();
字符串编号=数字txt。gettext();
字符串bookName=bookName txt。gettext();
if(StringUtil.isEmpty(id)){
joptionpane。showmessagedialog(null,请选择要修改的记录');
返回;
}
if(字符串util。isempty(消费者名称)){
joptionpane。showmessagedialog(null,购书者名称不能为空');
返回;
}
if(StringUtil.isEmpty(age)){
joptionpane。showmessagedialog(null,年龄不能为空');
返回;
}
if(字符串util。isempty(number)){
joptionpane。showmessagedialog(null,联系方式不能为空');
返回;
}
if(字符串util。isempty(bookName)){
joptionpane。showmessagedialog(null,图书名称不能为空');
返回;
}
if(StringUtil.isEmpty(sex)){
joptionpane。showmessagedialog(null,性别不能为空');
返回;
}
消费者消费者=新消费者(Integer.parseInt(id),consumerName,性别,年龄,编号,图书名称);
连接con=空
尝试{
con=db util。getcon();
con=db util。getcon();
int modifyNum=消费者Dao。更新(con,消费者);
if(modifyNum==1){
joptionpane。showmessagedialog(null,修改成功');
这个。重置值();
this.fillTable(新消费者());
}否则{
joptionpane。showmessagedialog(null,修改失败');
}
}catch(异常e) {
e。printstacktrace();
joptionpane。showmessagedialog(null,修改失败');
}最后{
尝试{
dbutil。关闭con(con);
} catch(异常e) {
//TODO自动生成的捕捉块
e。printstacktrace();
}
}
}
3.6订单管理模块
此模块用于图书订单管理,查找,修改,删除等功能的实现。
/**
* 订单修改事件
*/
受保护的void orderUpdateActionPerformed(ActionEvent evt){
字符串id=this。id txt。gettext();
if(StringUtil.isEmpty(id)){
joptionpane。showmessagedialog(null,请选择要修改的记录');
返回;
}
字符串地址=this。addresseetxt。gettext();
字符串编号=this。号码txt。gettext();
字符串delivery ment=this。deliverymenttxt。gettext();
字符串支付方式=this。付款方式txt。gettext();
字符串发货地址=this。送货地址文本。gettext();
if(StringUtil.isEmpty(收件人)){
joptionpane。showmessagedialog(null,收件人不能为空!');
返回;
}
if(字符串util。isempty(number)){
joptionpane。showmessagedialog(null,购买数量不能为空!');
返回;
}
if(字符串util。isempty(delivery)){
joptionpane。showmessagedialog(null,运送方式不能为空!');
返回;
}
if(字符串util。isempty(支付方式)){
joptionpane。showmessagedialog(null,支付方式不能为空!');
返回;
}
if(字符串util。isempty(支付方式)){
joptionpane。showmessagedialog(null,收件地址不能为空!');
返回;
}
书书=(书)这个。书名JCB。getselecteditem();
int bookId=book。getid();
订单订单=新订单(整数。解析int(id),收件人,编号,送货,付款方式,送货地址,
bookId);
连接con=空
尝试{
con=db util。getcon();
int addNum=orderDao.update(con,order);
if(addNum==1) {
joptionpane。showmessagedialog(null,订单修改成功!');
重置值();
这个。填充表格(new Order());
}否则{
joptionpane。showmessagedialog(null,订单修改失败!');
}
}catch(异常e) {
e。printstacktrace();
}最后{
尝试{
dbutil。关闭con(con);
} catch(异常e) {
//TODO自动生成的捕捉块
e。printstacktrace();
joptionpane。showmessagedialog(null,订单添加失败!');
}
}
}
4.数据库设计
4.1系统数据库设计
使用sql语句查询项目存储数据用到的数据库表格:
1.管理员信息表
列名数据类型长度主键非空自增id int 11usenamevarchar 20 password varchar 20
2.图书类型信息表
列名数据类型长度主键非空自增id int 11booktypenamevarchar 20 booktypedesvarchar 20
3.图书信息表
列名数据类型长度主键非空自增bookname int 11author varchar 20 sex varchar 10价格浮动10 book typeid 11 bookdescvarchar 1000
4.订单信息表
列名数据类型长度主键非空自增buyind 11name varchar 20 sex varchar 20 buybooknametelvarchar 20 way varchar 20 address varchar 20
5.买家信息表
列名数据类型长度主键非空自增id int 11consumernamevarchar 50 sexvarchar 50 agevarchar 50 numbervarchar 50 bookname varchar 50
4.2系统E-R图设计
5.JDBC连接数据库
一定要安装数据库jdbc驱动包!
代码展示:
包com.util
导入Java。SQL。连接;
导入Java。SQL。司机经理;
/**
* 数据库工具类
*/
公共类DbUtil {
私有字符串JDBC。MySQL。CJ。JDBC。'驱动程序';//驱动名称
数据库连接地址由于数据库为最新版本导致驱动名称已改为com.mysql.cj.jdbc.Driver
//由于时区错乱执行命令给关系型数据库服务器设置时区为东八区serverTimezone=GMT+8
私有字符串dbUrl=' JDBC:MySQL://localhost:3306/db _ book?服务器时区=GMT+8 ';//数据库连接地址
私有字符串dbuserName=' root//用户名
私有字符串dbpassWord=' abc123//密码
/**
* 获取数据库连接
*/
公共连接getCon()引发异常{
班级。forname(JDBC名);
驱动程序管理器。获取连接(dbUrl,dbuserName,db password);
返回精读
}
/**
* 关闭数据库连接
*/
公共无效关闭图标(连接Con)引发异常{
如果(con!=null){
con . close();
}
}
公共静态void main(String[] args) {
DbUtil DbUtil=new DbUtil();
尝试{
dbutil。getcon();
System.out.println('数据库连接成功!');
} catch(异常e) {
//TODO自动生成的catch块
e . printstacktrace();
System.out.println('数据库连接失败');
}
}
}
以上是Java实战的网上书店管理系统的实现细节。更多关于Java书店管理系统的信息,请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。