客户订购登录系统数据库课程设计实验报告文档格式.docx
- 文档编号:18497784
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:37
- 大小:272.50KB
客户订购登录系统数据库课程设计实验报告文档格式.docx
《客户订购登录系统数据库课程设计实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《客户订购登录系统数据库课程设计实验报告文档格式.docx(37页珍藏版)》请在冰豆网上搜索。
通过输入订单编号对订单的基本信息进行查询,订单的基本信
息包括订单编号,持有该订单的客户,客户名,商品及数量,金额,支付方式;
订单的新建:
能够建立新的订单,并将新建订单保存到数据库中;
订单的删除:
能够删除不正确的订单,并将其在数据库中的记录删除;
商品的查看:
通过输入商品编号对商品进行查看,能查询到商品的基本信息,基本信息包括商品编号,商品名,商品单价,商品数量;
商品的新建:
能够建立新的商品,并将新建商品信息保存到数据库中;
商品的修改:
能够更新商品的信息,并将更新保存到数据库中;
商品的删除:
能够删除不正确或下架的商品,并将其在数据库中的记录删除;
登录要求:
需要通过账户及其密码才能进入主界面对数据进行操作,并能
实现新建账户,删除账户及修改密码等功能;
登录者姓名的记录:
实现开始运行这个客户订购登记系统的员工的名字要被记下来的功能;
系统退出:
在完成对软件的使用后提供退出程序及返回登录界面的方法。
2.2.依照需要实现的功能,可以确定所需要的数据,由此决定了在数据库中应
当建立的表:
client表(保存客户相关信息数据)、goods表(保存商品的相关信息数据)、order表(保存订单的相关信息数据)、account表(保存账户及密码的相关数据)、login表(保存登录本系统员工的名字)、list表(保存员工发给客户的订单信息)
三、数据库概念设计
四、数据库逻辑设计
4.1E-R图向关系模型的转换
逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用的DBMS产品所支持的数据模型相符合的逻辑结构。
我们将概念结构设计中的E-R图转换成关系模式,转换得到的关系模式:
(有下划线的为关系模式中的主属性)
(1)客户client(客户编号cno,客户名cname,客户电话cphone.客户地址caddress,,客户邮箱cemail)
——此为“客户”实体型的关系模式。
(2)商品goods(商品编号gno,商品名gname,商品单价gprice,商品数量gnum)
——此为“商品”实体型的关系模式。
(3)订单order(订单编号ono,客户编号cno,客户名cname,总金额oprice,支付编号pno,员工编号ano)
——此为“订单”实体型对应的关系模式。
(4)订单细则odetail(细则编号odno,订单编号ono,商品编号gno,商品单价gprice,订购数量onum)
——此为“订单细则”实体型所对应的关系模式
(5)员工account(员工编号ano,员工名aname,密码akey,部门asection)
——此为“账户”实体型所对应的关系模式。
(6)支付方式pay(支付编号pno,订单编号ono,支付名pname,相关信息pin(允许为空)
——此为“支付方式”实体型所对应的关系模式。
(7)发票invoice(发票编号ino,订单编号ono,应收金额iprice)
——此为“发票”实体型所对应的关系模式。
3.2数据模型的优化
规范化理论为数据库设计人员判断关系模式的优劣提供了理论标准,可以用来预测关系模式可能出现的问题,是数据库设计工作有严格的理论基础。
经过检验,可知
(1)
(2)(5)(6)4个关系模式都满足3NF,(3)(4)关系模式满足2NF,(3)中客户名对客户编号存在传递依赖,但这样信息更清晰且不会出现插入删除等异常,(4)中商品单价对商品编号存在传递依赖,但这样便于后期计算金额。
而且因为这里设计的关系模式都比较简单,模式之间的关系也不太复杂,所以也不需要再进行分解等操作。
5、应用系统功能模块
六、源程序代码及运行结果(含运行界面屏幕截图)。
基本表的定义
CREATETABLEClient
(cnoCHAR(9)PRIMARYKEY,
cnameCHAR(15)UNIQUE,
cphoneCHAR(15),
caddressCHAR(30),
cemailCHAR(15),
);
CREATETABLEgoods
(gnoCHAR(9)PRIMARYKEY,
gnameCHAR(15)UNIQUE,
gpriceCHAR(15),
gnumCHAR(30),
CREATETABLEorder1
(onoCHAR(9)PRIMARYKEY,
opriceCHAR(30),
OpaymentCHAR(15),
cnoCHAR(9)
opoCHAR(9)
anoCHAR(9)
FOREIGNKEYcnoREFERENCESClient(cno)
CREATETABLEodetail
(odnoCHAR(9)PRIMARYKEY,
onoCHAR(15),
gnoCHAR(15),
onumCHAR(30),
odpriceCHAR(15),
FOREIGNKEYonoREFERENCESorder1(ono)
FOREIGNKEYgnoREFERENCESgoods(gno)
FOREIGNKEYgpriceREFERENCESgoods(gprice)
CREATETABLEaccount
(anoCHAR(9)PRIMARYKEY,
anameCHAR(15)UNIQUE,
akeyCHAR(30),
asectionCHAR(15),
CREATETABLEpay
(pnoCHAR(9)PRIMARYKEY,
onoCHAR(30),
pnameCHAR(15),
pinCHAR(15),
CREATETABLEinvoice
(inoCHAR(9)PRIMARYKEY,
ipriceCHAR(15),
onoCHAR(15),
FOREIGNKEYonoREFERENCESorder(ono)
数据的查询
查询商品号是04005的细则编号,商品名,商品数,商品数量
SELECTodnognamegnum
FROModetailgoods
WHEREgoods.gno=detail.gnoANDgno=‘04005’;
查询客户编号05007的客户名,客户电话,支付编号
SELECTcnamecphoneopo
FROMclientorder1
WHEREo=oANDcno=’05007’;
数据的插入
INSERT
INTOgoods(gno,gname,gprice,gnum)
VALUES(“1205”,“苹果”,“1.5元/每千克”,“10”)
INTOgoods(gno,gname,gprice,gnum)
VALUES(“1206”,“香蕉”,“1.5元/每千克”,“5”)
INTOclient(cno,cname,cphone,caddress,cemail)
VALUES(05006李楠1258346潍城一号123456@234)
修改数据
修改客户编号05006的电话为1234568
UPDATEclient
SETcphone=1234568
WHEREcno=“05006”;
修改员工编号为10005的密码‘11111’和部门‘销售’
UPDATEaccount
SETakey=11111ANDasection=‘销售’
WHEREano=’10005’
删除数据
删除客户编号为05006
DELETE
FROMclient
packageshiyan;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.sql.*;
publicclassDFrameextendsJFrameimplementsActionListener,ItemListener{//登录界面
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
JPanelp1=null;
JPanelp2=null;
JPanelp3=null;
JLabeluserName=newJLabel("
用户"
JTextFieldtxtUser=newJTextField();
JLabelpassword=newJLabel("
密码"
JPasswordFieldtxtPwd=newJPasswordField(6);
JLabelrole=newJLabel("
角色"
@SuppressWarnings("
rawtypes"
)
JComboBoxcbrole=newJComboBox();
JButtonbtnLogin=newJButton("
登录"
JButtonbtncz=newJButton("
重置"
JButtonbtnCancel=newJButton("
取消"
JLabelimageLabel;
Iconimage;
staticfinalintOK=1;
intCANCEL=0;
intactionCode=0;
Connectioncon=null;
Statementstmt=null;
ResultSetrs=null;
intqxian=0;
@SuppressWarnings({"
deprecation"
"
unchecked"
})
publicDFrame(){//构造方法
super("
登录界面"
p1=newJPanel();
p2=newJPanel();
p3=newJPanel();
cbrole.addItem("
客户"
员工"
image=newImageIcon("
picture\\st.jpg"
imageLabel=newJLabel(image);
p1.add(imageLabel);
this.setLayout(newFlowLayout());
this.setBounds(100,100,246,345);
p2.setLayout(newGridLayout(4,2));
p2.add(userName);
p2.add(txtUser);
p2.add(password);
p2.add(txtPwd);
p2.add(role);
p2.add(cbrole);
p3.add(btnLogin);
p3.add(btncz);
p3.add(btnCancel);
this.add(p1);
this.add(p2);
this.add(p3);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.show();
btnLogin.addActionListener(this);
cbrole.addItemListener(this);
btncz.addActionListener(this);
btnCancel.addActionListener(this);
}publicvoidconnDB(){//连接数据库
try{
Class.forName("
com.microsoft.sqlserver.jdbc.SQLServerDriver"
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
con=DriverManager.getConnection(
"
jdbc:
sqlserver:
//localhost:
1433;
DatabaseName=client"
sa"
123"
stmt=con.createStatement();
}catch(SQLExceptione){
publicvoidcloseDB()//关闭连接
{
stmt.close();
con.close();
publicvoiditemStateChanged(ItemEvente){
if(e.getStateChange()==ItemEvent.SELECTED){
@SuppressWarnings("
JComboBoxjcb=(JComboBox)e.getSource();
qxian=jcb.getSelectedIndex();
publicvoidactionPerformed(ActionEvente){
dispose();
newwindow();
/*Objectsource=e.getSource();
Stringun=null;
Stringpw=null;
booleansuccess=false;
//用于判断是否登录成功
if(source==btnLogin){
if(txtUser.getText().equals("
)||txtPwd.getText().equals("
)){//判断是否输入了用户名和密码
JOptionPane.showMessageDialog(null,"
登录名和密码不能为空!
}else{
this.connDB();
try{
rs=stmt.executeQuery("
select*fromunpwwhereqx="
+qxian);
while(rs.next()){
un=rs.getString("
un"
).trim();
pw=rs.getString("
pw"
if(txtUser.getText().equals(un)){
if(txtPwd.getText().equals(pw)){
actionCode=OK;
this.setVisible(false);
if(qxian==0){
newclientFrane1();
//进入客户界面
}
if(qxian==1){
newaccountFrame1();
//进入员工界面}
success=true;
break;
密码错误!
txtPwd.setText("
}
if(!
success){
登录名错误!
txtUser.setText("
}
catch(SQLExceptione1){
e1.printStackTrace();
}elseif(source==btncz){
}elseif(source==btnCancel){
}*/
publicstaticvoidmain(String[]args){
newDFrame();
importjava.awt.*;
importjava.awt.event.*;
importjava.sql.*;
importjavax.swing.*;
serial"
publicclasswindowextendsJFrameimplementsActionListener
{
/**
*
*/
//?
?
wwindo;
MenuBarJMenuBar;
MenuJMenu1,JMenu2,menu4,menu5;
MenuItemselectclient,updateclient,selectorder,updateorder,deleteorder,addorder,selectgoods,relogin;
publicwindow()
{
super("
windo=neww(this);
//addWindowListener((WindowListener)windo);
//
setBounds(200,100,500,300);
setLayout(newGridLayout(1,1));
setBackground(Color.blue);
setVisible(true);
JMenuBar=newMenuBar();
JMenu1=newMenu("
JMenu2=newMenu("
menu4=newMenu("
menu5=newMenu("
selectclient=newMenuItem("
updateclient=newMenuItem("
selectorder=newMenuItem("
updateorder=newMenuItem("
addorder=newMenuItem("
selectgoods=newMenuItem("
deleteorder=newMenuItem("
relogin=newMenuItem("
JMenu1.add(selectclient);
JMenu1.add(updateclient);
JMenu2.add(selectorder);
JMenu2.add(updateorder);
JMenu2.add(addorder);
JMenu2.add(deleteorder);
menu5.add(selectgoods);
JMenuBar.add(JMenu1);
JMenuBar.add(JMenu2);
JMenuBar.add(menu5);
JMenuBar.add(menu4);
setMenuBar(JMenuBar);
selectclient.addActionListener(this);
updateclient.addActionListener(this);
selectorder.addActionListener(this);
updateorder.addActionListener(this);
addorder.addActionListener(this);
deleteorder.addActionListener(this);
selectgoods.addActionListener(this);
relogin.addActionListener(this);
//pack();
}
@Override
publicvoidactionPerformed(ActionEvente){
}
}
//TODOAuto-generatedmethodstub
newwindow();
packageshiy
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 客户 订购 登录 系统 数据库 课程设计 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)