-
2018-08-18 09:26:06
目录
- 需求分析
1.仓库管理系统的背景:
计算机的应用普及,目前大多数企业的仓库管理数据资料已开始采用计算机数据系统管理,仓库的管理的操作自动化和信息电子化 ,为企业得飞速发展提供无限潜力,采用计算机管理信息系统已成为仓库管理科学化和现代化的重要标志。
2.仓库管理系统的意义:
仓库管理系统帮助企业解决了以下问题:
(1)采集输入代替手工输入减少了失误率。
(2)使产品信息能快速录入到数据库中
(3)减少了原材料的浪费和成品的丢失。
(4)为企业把生产和销售整合在一起。
(5)提高工作人员的工作效率
3.仓库管理系统的主要功能:
- 系统设计
(一)系统中的数据定义
- 读取功能(void readfile)
使用函数读取数据文件,根据输入的文件名加载保存在本地的数据文件,若找不到相同文件名称,则有错误提示
- 输入功能(void input)
根据菜单提示项,进行输入编号的操作,以便进行下面的操作
- 显示功能(void display)
显示商品的姓名,价格,数量以及编号
- 查找功能(void seek)
通过输入选择相关的查询函数来完成查找功能,若相同则输出,若不同则输出错误提示
- 修改功能(void modify)
通过输入姓名或编号来查找要进行修改的信息,以便修改,之后进行保存
- 删除功能(void delete)
输入要删除的商品的姓名或编号进行删除,之后保存,若输入的查找不到,则错误提示
- 系统的概要设计
- 系统的详细设计
1.输入功能
输入商品信息,即增加商品信息(输入商品的姓名,编号,数量和价格),后进行保存
2.输出功能
输出商品信息,即商品信息的显示(可以输出商品的姓名,数量,编号和价格)
3.查找功能
查找商品信息,通过商品的姓名或编号进行查询,查找商品的价格和数量
4.删除函数
删除商品信息,通过输入商品的编号进行删除
5.修改功能
修改商品信息,选择按编号或者姓名进行修改,可以修改商品的姓名,数量,价格和编号。后进行保存
- 系统的核心算法
伪代码:
输入相应序号,通过switch语句实现相应功能
输入0:系统帮助及说明,使用printf打印提示信息,用scanf函数输入详细信息
输入1:刷新商品信息,使用printf打印提示信息,用scanf函数输入详细信息
输入2:查询商品信息,使用printf打印提示信息,用scanf函数输入详细信息
输入3:修改商品信息,使用printf打印提示信息,用scanf函数输入详细信息
输入4:增加商品信息,使用printf打印提示信息,用scanf函数输入详细信息
输入5:删除商品信息,使用printf打印提示信息,用scanf函数输入详细信息
输入6:显示当前信息,使用printf打印提示信息,用scanf函数输入详细信息
输入7:退出系统
三、系统编码及运行
(一)系统开发涉及的软件
代码编写工具:CodeBlocks
画图工具:系统自带的画图软件
文档撰写工具:Microsoft Word
(二)系统运行界面及结果
图1.系统登录界面
图2.运行界面(增加商品信息)
图3.运行界面(查询商品信息)
图4.运行界面(修改商品信息)
图5.运行界面(删除商品信息)
四、系统测试
运行时,进入界面,可根据需求选择七种功能。例如:
输入4,可以增加商品信息,选择要增加的个数,输入要增加的商品姓名,编号,个数及价格;
输入6,可以显示当前信息
输入3,可以修改商品信息,输入商品编号进行修改;
输入5,可以删除商品信息,输入商品编号进
行删除
五、总结
一.实验功能:
管理员可以对仓库进行各种操作,包括入库操作,出库操作,查询操作及修改操作
二.收获:
1:明白了系统的3大步骤:
- 软件设计:如系统框架设计,数据库设计。
- 程序编码:在程序编码中必定要制定统一,符合标准的编写规范。保证程序的可读性,易维护性,提高程序运行效率。
- 软件测试:在设计完成后要进行严密的测试,发现存在问题加以纠正。
2:明白工作中需要能力,素质,知识之外,更重要得是学会了如何去做好一件事,懂得享受过程。遇到问题,冷静,想办法解决,排除障碍,最后获得成功。
三.未来学习目标:
1.培养自己的综合能力、人际交往能力。我们不仅要注重专业学习,还要与实践相结合。这不是一朝一日就能完全搞得定的,因此,能否学到东西,学到东西后能否适应社会,走向社会时候能否找到自己满意的工作,这些都是我们应该要去努力和思考的事
2.培养自己的持续学习能力。我们要有自己有效的学习方法,但是如何让自己成为学习型人才,保持持续学习能力,除了有清晰的长中短期目标之外,还有学会如何学习,如何积累,如何利用知识,如何结合实践与未来目标,这些都会使我们清晰利用自己的时间,保持较强的持续学习能力。大学并不是想象的那样轻松,我们依就需要努力学习,为以后步入社会打下坚实的基础。
源代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define BUFLEN 100
#define LEN 15 /* 商品信息编号和姓名最大字符数 */
#define N 100 /* 最大商品数*/
static int in=0;
struct record
{
char name[LEN+1]; /* 商品名称 */
int num; /* 编号 */
int price; /* 价钱 */
int amount; /*数量 */
char items;
}
items[N];static int k=1,n,m; /* 定义全局变量 */
void readfile();/* 函数声明 */
void insert();//输入函数
void display();//显示函数
void seek();//查找函数
void modify();//修改函数
void del();//删除函数
void menu();
int main()
{
while(k)
menu();
system("pause");
return 0;
}
void help()
{
printf("\n0.欢迎使用系统帮助!\n");
printf("\n1.按照菜单提示键入数字代号;\n");
printf("\n2.谢谢您的使用!\n");
}
void readfile()/* 建立信息 */
{
char *p="cangku.txt";
FILE *fp;
int i=0;
if ((fp=fopen("cangku.txt","w+"))==NULL)
{
printf("Open file %s error! Strike any key to exit!",p);
system("pause");
exit(0);
}
while(fscanf(fp,"%s%d%d%d",items[i].name,&items[i].amount,&items[i].num,&items[i].price)==8)
{
i++;i=i;
}
fclose(fp);
n=i;
printf("录入完毕!\n");
}
void seek() /*查找*/
{
int i,item,flag;
char s1[21];
int s2;/* 以商品姓名和编号最长长度+1为准 */
printf("------------------\n");
printf("-----1.按编号查询-----\n");
printf("-----2.按姓名查询-----\n");
printf("-----3.退出本菜单-----\n");
printf("------------------\n");
while(1)
{
printf("请选择子菜单编号:");
scanf("%d",&item);
flag=0;
switch(item)
{
case 1:printf("请输入要查询的商品的编号:\n");
scanf("%d",&s2);
for(i=0;i<n;i++)
if(items[i].num==s2)
{
flag=1;
printf("商品姓名 商品编号 数量 价格 \n");
printf("--------------------------------------------------------------------\n");
printf("%s %d %d %d\n", items[i].name,items[i].num,items[i].amount,items[i].price);
}
if(flag==0)
printf("该编号不存在!\n");
break;
case 2:printf("请输入要查询的商品的名称:\n");
scanf("%s",s1);
for(i=0;i<n;i++)
if(strcmp(items[i].name,s1)==0)
{
flag=1;
printf("商品姓名 商品编号 数量 价格 \n");
printf("--------------------------------------------------------------------\n");
printf("%s %d %d %d\n", items[i].name,items[i].num,items[i].amount,items[i].price);
}
if(flag==0)
printf("该姓名不存在!\n");
break;
case 3:return;
default:
printf("请在1-3之间选择\n");
}
}
}
void modify() /*修改信息*/
{
int i,item,number;
char s2[15];
int s1; /* 以姓名和编号最长长度+1为准 */
printf("请输入要要修改的商品的编号:\n");
scanf("%d",&s1);
for(i=0;i<n;i++)
if(items[i].num==s1) /*比较字符串是否相等*/
number=i;
printf("------------------\n");
printf("1.修改姓名\n");
printf("2.修改数目\n");
printf("3.修改价钱\n");
printf("4.修改编号\n");
printf("5.退出本菜单\n");
printf("------------------\n");
while(1)
{
printf("请选择子菜单编号:");
scanf("%d",&item);
switch(item)
{
case 1:printf("请输入新的名称:\n");
scanf("%s",s2);
strcpy(items[number].name,s2);
break;
case 2:printf("请输入新的数目:\n");
scanf("%d",&items[number].amount);
break;
case 3:printf("请输入新的价钱:\n");
scanf("%d",&s1);
items[number].price=s1;
break;
case 4:printf("请输入新的编号:\n");
scanf("%d",&s1);
items[number].num=s1;
break;
case 5:return;
default:printf("请在1-5之间选择\n");
}
}
}
void sort()/*按编号排序*/
{
int i,j,*p,*q,s;
char temp[10];
int s1;
for(i=0;i<n-1;i++)
{
for(j=n-1;j>i;j--)
if(items[j-1].num==items[j].num)
{
s1=items[j-1].num;
items[j-1].num=items[j].num;
items[j].num=s1;
strcpy(temp,items[j-1].name);
strcpy(items[j-1].name,items[j].name);
strcpy(items[j].name,temp);
s1=items[j-1].amount;
items[j-1].amount=items[j].amount;
items[j].amount=s1;
s1=items[j-1].price;
items[j-1].price=items[j].price;
items[j].price=s1;
p=&items[j-1].amount;
q=&items[j].amount; s=*q; *q=*p; *p=s;
}
}
}
void insert() /*插入函数*/
{
int j;
printf("请输入待增加的商品数:\n");
scanf("%d",&m);
for(j=in;j<m+in;j++)
{
printf("请输入第 %d 个商品的名称:\n",j+1);
scanf("%s",items[j].name);
printf("请输入第 %d 个商品的编号:\n",j+1);
scanf("%d",&items[j].num);
printf("请输入第 %d 个商品的数目:\n",j+1);
scanf("%d",&items[j].amount);
printf("请输入第 %d 个商品的价格\n",j+1);
scanf("%d",&items[j].price);
}
in=in+m;
while(j<n+m);
{
n+=m;
printf("录入完毕!\n\n");
sort();
}
}
void del()
{
int i,j,flag=0;
int s1;
printf("请输入要删除商品的编号:\n");
scanf("%d",&s1);
for(i=0;i<s1;i++)
if(items[i].num==s1)
{
flag=1;
for(j=i;j<in;j++)
items[j]=items[100];
}
if(flag==0)
printf("该编号不存在!\n");
if(flag==1)
{
printf("删除成功,显示结果请选择菜单6\n");
n--;
}
}
void display()
{
int i;
printf("所有商品的信息为:\n");
printf("商品姓名 商品编号 数量 价格\n");
printf("--------------------------------------------------------------------\n");
for(i=0;i<in;i++)
{
printf("%s %d %d %d\n", items[i].name,items[i].num,items[i].amount,items[i].price);
}
}
void menu()/* 界面 */
{
int num;
printf("*********************系统功能菜单************************ \n");
printf(" ---------------------- ---------------------- \n");
printf(" ********************************************* \n");
printf(" * 0.系统帮助及说明 * * 1.刷新商品信息 * \n");
printf(" ********************************************* \n");
printf(" * 2.查询商品信息 * * 3.修改商品信息 * \n");
printf(" ********************************************* \n");
printf(" * 4.增加商品信息 * * 5.按编号删除信息 * \n");
printf(" ********************************************* \n");
printf(" * 6.显示当前信息 * * 7.退出系统 * \n");
printf(" ********************** ********************** \n");;
printf(" ---------------------- ---------------------- \n");
printf("请选择菜单编号:");
scanf("%d",&num);
switch(num)
{
case 0:help();
break;
case 1:readfile();
break;
case 2:seek();
break;
case 3:modify();
break;
case 4:insert();
break;
case 5:del();break;
case 6:display();
break;
case 7:k=0;
break;
default:printf("请在0-8之间选择\n");
}
}
更多相关内容 -
JAVA实现商品信息管理系统
2019-10-14 20:43:56超市商品管理系统 题目要求 超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。 主要完成对商品的销售、统计和简单管理。 这个题目相对简单...超市商品管理系统
点此下载源码
题目要求
超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。主要完成对商品的销售、统计和简单管理。这个题目相对简单,可以用一张表实现信息的保存和处理,因此不再给出数据库设计参考。
功能要求
(1)销售功能。
购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入购买的数量,进行相应计算。如果库存量不够,给出提示信息,结束购买。
(2)商品简单管理功能。
添加功能:主要完成商品信息的添加。
查询功能:可按商品类别、商品名称、生产厂家进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。
修改功能:可根据查询结果对相应的记录进行修改。
删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。
(3)统计功能。
输出当前库存中所有商品的总数及详细信息;可按商品的价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。
(7)商品信息存盘:将当前程序中的商品信息存入文件中。
(8)读出信息:从文件中将商品信息读入程序。问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;设计思路
可以对超市商品进行管理的人员主要有超市的商家和顾客,商家可以对超市的商品进行增﹑删﹑改﹑查操作,而顾客只能查询和购买商品。增加商品时,要添加商品的全部信息(编号﹑类别﹑名称﹑价格﹑库存量﹑品牌﹑生产厂家),删除时只需要输入商品编号便可删除该商品的全部信息,修改时要先输入商品编号,然后再确定要修改该商品的哪一个值,以及要将该值修改为什么,查询时只要输入想要查询商品的任意一个信息并选择商品类别便可查出该商品的全部信息。
实现:
建立并连接数据库与基本表
连接数据库时需要用到JDBC,它由Java编程语言编写的类和接口组成,是实现Java与各种数据库连接的关键,提供了将Java与数据库连接起来的程序接口,使用户可以以SQL的形式编写访问请求,然后传给数据库,其结果再由这一接口返回,从而实现对数据库中数据操作的目的。超市商品管理系统采用了MySQL作为数据库,所建的系统数据库名为“goods”。通过需求分析、概念设计与逻辑设计,可知该系统数据库只需建立一个商品表即可
结构设计
该系统用于对商品的基本信息进行管理,主要包括添加、修改、查询和删除商品基本信息,为了方便,全部操作均在界面中完成。由此,将该系统结构设计为登录模块、顾客模块、商家模块。由于涉及界面设计,因此调用了java.awt.、java.awt.event.、javax.swing.、java.util.、javax.swing.event.*、java.sql.*等包。
实现登录模块
要生成一个界面,可应用AWT知识。设置其名字为商品信息管理系统;设置布局管理器为(null)布局管理器,方便往其中放组件;设置窗口大小和位置,还要设置窗口可见性。
生成界面后,接下来就需要实现每个功能,第一个功能就是要对操作对象的身份进行选择,这里要用下拉列表的形式进行选择,也可以用单选按钮来完成这个功能。在这项功能中,首先要选择身份,所以要定义一个JLabel来说明,定义完JLabel后,就需要定义一个JComoBox,下拉列表框。
输入用户名和密码。需要用两个JLabel来指明需要输入用户名和密码。输入用户名需要定义一个JTextField,单文本框。同时输入文本,但输入密码和输入用户名是不一样的,它需要定义成JPasswordField,它的输出结果为“*****”这样的形式。
创建两个按钮,一个是登录按钮,另一个是取消登录按钮,用来输入的用户名和密码及选择的身份进行提交,然后根据选择的身份来选择需要进入那个界面,其代码如下:public class info_Manage extends JFrame implements ActionListener{ private JLabel username = new JLabel("用户名"); private JTextField userName = new JTextField(); private JLabel psw = new JLabel("密码"); private JPasswordField Psw = new JPasswordField(); JLabel jlp=new JLabel("身份"); String str[]={"顾客","商家"}; JComboBox jcb=new JComboBox(str); private JButton jb1 = new JButton("登录"); private JButton jb2 = new JButton("取消"); public info_Manage(){ this.setTitle("商品信息管理系统"); this.setLayout(null); username.setBounds(100,50,100,20); this.add(username); userName.setBounds(150,50,100,20); this.add(userName); psw.setBounds(100,100,100,20); this.add(psw); Psw.setBounds(150,100,100,20); this.add(Psw); jlp.setBounds(100,150,100,20); this.add(jlp); jcb.setBounds(150,150,100,20); this.add(jcb); jcb.addActionListener(this); jb1.setBounds(100,210,60,20); this.add(jb1); jb1.addActionListener(this); jb2.setBounds(200,210,60,20); this.add(jb2); jb2.addActionListener(this); this.setVisible(true); this.setBounds(10,10,390,330); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new info_Manage(); } public void actionPerformed(ActionEvent e) { if (e.getSource() == jb1) { String name=userName.getText(); String password = new String(Psw.getPassword()); if(name.length()==0&&password.length()!=0) JOptionPane.showMessageDialog( null, "请输入用户名"); else if(name.length()!=0&&password.length()==0) JOptionPane.showMessageDialog( null, "请输入密码"); else if(name.length()==0&&name.length()==0) JOptionPane.showMessageDialog( null, "请输入用户名和密码"); else if(jcb.getSelectedIndex()==0&&name.length()!=0&&name.length()!=0) new custom_Manage(); else if(jcb.getSelectedIndex()==1&&name.length()!=0&&password.length()!=0) new seller_Manage(); } else if(e.getSource()==jb2) System.exit(0); } }
运行结果
实现顾客操作界面
当选择“顾客”时,单击“登录”按钮就可以进入顾客操作系统了,然后就可以对摸个学生的信息进行输入、修改和删除,也能对同学的信息进行查询和对程序进行查询。当打算离开时,还要有一个选项用来退出学生信息管理系统。根据设计构想,首先要搭建一个界面,然后把顾客的操作分为2大块,分别是商品信息查询和退出登录,其部分代码如下:
class custom_Manage extends JFrame implements ActionListener{ JMenu cm=new JMenu("请选择您需要的操作:"); JButton cm1=new JButton("商品信息查询"); JButton cm2=new JButton("退出登录"); public void actionPerformed(ActionEvent e){ if(e.getSource()==cm1)new SetGoods(); else if(e.getSource()==cm2) this.setVisible(false); } }
运行结果
商家操作界面相比顾客操作界面多了商品信息的增加﹑删除和修改功能,其实现方法与顾客操作界面类似,在此不再赘述。添加商品信息
每个按钮都对应着一个操作界面,当点击商家操作下的“增加商品信息”按钮时,将弹出如图所示的界面,它调用了AddGoods.java类实现该功能。通过对“增加信息”这一子菜单设置监听,弹出界面。AddGoods.java的部分代码如下:
class AddGoods extends JFrame implements ActionListener { JLabel JL = new JLabel("添加基本信息:"); JLabel number = new JLabel("商品编号"); JTextField Number = new JTextField(); JLabel JClass=new JLabel("类别"); String str[]={"食品","化妆品","日用品","饮料"}; JComboBox jcb=new JComboBox(str); JLabel name = new JLabel("商品名称"); JTextField Name = new JTextField(); JLabel price=new JLabel("商品价格"); JTextField Price = new JTextField(); JLabel storage= new JLabel("库存量"); JTextField Storage = new JTextField(); JLabel brand= new JLabel("品牌"); JTextField Brand = new JTextField(); JLabel vender = new JLabel("生产厂家"); JTextField Vender = new JTextField(); JTextField jt=new JTextField(10); JButton Add = new JButton("添加"); JButton Reset = new JButton("重置"); JButton Exit = new JButton("退出"); String sql = ""; public void actionPerformed(ActionEvent e) { if(e.getSource()==Add) { String snumber=Number.getText(); String svender=Vender.getText(); String sname=Name.getText(); String sprice=Price.getText(); String sstorage=Storage.getText(); String sbrand=Brand.getText(); try { Connection cot=ConnectionFactory.getConnection(); Statement stm=cot.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_UPDATABLE ); int s=jcb.getSelectedIndex(); String jc=null; if(s==0)jc="食品"; else if(s==1)jc="化妆品"; else if(s==2)jc="日用品"; else if(s==3)jc="饮料"; sql="insert into goods values('"+snumber+"','"+jc+"','"+sname+"',"+sprice+","+sstorage+",'"+sbrand+"','"+svender+"')"; int n=stm.executeUpdate(sql); if(n!=0)JOptionPane.showMessageDialog(null,"添加成功!"); else JOptionPane.showMessageDialog(null,"该商品已存在!"); }catch(Exception ee) { ee.printStackTrace(); } } if(e.getSource()==Reset) { Number.setText(null); Name.setText(null); Vender.setText(null); Price.setText(null); Storage.setText(null); Brand.setText(null); } if(e.getSource()==Exit) { this.setVisible(false); } } }
运行结果
删除商品信息
当选择商家操作系统下的删除商品信息的按钮时,将弹出图4-4所示的界面,它调用了DeleteGoodst.java类实现该功能,其部分代码如下:
class DeleteGoods extends JFrame implements ActionListener { JMenu JL = new JMenu("删除基本信息"); JLabel number = new JLabel("商品编号"); JTextField Number = new JTextField(); JButton Del = new JButton("删除"); JButton Reset = new JButton("重置"); JButton Exit = new JButton("退出"); String sql = ""; public void actionPerformed(ActionEvent e) { if (e.getSource() == Del) { Statement stm=null; Connection cot; try { cot=ConnectionFactory.getConnection(); stm= cot.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_UPDATABLE ); sql ="delete from goods where number='"+Number.getText()+"'"; int n = stm.executeUpdate(sql); if (n!=0) JOptionPane.showMessageDialog(null, "删除成功!"); else JOptionPane.showMessageDialog(null, "删除失败!"); } catch (SQLException e1) { JOptionPane.showMessageDialog(null, "此商品不存在!"); e1.printStackTrace(); } } if (e.getSource() == Reset) { Number.setText(null); } if (e.getSource() == Exit) this.setVisible(false); } }
如图,只需输入商品编号便可删除该商品的全部信息。
修改商品信息
当选择商家操作系统下的“修改信息”按钮时,将弹出界面,只要输入商品的编号,然后选择所要修改的该编号商品的列名,最后输入想要将其修改成为的值,即可修改该商品的某一项信息。用了GetGoods.java类实现该功能。其部分代码如下:
class GetGoods extends JFrame implements ActionListener{ JLabel JL = new JLabel("修改商品信息", JLabel.CENTER); JLabel number = new JLabel("请输入您要修改的商品编号"); JTextField Number = new JTextField(); JLabel massage = new JLabel("请输入您要修改的商品信息"); JTextField Massage = new JTextField(); JLabel afterget=new JLabel("您想要将该列信息修改为:"); JTextField Afterget = new JTextField(); JTextField jt=new JTextField(10); JButton Get = new JButton("修改"); JButton Reset = new JButton("重置"); JButton Exit = new JButton("退出"); String sql = ""; public void actionPerformed(ActionEvent e){ if(e.getSource()==Get){ Statement stm=null; Connection cot; try{ cot=ConnectionFactory.getConnection(); stm=cot.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_UPDATABLE ); sql="update goods set "+Massage.getText()+"='"+Afterget.getText()+"' where number='"+Number.getText()+"'"; int n=stm.executeUpdate(sql); if(n!=0)JOptionPane.showMessageDialog(null,"修改成功!"); else JOptionPane.showMessageDialog(null,"修改失败!"); }catch(Exception er){ er.printStackTrace(); } } if(e.getSource()==Reset){ Number.setText(null); Massage.setText(null); Afterget.setText(null); } if(e.getSource()==Exit) { this.setVisible(false); } } }
运行结果
查询商品信息
当选择顾客或者商家操作系统下的“查询商品信息”按钮时,将弹出如图所示的界面,它调用了SetGoods.java类实现该功能,部分代码如下:
class SetGoods extends JFrame implements ActionListener { JLabel JL = new JLabel("请用以下任意一种方式查询您想要的东西", JLabel.CENTER); JLabel number = new JLabel("商品编号"); JTextField Number = new JTextField(); JLabel JClass=new JLabel("类别"); String str[]={"无","食品","化妆品","日用品","饮料"}; JComboBox jcb=new JComboBox(str); JLabel name = new JLabel("商品名称"); JTextField Name = new JTextField(); JLabel price=new JLabel("商品价格"); JTextField Price = new JTextField(); JLabel brand= new JLabel("品牌"); JTextField Brand = new JTextField(); JLabel vender = new JLabel("生产厂家"); JTextField Vender = new JTextField(); JTextField jt=new JTextField(10); JButton Set = new JButton("查询"); JButton purchase = new JButton("购买"); JButton Reset = new JButton("重置"); JButton Exit = new JButton("退出"); String sql = ""; public void actionPerformed(ActionEvent e) { if (e.getSource() == Set) { Statement stm=null; Connection cot; try{ cot=ConnectionFactory.getConnection(); stm=cot.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE ,ResultSet.CONCUR_UPDATABLE ); if(Number.getText()!=null) sql="select * from goods where number='"+Number.getText()+"'"; else if(Name.getText()!=null) sql="select * from goods where name='"+Name.getText()+"'"; else if(Price.getText()!=null) sql="select * from goods where price='"+Price.getText()+"'"; else if(Brand.getText()!=null) sql="select * from goods where brand='"+Brand.getText()+"'"; else if(Vender.getText()!=null) sql="select * from goods where vender='"+Vender.getText()+"'"; ResultSet rs=stm.executeQuery(sql); while(rs.next()) { System.out.println("商品编号: "+Number.getText()); int s=jcb.getSelectedIndex(); if(s==0) JOptionPane.showMessageDialog( null, "请选择商品类别!" ); else if(s==1)System.out.println("商品类别: 食品"); else if(s==2)System.out.println("商品类别: 化妆品"); else if(s==3)System.out.println("商品类别: 日用品"); else if(s==4)System.out.println("商品类别: 饮料"); System.out.println("商品名称: "+rs.getString("name")); System.out.println("价格: "+rs.getString("price")); System.out.println("库存量: "+rs.getString("storage")); System.out.println("品牌: "+rs.getString("brand")); System.out.println("生产厂家: "+rs.getString("vender")); } }catch(Exception ee){ JOptionPane.showMessageDialog( null, "该商品不存在!" ); ee.printStackTrace(); } } else if(e.getSource()==purchase){new Purchase();} else if(e.getSource()==Reset){ Number.setText(null); Name.setText(null); Vender.setText(null); Price.setText(null); Brand.setText(null); } else if(e.getSource()==Exit) { this.setVisible(false); }}}
运行结果
退出系统
当在对商品进行增加﹑删除﹑修改和查询的界面时,点击“退出”按钮,即可弹出如图4-7所示界面,它调用了UsingExit.java类实现该功能,部分代码如下:
class UsingExit extends JFrame implements ActionListener{ JLabel Info=new JLabel("确认退出?"); JButton JExit=new JButton("确认"); JButton Cancel=new JButton("取消"); public void actionPerformed(ActionEvent e){ if(e.getSource()==JExit) System.exit(0); else if(e.getSource()==Cancel) setVisible(false); } }
运行结果如图:
点此下载源码
-
简单的商品信息管理系统(Java 和sql server数据库)源码
2019-05-28 22:41:18简单的商品信息管理系统(Java 和sql server数据库)源码源码打包链接:https://pan.baidu.com/s/1MXY8349D9D_ZZZY8AfrVQw
根据老师要求上交的数据库作业,做个简单的增删改查功能,注意数据库是微软的sql server
MySQL版本的请移步到: https://blog.csdn.net/weixin_45114101/article/details/123612838
参考的学生管理系统
链接: link.
https://blog.csdn.net/XHS_12302/article/details/51910637
在此之前我也没学过java的图形界面,本人现在大一,通过揣摩参考资料 自己一句一句在api帮助文档里查找 然后简单加了点注释,api文档真的对自学帮助很大,不懂就自己查一下看一下效果图
用户名admin
密码123登录后 主界面
部分代码注释
数据库建立wtf
数据库名为wtf,表为info## info表的sql代码 use wtf; drop table info; create table info( sno varchar(20) primary key, sname varchar(40) not NULL, sprice varchar(10) ); insert into info values('001','伊利多','2.5'); insert into info values('002','巧克力','4'); insert into info values('003','奥利奥','11'); insert into info values('2411','棒棒糖','7'); insert into info values('201','酸奶','30'); insert into info values('201402','薯片','30');
登录数据库有两种方式
一种Windows登录 一种用户名密码登录,通过查阅许多帮助,本人使用不了windows登录数据库所以用后者,数据库登录名:sa 密码:1
java连接数据库代码
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.swing.JOptionPane; public class Dbcon { public final static Connection getconnectin() { Connection con = null;// 连接数据库 String url ="jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=wtf"; try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 注册驱动 String user = "sa";// 登录数据库的用户密码 String password = "1"; //con = DriverManager.getConnection(url, user, password); con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=wtf"); con.setCatalog("wtf");// 选择要在其中进行工作的此 Connection对象数据库的子空间(wtf数据库)。 } catch (SQLException sqle) { System.out.println(sqle + "连接错误"); } catch (Exception e) { System.out.println(e + "第二个错误"); } return con;//返回Connection对象 } }
最终打包源码+数据库+jar文件
514.jar是可以直接运行的 如果有将java的话,还有数据库wtf,bbb是工程名,即所有源码都在里面
oh,还有连接数据库用的sqljdbc.rar bbb工程里面好像有,顺便打包吧
打包链接链接:https://pan.baidu.com/s/1MXY8349D9D_ZZZY8AfrVQw
提取码:bs6f
复制这段内容后打开百度网盘手机App,操作更方便哦对了 里面有个bug 就是修改信息,我用的是先删除后增加,而不是update 语句,所以如果修改的时候输入学号删除信息又不输入新的信息点确定 原来的就会被删掉
还有用不了Windows连接,!!!数据库登录名和密码自己在代码里改 String user = “sa”;// 登录数据库的用户密码
String password = “1”;
这个分割线--------------------------------------------------------------------------------------
距离文章发布到现在快4年了,sql server的环境我没有了,我并不能解决你们所有人遇到的问题,希望你们能自己解决遇到的问题
2022.3.19更新 修改了标题为商品信息管理系统
链接: 新版源码+运行文件
提取码: su21
修复了主框架的标题 :商品信息管理系统
项目目录介绍
压缩包里有项目源码,里面的bbb文件夹就是项目源码
问题1: 中文显示乱码
那时刚入门,不懂得设置encode编码格式,所以代码都是以GBK格式 编码的,导致一些以UTF-8编码为环境的显示乱码.(tips:更多人用utf-8编码,utf-8才是国际化)
解决方法1 修改eclipse的编码: 设置你的编码格式为GBK
确保编码都是gbk解决方法2 修改文件编码: 把我的代码文件由gbk重新编码为utf-8
问题2: 数据库连接不上
数据库环境,帐号密码如果不一样,什么都不改,当然连不上
- 检查数据库是否能登录成功,数据库wtf是否建立了
- 数据库帐号密码不一样,在Dbcon.java里面修改,重新生成jar 文件才生效,改完要重新打包成jar包,再运行你改完代码生成的jar包(重新打包下面会介绍)
问题3: 标题改完不生效,任何配置改完没效果
hxd,改完代码,是不是要重新编译,生成新的文件,执行新的文件才实现改动,只改代码,不就只是改了源代码里的字吗.
改完代码,保存,重新打包,运行新的jar文件,才看得到变动问题4: 改完代码,如何重新打包成jar
举例: 把登录页面的标题514 改为 " 改标题 "
ctrl+s 保存哦
可以先在eclipse 运行LoginIn.java查看改完效果导出为可运行jar包👇
在项目右键 选择export 导出
导出成功,忽略警告
在桌面上就存在我们新导出的2.jar 双击运行,标题修改成功(登录页背景图片没了?下面会说解决方法)
问题5: 登录页背景图片不显示
要把2.jpg放到 可运行jar包的同级目录下,如
图片名源代码规定是2.jpg,可以在LoginIn 里修改
代码优化建议
bug:里面有个bug 就是修改信息,我用的是先删除后增加,而不是update 语句,所以如果修改的时候输入学号删除信息又不输入新的信息点确定 原来的就会被删掉
不想优化的话,演示的时候就不要把这bug显示出来呗
or
修改逻辑代码,先查有没有这个商品,没有就弹窗显示错误,有就显示修改商品界面(修改商品界面自己新加),而不是调用增加商品界面,然后再编写Dbcon.update()方法去执行update语句这只是优化思路,由于我没有完整的环境,就没有实现这个优化了
另外,有优化后的
简单的商品信息管理系统,(Java 和MySQL版本)
https://blog.csdn.net/weixin_45114101/article/details/123612838
-
IDEA+Java+SSM+Jsp+Mysql实现Web商品信息管理系统
2022-03-20 11:23:31Java+SSM+Bootstrap+Jsp+Mysql实现Web商品信息管理系统,sql在sql文件夹下面。系统功能包含,注册登录系统,管理员对商品信息的增删改查。界面良好,功能完善。目录
一、系统介绍
1.开发环境
开发工具:IDEA2018
JDK版本:Jdk1.8
Mysql版本:8.0.13
2.技术选型
Java+SSM+Bootstrap+Jsp+Mysql
3.系统功能
1.登录系统,注册系统。
2.管理员商品信息的增删改查,包含图片上传功能。
图片上传位置:out\artifacts\Commodity_war_exploded\upload
4.数据库文件
/* Navicat Premium Data Transfer Source Server : MySQL Source Server Type : MySQL Source Server Version : 80013 Source Host : 127.0.0.1:3306 Source Schema : ssm_commodity Target Server Type : MySQL Target Server Version : 80013 File Encoding : 65001 Date: 13/03/2022 23:02:18 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for items -- ---------------------------- DROP TABLE IF EXISTS `items`; CREATE TABLE `items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '商品名称', `price` float(10, 1) NOT NULL COMMENT '商品定价', `detail` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '商品描述', `pic` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品图片', `createtime` datetime(0) NOT NULL COMMENT '生产日期', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 22 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of items -- ---------------------------- INSERT INTO `items` VALUES (19, '辣条', 2.0, '卫龙辣条', '36e2f94e-a707-4021-98e3-fdb071091198.jpg', '2022-03-12 16:00:00'); INSERT INTO `items` VALUES (20, '薯片', 3.0, '乐事薯片', 'c165ca56-6a25-4bb0-b1ab-d51cedfa12d4.jpg', '2022-02-27 16:00:00'); INSERT INTO `items` VALUES (21, '冰红茶', 5.0, '康师傅冰红茶', '91eddeee-809a-4c99-8d9c-a8697024befa.jpg', '2022-03-12 16:00:00'); INSERT INTO `items` VALUES (22, '方便面', 5.0, '康师傅红烧牛肉面', 'd39ea554-7d6c-41b2-8a10-5e55d4ce69f0.jpg', '2022-03-12 16:00:00'); INSERT INTO `items` VALUES (23, '雪糕', 2.0, '乐山雪糕', 'c2a8330d-d481-423f-b3b4-3c3c9b56d5b5.jpg', '2022-03-12 16:00:00'); INSERT INTO `items` VALUES (24, '牛奶', 5.0, '蒙牛牛奶', '6cf59ac5-be74-4fc0-8ea6-892492bc542f.jpg', '2022-03-12 16:00:00'); -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名称', `password` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码', `birthday` date NULL DEFAULT NULL COMMENT '注册日期', `sex` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别,\"男\"“女”', `address` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES (1, 'admin', 'admin', '2022-03-13', '1', '湖北武汉'); INSERT INTO `user` VALUES (7, 'user', 'user', '2022-12-28', '1', '湖南长沙'); SET FOREIGN_KEY_CHECKS = 1;
5.工程截图
二、系统展示
1.系统注册
2.系统登录
3.系统主页
4.查询商品
5.添加商品
6.修改商品
三、部分代码
ItemsController
商品增删改查的逻辑控制层
package com.sjsq.controller; import java.io.File; import java.io.IOException; import java.util.List; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import com.sjsq.service.ItemsService; import com.sjsq.entity.Items; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; /** *@class_name:ItemsController *@param: 6.controller控制层 *@return: 实现业务逻辑控制 *@author:sjsq *@createtime:2022年2月22日 */ @Controller @RequestMapping("/items") public class ItemsController { @Autowired private ItemsService itemsService; //分页查询数据 @RequestMapping("/queryItems") public String queryItems(@RequestParam(value="pn",defaultValue="1")Integer pn,Model model){ //1.引入分页插件,pn是第几页,5是每页显示多少行 PageHelper.startPage(pn,5); //2.紧跟的查询就是一个分页查询 List<Items>list =itemsService.findAll(); //3.使用PageInfo包装查询后的结果,5是连续显示的条数 PageInfo<Items> pageInfo =new PageInfo<Items>(list,5); //4.使用model设置到前端 model.addAttribute("pageInfo",pageInfo); model.addAttribute("test","呵呵"); //5.最后设置返回的jsp return "showItems"; } //分页查询数据 @RequestMapping("/querySomeItems") public String querySomeItems(@RequestParam(value="pn",defaultValue="1")Integer pn,@RequestParam(value = "commodityname",required = false) String commodityname, Model model){ //1.引入分页插件,pn是第几页,5是每页显示多少行 PageHelper.startPage(pn,5); System.out.println(commodityname); //2.紧跟的查询就是一个分页查询 List<Items>list =itemsService.findSome(commodityname); //3.使用PageInfo包装查询后的结果,5是连续显示的条数 PageInfo<Items> pageInfo =new PageInfo<Items>(list,5); //4.使用model设置到前端 model.addAttribute("pageInfo",pageInfo); //5.最后设置返回的jsp return "showItems"; } // 添加商品 @RequestMapping("/addItems") public String addItems(Items items,MultipartFile items_pic,HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException{ //设置图片上传的路径 String path =request.getServletContext().getRealPath("/upload"); System.out.println("上传路径是:" + path); // 获取图片文件名 String pic_name = items_pic.getOriginalFilename(); System.out.println("原文件名是:" + pic_name); // 为了防止上传同名图片导致覆盖文件,引入随机数UUID解决。 String newname = UUID.randomUUID().toString() + pic_name.substring(pic_name.lastIndexOf(".")); System.out.println("新文件名是:" + newname); // 创建文件流对象picfile File picFile = new File(path, newname); System.out.println("文件流为:" + picFile); // 如果不存在则创建 if (!picFile.exists()) { picFile.mkdirs(); } items_pic.transferTo(picFile); items.setPic(newname); // 添加进去 itemsService.add(items); // 内部转发 return "redirect:queryItems.action"; } //删除商品 @RequestMapping("/del") public String del(int id){ itemsService.del(id); return "redirect:queryItems.action"; } //查询单条记录 @RequestMapping("/findOne") public String findOne(Model model,int id){ Items items = itemsService.findOne(id); model.addAttribute("items", items); //返给更新的方法 return "upd"; } //修改数据 @RequestMapping("/upd") public String upd(Items items,MultipartFile items_pic1,HttpServletRequest request) throws IllegalStateException, IOException{ //拿到单条数据 items.setPic(itemsService.findOne(items.getId()).getPic()); // 拿到该条数据的图片路径和名字 String path = request.getServletContext().getRealPath("/upload"); String pic_name = items_pic1.getOriginalFilename(); //修改以后做新判断 if (items_pic1 != null && pic_name != null && pic_name.length() > 0) { String newname = UUID.randomUUID().toString() + pic_name.substring(pic_name.lastIndexOf(".")); File picFile = new File(path, newname); //文件夹不存在就创建 if (!picFile.exists()) { picFile.mkdirs(); } items_pic1.transferTo(picFile); items.setPic(newname); } //修改完成以后调用更新方法 itemsService.upd(items); return "redirect:queryItems.action"; } }
UserController
用户登录注册注销逻辑控制层
package com.sjsq.controller; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.sjsq.service.UserService; import com.sjsq.entity.User; /** * @class_name:UserController * @param:6.控制层controller * @return: 逻辑控制层 * @author:sjsq * @createtime:2022年2月21日 */ // 设置默认先映射到("/user")路径下 @Controller @RequestMapping("/user") public class UserController { @Autowired private UserService userBiz; // 设置映射路径和以json格式传送参数 @RequestMapping(value = "/checkLogin", produces = { "application/json;charset=UTF-8" }) public @ResponseBody User checkLogin(@RequestBody User user, Model model, HttpSession session) { System.out.println("=============进入登录控制页面。==============="); User user1 = userBiz.CheckLoginAndPwd(user.getUsername(), user.getPassword()); // 登录以后添加到session中 session.setAttribute("user1", user1); session.setAttribute("test","呵呵"); return user1; } // 注销 @RequestMapping("/LogOut") public String LogOut(HttpSession session) { session.invalidate(); return "redirect:/Login.jsp"; } // 注册 @RequestMapping(value = "/register",produces = { "application/json;charset=UTF-8" }) public String register(User user, Model model) { userBiz.addUser(user); model.addAttribute("msg", "恭喜您,注册成功"); return "success"; } }
ItemsDaoMapper
商品增删改查接口
package com.sjsq.mapper; import java.util.List; import com.sjsq.entity.Items; /** *@class_name:ItemsDaoMapper *@param: 2.ItemsDao *@return: 商品Dao接口类 *@author:sjsq *@createtime:2022年2月22日 */ public interface ItemsDaoMapper { //1.单条查询-id public Items findOne(int id); //2.查询所有商品 public List<Items> findAll(); //3.增加 public void add (Items items); //4.更新 public void upd(Items items); //5.删除 public void del(int id); // 搜索某些商品 public List<Items> findSome(String name); }
ItemsDaoMapper.xml商品增删改查xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 指定映射到dao层 --> <mapper namespace="com.sjsq.mapper.ItemsDaoMapper"> <!-- 查询单条数据,类型int返回items类型 --> <select id="findOne" parameterType="int" resultType="items"> select * from items where id=#{id} </select> <select id="findSome" parameterType="String" resultType="items"> select * from items where 1=1 <if test="_parameter !=null and _parameter != ''"> and name like concat(#{commodityname},'%') </if> </select> <!-- 查询所有数据id降序 --> <select id="findAll" resultType="items"> select * from items order by id desc </select> <!-- 增加数据 --> <insert id="add" parameterType="items"> insert into items values(default,#{name},#{price},#{detail},#{pic},#{createtime}) </insert> <!-- 更新数据-通过id --> <update id="upd" parameterType="items"> update items set name=#{name},price=#{price},detail=#{detail},pic=#{pic},createtime=#{createtime} where id =#{id} </update> <!-- 删除数据-通过id --> <delete id="del" parameterType="int"> delete from items where id=#{id} </delete> </mapper>
UserMapper用户登录注册接口
package com.sjsq.mapper; import org.apache.ibatis.annotations.Param; import com.sjsq.entity.User; /** * @class_name:UserMapper * @param: 2.dao层接口 * @return: 数据持久化 * @author:sjsq * @createtime:2022年2月21日 */ public interface UserMapper { // 查询登录账户-用户密码为参数 public User CheckLoginAndPwd(@Param("username") String name, @Param("password") String pwd); // 注册用户 public void addUser(User user); }
UserMapper.xml用户登录注册xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 1.指定映射的对象是usermapper类也就是dao层 --> <mapper namespace="com.sjsq.mapper.UserMapper"> <!-- 查询返回的是实体类对象也可以写实体的绝对路径com.sjsq.entity.User --> <select id="CheckLoginAndPwd" resultType="user" parameterType="user"> select*from user where username=#{username} and password=#{password} </select> <!-- 增加,性别以数字替代1=男 0=女,default默认 --> <insert id="addUser" parameterType="user"> insert into user values(default,#{username},#{password},#{birthday},1,#{address}) </insert> </mapper>
fail.jsp登录失败页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>登录失败提示页</title> </head> <body> 用户名或密码错误!!!! </body> </html>
showItems.jsp商品展示页面
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE html> <html lang="en"> <head> <base href="<%=basePath%>"> <title>商品后台管理系统</title> <link rel="stylesheet" href="css/bootstrap.min.css"/> <link rel="stylesheet" href="css/bootstrap-datetimepicker.min.css"/> <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script> <script type="text/javascript" src="js/bootstrap.min.js"></script> <script type="text/javascript" src="js/bootstrap-datetimepicker.min.js"></script> <script type="text/javascript" src="js/bootstrap-datetimepicker.zh-CN.js"></script> <script type="text/javascript"> <!-- 添加模态框Modal插件 --> $("#myModal").modal({ keyboard: false, backdrop: true }); $(function () { $(".form_datetime").datetimepicker({ format: "yyyy-mm-dd hh:ii", autoclose: true, todayBtn: true, todayHighlight: true, showMeridian: true, pickerPosition: "bottom-left", language: 'zh-CN',//中文,需要引用zh-CN.js包 startView: 2,//月视图 minView: 2 //日期时间选择器所能够提供的最精确的时间选择视图 }); }); </script> </head> <body> <nav class="navbar navbar-inverse" role="navigation"> <div class="container-fluid"> <div class="collapse navbar-collapse" id="example-navbar-collapse"> <ul class="nav navbar-nav navbar" style="margin:1% 0 1% 34%;"> <li class="active"> <a class="icon-bar" href="${pageContext.request.contextPath}/items/queryItems.action" style="background-color:#087b71"> <font style="font-size:35px;font-weight:bold;font-style:italic;">欢迎来到商品管理系统</font></a></li> </ul> <ul class="nav navbar-nav navbar-right" style="margin:1% 0 1% 0%;"> <li> <h4 style="color:red;"> 欢迎您: <span class="glyphicon glyphicon-user"></span> <strong>${user1.username }</strong> <small> <a href="${pageContext.request.contextPath }/user/LogOut.action">注销</a></small> </h4> </li> </ul> </div> </div> </nav> <div class="container-fluid"> <div class="row"> <div class="col-sm-2"> <a href="${pageContext.request.contextPath}/items/queryItems.action" class="list-group-item active"><span class="glyphicon glyphicon-home"></span> 菜单 </a> <a href="${pageContext.request.contextPath}/items/queryItems.action" class="list-group-item"> <span class="glyphicon glyphicon-search" aria-hidden="true"> </span> 商品管理</a> </div> <!--左边菜单栏--> <div class="col-sm-10"> <ol class="breadcrumb"> <li class="active">菜单 </li> <li class="active">商品信息 </li> </ol> <div class="panel panel-default"> <div class="panel-heading">搜索 </div> <div class="panel-body"> <form role="form" action="${pageContext.request.contextPath }/items/querySomeItems.action" class="form-inline"> <div class="form-group"> <label for="name">名称</label> <input type="text" class="form-control" name="commodityname" placeholder="请输入名称"> </div> <div class="form-group"> <button type="submit" class="btn btn-default">开始搜索</button> </div> </form> <!-- 按钮--> <div class="row"> <div class="col-md-6 col-md-offset-10"> <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal"> <span class="glyphicon glyphicon-plus"></span>添加商品 </button> </div> </div> </div> </div> <!-- 列表展示 --> <div class="table-responsive"> <form action="${pageContext.request.contextPath }/items/addCar.action" method="post"> <table class="table table-striped"> <tr align="center"> <th>商品名称</th> <th>商品价格</th> <th>商品图片</th> <th>商品介绍</th> <th>生产日期</th> <th colspan="3">操作</th> </tr> <tr> <c:forEach items="${pageInfo.list}" var="item"> <tr align="center"> <td>${item.name }</td> <td>${item.price }</td> <!-- 照片显示 --> <td><img title="${item.detail }" style="width: 60px; height: 60px" src="${pageContext.request.contextPath}/upload/${item.pic}"></td> <td>${item.detail }</td> <!-- fmt函数库提供返回日期格式 --> <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd"/></td> <!-- 删除操作-带id参数 --> <td><a href="${pageContext.request.contextPath }/items/del.action?id=${item.id}"> <button type="button" class="btn btn-success btn-lg" onclick="return confirm('确定要删除信息吗?') "> <span class="glyphicon glyphicon-trash"></span> 删除 </button> </a></td> <!-- 修改操作 --> <td><a href="${pageContext.request.contextPath }/items/findOne.action?id=${item.id}"> <button type="button" class="btn btn-success btn-lg"> <span class="glyphicon glyphicon-edit"></span> 修改 </button> </a></td> </tr> </c:forEach> </table> </form> </div> </div> </div> <!-- 分页 --> <div class="row"> <!-- 分页信息 --> <div class="col-md-6"> <h4 style="margin: 0 0 0 38%;">当前第${pageInfo.pageNum }页,共${pageInfo.pages }页,共${pageInfo.total }条记录数</h4> </div> <!-- 分页条 --> <div class="col-md-6"> <ul class="pagination pagination-lg"> <li><a href="${pageContext.request.contextPath }/items/queryItems.action?pn=1">首页</a></li> <c:if test="${pageInfo.hasPreviousPage }"> <li><a href="${pageContext.request.contextPath }/items/queryItems.action?pn=${pageInfo.pageNum-1}" aria-label="Previous"> <span aria-hidden="true">«</span> </a></li> </c:if> <c:forEach items="${pageInfo.navigatepageNums }" var="nav"> <c:if test="${nav==pageInfo.pageNum }"> <li class="active"><a href="${pageContext.request.contextPath }/items/queryItems.action?pn=${nav}">${nav }</a> </li> </c:if> <c:if test="${nav!=pageInfo.pageNum }"> <li><a href="${pageContext.request.contextPath }/items/queryItems.action?pn=${nav}">${nav }</a> </li> </c:if> </c:forEach> <c:if test="${pageInfo.hasNextPage}"> <li><a href="${pageContext.request.contextPath }/items/queryItems.action?pn=${pageInfo.pageNum+1}" aria-label="Previous"> <span aria-hidden="true">»</span> </a></li> </c:if> <li><a href="${pageContext.request.contextPath }/items/queryItems.action?pn=${pageInfo.pages}">末页</a> </li> </ul> </div> </div> </div> <!-- 添加商品的模态框--> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <!-- 模态框的标题 --> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"> <span aria-hidden="true">×</span><span class="sr-only">关闭</span> </button> <h4 class="modal-title" id="myModalLabel">添加商品</h4> </div> <!-- 模态框的主体-表单头部 --> <form class="form-horizontal" role="form" action="${pageContext.request.contextPath }/items/addItems.action" method="post" id="form" enctype="multipart/form-data"> <div class="modal-body"> <div class="form-group form-group-lg"> <label for="firstname" class="col-sm-3 control-label">商品名称:</label> <div class="col-sm-5"> <input type="text" class="form-control input-lg" id="name" name="name" placeholder="请输入商品名字" required autofocus> </div> </div> <div class="form-group"> <label for="lastname" class="col-sm-3 control-label">商品价格:</label> <div class="col-sm-5"> <input type="text" class="form-control input-lg" id="price" name="price" placeholder="请输入商品价格" required autofocus> </div> </div> <div class="form-group"> <label for="lastname" class="col-sm-3 control-label">商品生产日期:</label> <div class="col-sm-5"> <input type="text" class="form-control input-lg form_datetime" id="createtime" name="createtime"> </div> </div> <div class="form-group"> <label for="lastname" class="col-sm-3 control-label">商品介绍:</label> <div class="col-sm-5"> <input type="text" class="form-control input-lg" id="detail" name="detail" placeholder="请输入商品介绍" required autofocus> </div> </div> <div class="form-group"> <label for="lastname" class="col-sm-3 control-label">上传商品图片:</label> <div class="col-sm-5"> <input type="file" class="form-control input-lg" id="items_pic" name="items_pic"> </div> </div> </div> <!-- 模态框的尾部 --> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button> <button type="submit" class="btn btn-primary" id="save">保存</button> </div> </form> </div> </div> </div> <!-- 底部页脚部分 --> <div class="footer"> <p class="text-center"> ©2022-2022 XXXX版权所有 </p> </div> </body> </html>
success.jsp注册成功页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>注册成功</title> <link rel="stylesheet" href="static/css/success.css"/> </head> <body> <h1>注册成功</h1> <a href="${pageContext.request.contextPath }/Login.jsp">去登录</a> </body> </html>
upd.jsp修改商品页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>修改页面</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link rel="stylesheet" href="css/bootstrap.min.css"/> <link rel="stylesheet" href="css/bootstrap-datetimepicker.min.css"/> <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script> <script type="text/javascript" src="js/bootstrap.min.js"></script> <script type="text/javascript" src="js/bootstrap-datetimepicker.min.js"></script> <script type="text/javascript" src="js/bootstrap-datetimepicker.zh-CN.js"></script> </head> <!-- 添加模态框(Modal)插件 --> <script type="text/javascript"> $(function () { $('#myModal').modal({ keyboard: false, backdrop: true }) }); (function () { $(".form_datetime").datetimepicker({ format: "yyyy-mm-dd hh:ii", autoclose: true, todayBtn: true, todayHighlight: true, showMeridian: true, pickerPosition: "bottom-left", language: 'zh-CN',//中文,需要引用zh-CN.js包 startView: 2,//月视图 minView: 2 //日期时间选择器所能够提供的最精确的时间选择视图 }); }); </script> <body> <!-- 添加修改商品的模态框--> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <!-- 模态框的标题 --> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">× </button> <h4 class="modal-title" id="myModalLabel">修改商品</h4> </div> <!-- 模态框的主体-表单头部 --> <form class="form-horizontal" role="form" action="${pageContext.request.contextPath }/items/upd.action" method="post" id="form" enctype="multipart/form-data"> <!-- 将id作为隐藏域提交这样就不会出现找不到修改的数据而报错问题 --> <input type="hidden" name="id" value="${items.id }"/> <!-- 主体-表单内容 --> <div class="modal-body"> <div class="form-group form-group-lg"> <label for="firstname" class="col-sm-3 control-label">商品名称:</label> <div class="col-sm-5"> <input type="text" class="form-control input-lg" id="name" name="name" value="${items.name }" required autofocus> </div> </div> <div class="form-group"> <label for="lastname" class="col-sm-3 control-label">商品价格:</label> <div class="col-sm-5"> <input type="text" class="form-control input-lg" id="price" name="price" value="${items.price }" required autofocus> </div> </div> <!-- 重要-日期和图片的获取方式 --> <div class="form-group"> <label for="lastname" class="col-sm-3 control-label">生产日期:</label> <div class="col-sm-5"> <input type="text" class="form-control input-lg form_datetime" value="<fmt:formatDate value="${items.createtime}" pattern="yyyy-MM-dd"/>" name="createtime" id="createtime"> </div> </div> <div class="form-group"> <label for="lastname" class="col-sm-3 control-label">商品图片:</label> <div class="col-sm-5"> <c:if test="${items.pic!=null }"> <img style="width: 80px; height: 70px" src="${pageContext.request.contextPath }/upload/${items.pic}"> <br/> <input type="file" name="items_pic1"/> </c:if> </div> </div> <div class="form-group"> <label for="lastname" class="col-sm-3 control-label">商品介绍:</label> <div class="col-sm-5"> <input type="text" class="form-control input-lg" id="detail" name="detail" value="${items.detail}" required autofocus> </div> </div> </div> <!-- 模态框的尾部 --> <div class="modal-footer"> <button type="button" class="btn btn-default"> <a href="${pageContext.request.contextPath }/items/queryItems.action">返回</a></button> <button type="submit" class="btn btn-primary" id="save">提交</button> </div> </form> </div> </div> </div> </body> </html>
四、其他
1.更多系统
Java+JSP系统系列实现
Java+Servlet系统系列实现
Java+SSM系统系列实现
Java+SSH系统系列实现
Java+Springboot系统系列实现
Java+Springboot+H-ui+Maven实现营销管理系统
Java+Springboot+Bootstrap+Maven实现网上商城系统
Java+Springboot+Bootstrap+Maven实现景区旅游管理系统
1.更多JavaWeb系统请关注专栏。
2.更多JavaSwing系统请关注专栏。
2.源码下载
sql在sql文件夹下面
系统账号信息
1.管理员 账号:admin 密码:admin
Java+SSM+Bootstrap+Jsp+Mysql实现Web商品信息管理系统
3.运行项目
关注B站:水坚石青
后期有更多干货视频推出!!!
4.备注
如有侵权请联系我删除。
5.支持博主
如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!
-
C#学生信息管理系统
2020-02-29 08:59:21题目:学生信息管理系统 语言和环境 语言:C#,WinForms 环境:Visual Studio 2010,SQL Server 2008 实现目标 某学校要实现班级学生信息管理,要求使用.NET WinForms技术完成一个班级学生信息管理系统的开发,... -
学生信息管理系统课程设计报告.docx
2020-12-17 07:01:161、目的:为规范订单/合同管理,使订单/合同执行有序进行,特制定本流程。2、适用范围适用于业务部门、集团各分公司所有订单/合同执行的全过程。3、职责3.1分公司各部门3.1.1业务部门(1)负责接收订单/合同,与客户... -
Java 基于WEB的农产品销售管理系统源码+数据库+论文文档+项目辅导视频
2019-05-15 09:02:435.3 管理员子系统的实施 26 5.3.1 连接数据库的包含文件 27 5.3.2 管理员登录页面 27 5.3.3 会员管理模块 29 5.3.4 商品管理模块 30 5.3.5 特价商品管理模块 32 5.3.6 订单模块 33 5.3.7 系统用户管理模块 34... -
学生宿舍信息管理系统
2020-12-31 15:20:16本系统专门针对学校的公寓管理而开发的一个功能齐全、操作简单的学生公寓管理系统。适合学校的宿舍管理人员使用。本系统实现以下基本功能:管理员可以对公寓进行全程管理,不仅可以管理学生,还可以管理寝室人员及... -
医院信息管理系统
2019-10-04 15:07:21医院信息管理系统 一、导言 1.1 编写目的 本需求说明文档描述了医院管理系统项目的要求,作为系统设计、项目目标以及项目验收的依据。需求分析详细描述了用户对功能的需求、对性能的需求以及对运行环境的需求。 软件... -
医院信息管理系统需求分析
2019-10-04 01:44:22医院信息管理系统 一、导言 1.1 编写目的 本需求说明文档描述了医院管理系统项目的要求,作为系统设计、项目目标以及项目验收的依据。需求分析详细描述了用户对功能的需求、对性能的需求以及对运行环境的需求。 软件... -
JavaWeb项目作业 Market商品管理系统
2021-04-01 16:33:511、首页完成商品信息列表显示,如图1所示。需求功能如下: 分页展示 多条件模糊查询商品 图1列表信息展示 2、当用户点击新增超链接时进入新增页面,类型数据为动态加载,用户添加成功后返回列表页面显示最新... -
基于Java开发的学校信息管理系统的设计与实现(含论文及毕业设计源码、数据库文件)
2021-05-09 14:46:02这个系统的主要有三个角色权限,管理员、老师、学生,系统功能模块包括用户管理、班级信息管理、教师信息管理、学生信息管理、科目信息管理、成绩信息管理。 根据本系统的研究现状和发展趋势,系统从需求分析、结构... -
手把手教你做学生信息管理系统——数据库设计(MySql)
2020-09-22 16:06:16一、需求整理 系统功能设计 在本系统的设计中,主要实现如下一些功能:增加记录、修改记录、删除记录、使用学号查询。学生记录包括:学号、姓名、性别、专业、出生年月、联系...欢迎界面、登录界面、管理界面。 ... -
实验室信息管理系统(LIMS)软件大盘点
2021-04-27 17:00:06实验室信息管理系统(LIMS)软件大盘点 一,什么是LIMS? LIMS 或实验室信息管理系统是一种软件类型,旨在通过跟踪与样品、实验、实验室工作流程和仪器相关的数据,提高实验室产能和效率。 LIMS 可以自动执行... -
基于python+django学生信息管理系统设计与实现(含程序源码和毕业设计)
2021-02-22 10:12:01这套学生信息管理系统平台,是利用目前比较流行的python语言,具有开发效率快,无需编译即可运行,比Java编译语言快很多。利用的技术是基于web的Django框架,以及sqlite数据库。 本系统主要有以下几个页面设计:管理... -
信息系统项目管理师 第二章 信息系统项目管理基础 核心知识点总结
2021-04-15 15:52:04本书书名为《信息系统项目管理师》,第一章主要讲的是信息系统,则第二章讲的是项目管理。 项目管理本质上是知识,包括各种技术,例如工作分解结构(WBS)、关键路径分析和挣值管理,所以第二节是项目管理知识... -
【数据库】【课程设计】商品销售信息管理系统设计
2021-01-26 21:55:56商品销售信息管理系统设计1.设计目的2.需求分析2.1系统业务分析2.2系统数据处理分析2.3系统数据字典3.系统设计3.1系统开发框架3.2系统功能组成设计3.2.1 系统功能组成3.2.2 子系统功能模块设计3.3数据库结构设计... -
管理信息系统复习总结(保姆级)
2021-01-01 14:19:37管理信息系统的新变化:①技术(云计算、大数据与物联网、移动数字化平台) ②管理(在线合作与社会化网络软件、商务智能、虚拟会议)③组织(社会化商务、远程办公、商业价值的共创) 信息系统如何改变企业:①新兴... -
信息系统项目管理--论文分析笔记
2019-10-22 10:47:29信息系统项目管理–论文分析 (1)整体管理 制定项目章程 1.项目发起人发布了这个文件,项目启动了,我被授权了 2.项目章程的内容(6个项目,2个总体,2个其他) 制定项目管理计划 1.和大家一起制定了一个项目... -
Java程序员周末时间搞锭银行信息管理系统毕业设计(java+springboot+mybatis+mysql+vue+elementui)等实现
2022-04-13 17:03:18首页、个人中心、通知公告管理、用户管理、员工管理、网点信息管理、账户信息管理、账户存款管理、账户取款管理、账户转账管理、在线咨询管理、销户信息管理、贷款产品管理、贷款信息管理、还款信息管理、离职申请... -
信息系统软件配置、过程管理、开发工具(详细介绍)
2022-03-24 20:10:16软件配置管理通过标识产品的组成元素、管理和控制变更、验证、记录和报告配置信息,来控制产品的进化和完整性。软件配置管理与软件质量保证活动密切相关,可以帮组达成软件质量保证目标。 一、软件配置管理 ... -
信息系统项目10大管理,47个过程及输入输出工具和技术
2022-01-04 08:27:30在学习信息高项的时候,对于10大管理要把握这样一个规律: (1)每个管理的过程是什么? (2)每个子过程的输入、输出、工具和技术是什么? (3)每个管理领域可能会出现什么问题,应该怎么解决 (4)每个管理和... -
毕业设计-仓库管理信息系统设计与实现(论文+源码+ppt答辩+开题报告+任务书)
2021-10-15 09:06:571.2.1传统企业库存管理系统存在的问题 1 1.2.2现代企业库存管理系统的特点 1 1.3可行性分析 2 1.4技术方案 3 1.4.1系统开发工具 3 1.4.2实施步骤 5 第二章 系统分析 7 2.1系统需求分析 7 2.1.1摘要 7 2.1.2系统的... -
信息系统项目管理--上午分析笔记
2019-10-29 10:22:29信息系统项目管理–上午分析 软件度量:项目度量、产品度量、过程度量 RBAC基于角色的访问控制,用户只能被动接受,不能自主决定,也不能自主的将访问权限授予其他用户。 运维管理平台使运维自动化、操作化,但并不... -
软考高级 真题 2011年上半年 信息系统项目管理师 综合知识
2020-06-28 16:41:312011年上半年 信息系统项目管理师 上午试卷 (考试时间 9 : 00~11 : 30 共 150 分钟) 1. 在答题卡的指定位置上正确写入你的姓名和准考证号,并用正规 2B 铅笔在你写入的准考证号下填涂准考证号。 2. 本试卷的... -
信息系统项目管理师-口诀篇(1)
2022-03-16 16:34:16信息系统项目管理师()口诀篇) -
健康管理系统
2019-06-28 14:10:12健康管理的思路和实践最初出现在美国。如同其他学科和行业一样,健康管理的兴起也是由于市场的需要和人类知识的积累。随着社会的发展,健康越来越成为社会公众关注的焦点和热点,也越来越成为幸福指数的关键指标。现代... -
项目管理系统与项目管理信息系统与配置管理系统与变更控制系统的区别
2016-08-17 22:09:43一、项目管理系统 项目管理系统是管理项目所需的过程、工具、技术、方法、资源和程序的集合。 二、项目管理信息系统(project management information system -
管理信息系统(MIS)期末复习参考指南
2019-12-03 16:28:11文章目录名词解释MIS概述信息的特点与加工信息、消息、数据、知识之间的关系信息量与信息的层次性系统基础知识MIS的相关概念MIS开发...信息系统规划原则步骤关键成功因素法(CSF)战略目标集转化法(SST)企业系统规划 -
《系统分析与设计》课程设计——医院门诊信息管理查询系统
2019-11-02 10:06:13为医院开发新的门诊管理系统,实现一个从信息收集、处理到查询的完整的处理方案。建立对应的数据库来将系统中的信息保存起来以方便查询。明确划分各系统使用者的权限,为患者提供查询医生和预约医生的功能,并能对...