网上书店信息管理系统+代码+数据库表
- 格式:doc
- 大小:523.50 KB
- 文档页数:95
1.用户表:用户代码为主键,有程序自动生成(格式S0001)M开头操作权限:U=CRUD权限Q=query权限2. 会员表:A普通级别售价B1000>累计消费金额>500折扣9C2000>累计消费金额>1000折扣8D >2000 折扣7折扣会员编号:m201203010001 程序自动生成m+用户注册时间+00013.4.5.6.综合社科类出版社排名1、商务印书馆2、人民出版社3、人民文学出版社4、作家出版社5、译林出版社6、中华书局7、社科文献出版社8、生活读书新知三联出版社9、中央编译出版社10、国家图书馆出版社科学技术类出版社排名1、科学出版社2、清华大学出版社3、机械工业出版社4、电子工业出版社 5、化学工业出版社6、建筑工业出版社7、人民邮电出版社8、中国水利水电出版社9、中国电力出版社 10、北京科学技术出版社经济类出版社排名1、中国金融出版社2、中国财经出版社 3、中信出版社4、中国经济出版社法律类出版社排名1、法律出版社2、中国法制出版社 3、中国政法大学出版社4、人民法院出版社学术、教育教材类出版社1、清华大学出版社2、中国人民大学出版社3、北京大学出版社4、高等教育出版社5、人民教育出版社7. 订单表:订单号:格式o201202020001 o+日期+0001订单状态:未处理:订单是否有效,待管理员确认后才是有效订单确认:订单为有效订单发货中:订单完成前台顾客浏览图书→选择自己要买的图书→下订单(数据库中添加一条订单(状态为未处理))→管理员确认后订单有效方可发货→发货(图书库存减少)-→收货人确认收货交易结束(订单状态修改为订单完成)8.订单明细9.入库单:i201202200001 i+日期+0001 入库单状态:采购中10.入库单明细:11. 库存。
新建数据库Create database BookData;Use BookData;新建表B1create table Tbl_Customer(Customer decimal not null,Customer_Name varchar(10),Address varchar(20),City varchar(20),State varchar(20),Zip varchar(6),Referred decimal);插入数据insert into tbl_customer values(1001,'张三','白下区','南京','江苏','210000',null );insert into tbl_customer values(1002,'李四','徐汇区','上海','上海','110000',null);insert into tbl_customer values(1003,'王五','朝阳区','北京','北京','110000',null);insert into tbl_customer values(1004,'赵六','北大街','无锡','江苏','110000',null);insert into tbl_customer values(1005,'李三','平江路','苏州','江苏','110000',null);insert into tbl_customer values(1006,'陈三','升州路','南京','江苏','110000',null);insert into tbl_customer values(1007,'朱三','三牌楼','合肥','安徽','110000',1003);新建表B2create table Tbl_Books(Isbn varchar(10) not null,Title varchar(300),Pubdate Date,Pubid decimal(2),Costs decimal(5,2),Retail decimal(5,2),Categorys varchar(12));插入数据insert into tbl_books values('','一天中10分钟身体成分','-1-21',4,18.75,30.95,'健康');insert into tbl_books values('','米奇复仇','-12-12',1,14.2,22,'家庭生活');insert into tbl_books values('','用牙签造车','-08-18',2,37.8,59,'小朋友');insert into tbl_books values('','数据库实现','1999-06-04' ,3,31,55,'计算机');insert into tbl_books values('','用蘑菇烹饪','-02-28' ,4,12.5,19.95,'烹饪');insert into tbl_books values('','数据库法宝','-11-30' ,3,47,75,'计算机');新建表B3create table Tbl_Orders(Orders decimal(4)not null,Customer decimal(4),Orderdate Date,Shipdate Date ,Shipstreet varchar(18) ,Shipcity varchar(15),Shipstate varchar(2),Shipzip varchar(6));修改数据长度时用alter table 表名modify 字段名称字段类型插入数据insert into Tbl_Orders values(1000,1005,'-03-31' ,'-04-02' ,'奥体大街' ,'南京','江苏','210019'); insert into Tbl_Orders values(1001,1010,'-03-31' ,'-04-01' ,'和会街' ,'南京','江苏','210001'); insert into Tbl_Orders values(1002,1011,'-03-31' ,'-04-01' ,'南京路' ,'上海','上海','00'); insert into Tbl_Orders values(1003,1001,'-04-01' ,'-04-01' ,'南京路' ,'上海','上海','00'); insert into Tbl_Orders values(1004,1020,'-04-01' ,'-04-05' ,'欧风街' ,'无锡','江苏','204002'); 新建表B4create table Tbl_Oraderitems(orders decimal(4) not null,Item decimal(2) not null,Isbn varchar(10),quantity decimal(3));插入数据insert into Tbl_Oraderitems values(1000,1,'',1);insert into Tbl_Oraderitems values(1001,1,'',1);insert into Tbl_Oraderitems values(1001,2,'',1);insert into Tbl_Oraderitems values(1002,1,'',2);insert into Tbl_Oraderitems values(1003,1,'',1);MySQL语句可以放在同一行;但是DB2不可以新建表B5create table Tbl_Author(AuthorId varchar(4) not null,name varchar(20));插入数据insert into Tbl_Author values('s100','薛明');insert into Tbl_Author values('j100','陈洪');insert into Tbl_Author values('a100','张二');insert into Tbl_Author values('k100','陈康');新建表B6create table Tbl_BookAuthor(Isbn varchar(10) not null,AuthorId varchar(4) not null); drop table Tbl_BookAuthor插入数据insert into Tbl_BookAuthor values('','s100');insert into Tbl_BookAuthor values('','p100');insert into Tbl_BookAuthor values('','j100');insert into Tbl_BookAuthor values('','k100');insert into Tbl_BookAuthor values('','p105');insert into Tbl_BookAuthor values('','a100');insert into Tbl_BookAuthor values('','a105');insert into Tbl_BookAuthor values('','b100');insert into Tbl_BookAuthor values('','a100');insert into Tbl_BookAuthor values('','w100');insert into Tbl_BookAuthor values('','w105');insert into Tbl_BookAuthor values('','j100');insert into Tbl_BookAuthor values('','r100');insert into Tbl_BookAuthor values('','f100');insert into Tbl_BookAuthor values('','b100');insert into Tbl_BookAuthor values('','s100');insert into Tbl_BookAuthor values('','r100');insert into Tbl_BookAuthor values('','s100');insert into Tbl_BookAuthor values('','w100');新建表B7create table Tbl_Publisher(Pubid varchar(10) not null,Name varchar(23) ,Contact Varchar(15),Phone varchar(12));插入数据insert into Tbl_Publisher values('1','新华出版社','程明','000-714-8321');insert into Tbl_Publisher values('2','扬子出版社','张译','010-414-8321');insert into Tbl_Publisher values('3','人民教诲出版社','园艺','044-714-8321');insert into Tbl_Publisher values('4','北京大学出版社','郑爽','000-564-8321');insert into Tbl_Publisher values('5','机械工业出版社','陆华','000-714-8751');新建表B8create table Tbl_Promotion(geft varchar(100),minretail decimal(5,2),maxretail decimal(5,2));插入数据insert into Tbl_Promotion values('书签',0,12);insert into Tbl_Promotion values('书签题题',12.01,25);insert into Tbl_Promotion values('图书封面',25.01,56);insert into Tbl_Promotion values('免费购物券',56.01,999.99);select * from Tbl_Customer;select * from Tbl_Books; select * from Tbl_Orders; select * from Tbl_Oraderitems;select * from Tbl_Author; select * from Tbl_BookAuthor;select * from Tbl_Publisher; select * from Tbl_Promotion;。
完整的简单jsp网上书店详细实例计算机web编程jsp毕业论文、考试复习资料必备其中包括的详细需求、业务分析、数据库、源代码我们使用JSP和Java Bean来构建一个网上书店。
介绍的例子可以分成两大部分,第一部分是普通程序,用于客户在网上选购图书,第二部分是管理程序,用于在服务器端处理客户的定单。
客户端程序由以下几个部分构成:default.jsp:会员登录界面(首页);checklogon.jsp:检测登录代码和密码是否一致,根据由JavaBean返回的结果显示不同的信息。
BuyerBean:会员的合法性检验所用的Bean;booklist.jsp:给登录会员显示当前书店中可供选择的图书;addcart.jsp:将所选的图书加入购物车;shoppingcart.jsp:查看购物车的内容;本例的数据库采用Access(.MDB数据库),对数据库的访问采用便于理解的JDBC-ODBC方式,在使用本例前先在本地数据库建立一个ODBC数据源:bookstore。
设置步骤如下:(1)在开始->设置->控制面版(Win98、NT4.0)中选取“数据源(ODBC)”;在Win 2000 Professional和Server中分别位于“开始->设置->控制面版->管理工具”和“开始->程序->管理工具”下。
(2)启动“数据源(ODBC)”配置程序,界面如图15-1所示。
图15-1 ODBC数据源管理界面(3)在图15-1中“系统DSN”选项下单击“添加”按钮,来添加一个系统的数据源(DSN),则出现如图15-2所示数据源驱动程序选择界面:图15-2 数据源驱动程序选择界面(4)在图15-2中选择“Microsoft Access Driver (*.mdb)”单击“完成”加载Access数据库的驱动,则出现如图15-3所示数据库ODBC安装界面:图15-3 数据库ODBC安装界面(5)在图15-3中单击“选择(S)…”按钮,启动一个类似资源管理器的界面来选择数据库,如图15-4所示,在图15-4所示的界面中选择bookstore.mdb。
头函数名:#include<stdio.h>#include<stdlib.h>#include<string.h>/*********图书信息结构体*********//***包括登录号,书名,作者名,分类号,出版单位,出版时间,价格等***/ struct bookinf{ int num; ******************************************************登录号char bname[20];***************************************书名char wname[10];***************************************作者名char clanum[14];***************************************分类号char pubcom[10];***************************************出版单位char pubtime[10];***************************************出版时间float price;*********************************************价格};一管理员登录系统模块:(1)来到图书信息管理系统页面void index(){char input; 注释:运行时printf("\n\n\t\t\t*****************************\n"); 直接进入printf("\t\t\t 图书信息管理系统\n"); 这个页面printf("\t\t\t*****************************\n\n\n");printf(" ------------------------------------------------------------------------------\n");printf("\t<按任意键进入>\n\t");input=getchar();}(2)管理员登陆进入功能菜单页面FILE *fp;struct manage pswd;if ((fp=fopen("password.txt","r"))==NULL) {printf("\n\n\n\tCannot open file!\n\t");}else{do{printf("\n\n\t请输入管理员帐号:");scanf("%s",name);printf("\n\n\t请输入管理员密码:");scanf("%s",password);fp=fopen("password.txt","r");fread(&pswd,sizeof(struct manage),1,fp);fclose(fp);w=strcmp(pswd.manage_name,name);k=strcmp(pswd.password,password);adm_servelist();}while (w!=0||k!=0);adm_servelist();}}(3)来到功能菜单页面{void book_add();void book_view();void change();void del();void book_search();void login();void pwchange();int in; 注释:菜单列出的服务种类char input; 从1,2,3,4,5,6 do 所对应的功能进行选择{printf("\n\n\n\t--欢迎使用信息管理系统--");printf("\n\n\t1.图书信息录入\n");printf("\t2.图书信息浏览\n");printf("\t3.图书信息查询\n");printf("\t4.图书信息删除\n");printf("\t5.图书信息修改\n");printf("\t6.退出管理模式\n");printf("\n\t请选择服务种类:");scanf("%d",&in);if (in!=1&&in!=2&&in!=3&&in!=4&&in!=5&&in!=6){printf("\n\t没有这项服务~\n");printf("\t按任意键重新选择");input=getchar();}}while (in!=1&&in!=2&&in!=3&&in!=4&&in!=5&&in!=6);switch (in){case 1: book_add(); break; 注释:选择自己所需要case 2: book_view(); break; 后摁下数字键则case 3: book_search(); break; 则进入此功能页面case 4: del(); break;case 5: change();break;case 6: login(); break;}}(3)图书信息录入功能模块void book_add(){void book_add();int i=0,j;FILE *fp;char input; 注释:输入的图书信息struct bookinf books; 是通过文件进行struct bookinf book_taxis[30]; 保存的printf("\n\n\n\t---请输入图书信息---\n\n");printf("\t登录号:");scanf("%d",&books.num);printf("\n\t书名:");scanf("%s",books.bname);printf("\n\t作者名:");scanf("%s",books.wname);printf("\n\t分类号:");scanf("%s",books.clanum);printf("\n\t出版单位:");scanf("%s",books.pubcom);printf("\n\t出版时间:");scanf("%s",books.pubtime);printf("\n\t价格:");scanf("%f",&books.price);if ((fp=fopen("book.txt","r"))!=NULL){do{fread(&book_taxis[i],sizeof(struct bookinf),1,fp);i=i+1;}while(!feof(fp));fclose(fp);for (j=0;j<=i;j++)if (books.num==book_taxis[j].num){printf("\n\n\n\t对不起,这个编号已经使用过了~\n");printf("\t按任意键返回管理菜单~");input=getchar();adm_servelist();break;}}if ((fp=fopen("book.txt","r"))==NULL){fp=fopen("book.txt","w");}else{fclose(fp);fp=fopen("book.txt","a");}fwrite(&books,sizeof(struct bookinf),1,fp);fclose(fp);printf("\n\n\n\t信息输入完毕~按任意键继续\n");input=getchar();adm_servelist();}(4)图书信息浏览功能模块void book_view(){void adm_servelist();void book_view();int inp,i=0,n=0;FILE *fp;char input;struct bookinf bookview[20];if ((fp=fopen("book.txt","r"))==NULL){printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n"); printf("\n\t<按任意键返回管理菜单>\n\t");input=getchar();adm_servelist();}else{do{fread(&bookview[i],sizeof(struct bookinf),1,fp);i=i+1;}while (!feof(fp));fclose(fp);do{printf("\n\t--------共有%d条记录--------",i-1);printf("\n\n\t登录号: %d\n",bookview[n].num);printf("\n\t书名: %s\n",bookview[n].bname);printf("\n\t作者名: %s\n",bookview[n].wname);printf("\n\t分类号: %s\n",bookview[n].clanum);printf("\n\t出版单位: %s\n",bookview[n].pubcom);printf("\n\t出版时间: %s\n",bookview[n].pubtime);printf("\n\t价格: %f\n",bookview[n].price);printf("\n\n\t1.上一页\t2.下一页\t3.回目录\n");printf("\n\t请选择:");scanf("%d",&inp);switch (inp){case 1:{if (n==0){printf("\n\t已到达首页\n\t按任意键重新选择");input=getchar();}else n=n-1; break;}case 2:{if (n==i-2){printf("\n\t已到达最末页\n\t按任意键重新选择");input=getchar();}else n=n+1; break;}case 3:{adm_servelist();break;}default:{printf("\n\t没有这项服务\n\t按任意键重新选择");input=getchar();}}}while (inp!=3);}}(5)图书信息修改与删除功能模块修改:void change(int x){int inp,i=0,j;void book_search();FILE *fp,*fp1;char input;struct bookinf books,book_taxis[20];do{printf("\n\n\n\t注意:您确定要修改该记录吗?\n"); printf("\n\t1.是\t2.否\n");printf("\n\t请输入:");scanf("%d",&inp);if (inp!=1&&inp!=2){printf("\n\t对不起~没有这项服务~\n");printf("\t按任意键重新选择\n\t");input=getchar();}}while (inp!=1&&inp!=2);if (inp==2)book_search();if (inp==1){printf("\n\n\n\t---请输入图书信息---\n\n");printf("\t登录号:");scanf("%d",&books.num);printf("\n\t书名:");scanf("%s",books.bname);printf("\n\t作者名:");scanf("%s",books.wname);printf("\n\t分类号:");scanf("%s",books.clanum);printf("\n\t出版单位:");scanf("%s",books.pubcom);printf("\n\t出版时间:");scanf("%s",books.pubtime);printf("\n\t价格:");scanf("%f",&books.price);if ((fp1=fopen("book.txt","r"))!=NULL){do{fread(&book_taxis[i],sizeof(struct bookinf),1,fp1);i=i+1;}while(!feof(fp1));fclose(fp1);for (j=0;j<x;j++)if (books.num==book_taxis[j].num){printf("\n\n\n\t对不起,这个编号已经使用过了~\n");printf("\t按任意键返回管理菜单~");printf("0");input=getchar();book_search();break;}for (j=x+1;j<i-2;j++)if (books.num==book_taxis[j].num){printf("\n\n\n\t对不起,这个编号已经使用过了~\n");printf("1");printf("\t按任意键返回管理菜单~");input=getchar();book_search();break;}}book_taxis[x]=books;fp=fopen("book.txt","w");for (j=0;j<i-1;j++)fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp);fclose(fp);printf("\n\n\t信息修改完成!按任意键返回");input=getchar();book_search();}}S删除:void del(int y){char input;FILE *fp;int inp,i=0,j;struct bookinf book_taxis[20];void book_search();void adm_servelist();do{printf("\n\n\n\t注意:您确定要删除该记录吗?\n"); printf("\n\t1.是\t2.否\n");printf("\n\t请输入:");scanf("%d",&inp);if (inp!=1&&inp!=2){printf("\n\t对不起~没有这项服务~\n");printf("\t按任意键重新选择\n\t");input=getchar();}}while (inp!=1&&inp!=2);if (inp==2)book_search();if (inp==1){if ((fp=fopen("book.txt","r"))!=NULL){do{fread(&book_taxis[i],sizeof(struct bookinf),1,fp);i=i+1;}while(!feof(fp));fclose(fp);}if (i>2){fp=fopen("book.txt","w");for (j=0;j<y;j++)fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp);fclose(fp);fp=fopen("book.txt","a");for (j=y+1;j<i-1;j++)fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp);fclose(fp);}else{remove("book.txt");}printf("\n\n\t记录已删除!\n\n\t按任意键返回\n\t");input=getchar();adm_servelist();}}(6)图书信息查询功能模块void book_search(){void adm_servelist();void id_search();void wr_search();void bn_search();char input;FILE *fp;int inp;if ((fp=fopen("book.txt","r"))==NULL){printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n"); printf("\n\t<按任意键返回管理菜单>\n\t");input=getchar();adm_servelist();}else{do{printf("\n\n\n\t1.按图书登录号查询\n");printf("\n\t2.按图书作者查询\n");printf("\n\t3.按图书名查询\n");printf("\n\t4.回到主菜单\n");printf("\n\n\t请选择查询类别:");scanf("%d",&inp);if (inp!=1&&inp!=2&&inp!=3&&inp!=4){printf("\n\n\t没有这项服务~\n\t按任意键重新选择~");input=getchar();}}while (inp!=1&&inp!=2&&inp!=3&&inp!=4);fclose(fp);switch (inp){case 1: id_search(); break;case 2: wr_search(); break;case 3: bn_search(); break;case 4: adm_servelist(); break;}}}。
1.用户表(users):2.3./**创建表——评论*/CREATE TABLE comments(cid INT(11) AUTO_INCREMENT PRIMARY KEY, ccontents V ARCHAR(400) NOT NULL,ctime VARCHAR(100) NOT NULL,cstar VARCHAR(100),cbid INT(11) NOT NULL,cuid INT(11) NOT NULL,other1 V ARCHAR(200),other2 INT(11))/**创建表-订单详情*/CREATE TABLE orderbooks(obid V ARCHAR(100) PRIMARY KEY,bid INT(11) NOT NULL,onum INT(11) DEFAULT '1',oid V ARCHAR(100) NOT NULL,obstate INT(11) DEFAULT '0',obpay INT(11) DEFAULT '0')Sql语句:CREATE DATABASE bookShop;/**创建表——用户*/CREATE TABLE users(uid INT(11) AUTO_INCREMENT PRIMARY KEY, uloginid V ARCHAR(20) NOT NULL,upwd V ARCHAR(40) NOT NULL,uname VARCHAR(100) NOT NULL,uphone V ARCHAR(100) NOT NULL,uaddress VARCHAR(100) NOT NULL,umail VARCHAR(100),uregistertime V ARCHAR(100),ulastlogintime V ARCHAR(100),upicture V ARCHAR(200),other1 V ARCHAR(100),other2 INT(11),other3 INT(11))/**创建表—订单*/CREATE TABLE orders(oid V ARCHAR(100) PRIMARY KEY,otime VARCHAR(100) NOT NULL,ouid INT(11) NOT NULL,oreceive VARCHAR(200),oaddress VARCHAR(1000) NOT NULL,ophone V ARCHAR(100) NOT NULL,oprice V ARCHAR(100) NOT NULL,opaymethod V ARCHAR(20) NOT NULL,opaybank VARCHAR(20) NOT NULL,ostate INT(11) DEFAULT '0')/**创建表——书店*/CREATE TABLE bookshop(bsid INT(11) AUTO_INCREMENT PRIMARY KEY, bloginid V ARCHAR(20) NOT NULL,bpwd V ARCHAR(20) NOT NULL,bname VARCHAR(100) NOT NULL,baddress VARCHAR(100) NOT NULL,bphone V ARCHAR(100) NOT NULL,bmail VARCHAR(100),bbusinesstime V ARCHAR(100),blawman VARCHAR(100),other1 INT(11),other2 V ARCHAR(100),other3 V ARCHAR(100))/**创建书信息表*/CREATE TABLE books(bid INT(11) AUTO_INCREMENT PRIMARY KEY,bname VARCHAR(100) NOT NULL,bprice V ARCHAR(50) NOT NULL,bauthor V ARCHAR(50) NOT NULL,bdiscount FLOAT DEFAULT '1',bdiscription V ARCHAR(400) DEFAULT '',bimg VARCHAR(200) NOT NULL,bcategory INT(11),bbsid INT(11) NOT NULL,other1 INT(11),other2 V ARCHAR(20))/**创建表-书籍类别*/CREATE TABLE category(cid INT(11) AUTO_INCREMENT PRIMARY KEY, category INT(11),other1 INT(11),other2 V ARCHAR(30))。
附录全部源代码package class Connect {private static Connection con = null;private static String url="jdbc:oracle:thin:@localhost:1521:ORCL";private static String driver = "";private static String user = "scott";private static String pwd = "tiger";public static Connection getConnection(){try {(driver);con = (url, user, pwd);"数据库连接成功!");} catch (ClassNotFoundException e) {"驱动加载失败!");;} catch (SQLException e) {"数据库连接失败!");}return con;}public static void main(String[] args) {();}}package class docMenuAction implements ActionListener { RegisterFrame register = null;JPanel cusPanel = null;JPanel docPanel = null;public docMenuAction(RegisterFrame register){= register;= ;= ;}public void actionPerformed(ActionEvent e) {于用户搜索商品public ArrayList getAllSellerGoods(){ArrayList list = new ArrayList();conn = ();try {statement = ();String sql = "select * from goods a,seller b where =";resultSet = (sql);while()){Seller seller = new Seller();("seller_name"));("address"));Goods goods = new Goods();(seller);("goods_id"));("goods_name"));("seller_id"));("discount"));("num"));("price"));2012-9-192012-9-192012-9-192012-9-19etImage());(null);(null);(false);etImage());(600, 400);;(null);(menuBar,;setGoodsPanel();;(goodsPanel,;;setSouthPanel();setOrderPanel();(southPanel,;}quals())){(null, "请输入商品编号或商品数量!");}else{int id = ());int num = ((String) ());goods = (id);if(null, "您确定要购买吗")==0){if()==0){(null, "商品编号输入错误!");}else{if()<num){(null, "商品数量不足!");}else{()-num);(goods);OrderDao order = new OrderDao();(goods, num);(null, "购买成功!");setAr();setOr();();}}}else{}}}});}etName();ar[i][7]=().getAddress();}}private void setArNull(){for(int i=0;i<;i++){for(int j=0;j<ar[i].length;j++){ar[i][j]="";}}}etName();or[i][3]=().getPrice();or[i][4]=().getDiscount();or[i][5]=().getPrice()*().getDiscount()*;or[i][6]=();or[i][7]=().getName();or[i][8]=().getAddress();}}private void setOrNull(){for(int i=0;i<;i++){for(int j=0;j<or[i].length;j++){or[i][j]="";}}}public static void main(String[] args) {BuyerFrame frame = new BuyerFrame();(true);}}package class LoginFrame extends JFrame{ private JLabel userNameLabel = new JLabel("用户名:");private JLabel pwdLabel = new JLabel("密码:");private JTextField useNameText = new JTextField();private JPasswordField pws = new JPasswordField();private JLabel roleLabel = new JLabel("角色:");private JComboBox roleBox = new JComboBox(new String[]{"商家","买家"}); private JButton bt = new JButton("确定");private JButton btR = new JButton("取消");private String flag = null;public LoginFrame(){init();}private void init(){(320, 280);("登录");(new ImageIcon("images/").getImage());(null);(false);;(null);(40, 20, 150, 30);(userNameLabel);(120, 20, 150, 30);(useNameText);(40, 80, 150, 30);(pwdLabel);(120, 80, 150, 30);(pws);(40, 140, 70, 30);(roleLabel);(120, 140, 150, 30);(roleBox);(40, 200, 70, 30);(btR);(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) { quals(f)){flag = "seller";}if("买家".equals(f)){flag = "customer";}if("seller".equals(flag)){Seller seller = (), ());"-----"+());if()==null){(null, "用户名或密码输入错误");}else{setVisible(false);SellerFrame fame = new SellerFrame();(true);}}if("customer".equals(flag)){Buyer buyer = (), ());if()==null){(null, "用户名或密码输入错误");}else{setVisible(false);BuyerFrame frame = new BuyerFrame();(true);}}2012-9-20etImage());(300, 400);etImage());(600, 400);;(null);(menuBar,;setGoodsPanel();;(goodsPanel,;;setSouthPanel();setOrderPanel();(southPanel,;}quals())){(null, "请输入商品编号!");}else{int id = ());UpdateFrame frame = new UpdateFrame();Goods goods = new GoodsDao().getOneGoods(id);if()!=0){(goods);(goods);(true);}else{(null, "商品编号输入错误!");}}}});(btDelet);quals())){(null, "请输入商品编号!");}else{int id = ());GoodsDao dao = new GoodsDao();if(null, "您确定要删除吗")==0){if(id)!=0){(null, "删除成功!");}else{(null, "商品编号输入错误!!");}}else{}}}});(btAdd);(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) { etName();ar[i][7]=().getAddress();}}private void setArNull(){for(int i=0;i<;i++){for(int j=0;j<ar[i].length;j++){ar[i][j]="";}}}etName();or[i][3]=().getPrice();or[i][4]=().getDiscount();or[i][5]=().getPrice()*().getDiscount()*;or[i][6]=();or[i][7]=();}}private void setOrNull(){for(int i=0;i<;i++){for(int j=0;j<or[i].length;j++){or[i][j]="";}}}public static void main(String[] args) {SellerFrame frame = new SellerFrame();(true);}}package class UpdateFrame extends JFrame{private static final Goods Goods = null;private JLabel lbName = new JLabel("商品名:");private JLabel lbPrice = new JLabel("价格:");private JLabel lbDiscount = new JLabel("折扣:");private JLabel lbNum = new JLabel("数量:");private JTextField fieldName = new JTextField(20);private JTextField fieldPrice = new JTextField(20);private JTextField fieldDiscount = new JTextField(20);private JTextField fieldNum = new JTextField(20);private JButton btSure = new JButton("修改");private JButton btCancel = new JButton("取消");private Goods goods = new Goods();public UpdateFrame(){init();}private void init(){(320, 330);("修改商品信息");(new ImageIcon("images/").getImage());(null);(null);(false);// ;(null);setText(goods);setContentPanel();}private void setContentPanel(){(30, 30, 80, 30);(130, 30, 150, 30);(30, 90, 80, 30);(130, 90, 150, 30);(30, 150, 80, 30);(130, 150, 150, 30);(30, 200, 80, 30);(130, 200, 150, 30);(30, 250, 70, 30);(210, 250, 70, 30);(lbName);(fieldName);(lbPrice);(fieldPrice);(lbDiscount);(fieldDiscount);(lbNum);(fieldNum);(btCancel);(btSure);(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubsetVisible(false);}});(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubif(null, "您确定要修改吗")==0){GoodsDao dao = new GoodsDao();()));());()));()));(goods);setVisible(false);(null, "修改成功!");}else{//}}});}public void setText(Goods goods){());()));()));()));}public Goods getGoods() {return goods;}public void setGoods(Goods goods) {= goods;}public static void main(String[] args) { UpdateFrame frame = new UpdateFrame();(true);}}数据库SQL语句:create table seller(seller_id varchar2(20) primary key,seller_name varchar2(20),pwd varchar2(20),address varchar2(200))insert into seller values('niclascage','长理专卖店','123456','湖南长沙')select * from sellerdrop table sellercommitcreate table buyer(buyer_id varchar(20) primary key,buyer_name varchar(20),pwd varchar2(20),address varchar(200))insert into buyer values('lina','林大专卖店','123456','湖南长沙')select * from buyerdrop table buyercreate table goods(goods_id int primary key,seller_id varchar(20),goods_name varchar(50),price int,discount int,num int,constraint fk_seller_id foreign key(seller_id) references seller(seller_id))insert into goods values(1,'niclascage','Java',40,8,20)select * from goodsdrop table goodscreate table orders(order_id int primary key,goods_id int,seller_id varchar(20),buyer_id varchar(20),num int,constraint fk_goods_id foreign key(goods_id) references goods(goods_id), constraint fk_sellers_id foreign key(seller_id) references seller(seller_id),constraint fk_buyer_id foreign key(buyer_id) references buyer(buyer_id) )select * from ordersinsert into orders values(1,1,'niclascage','lina',2)drop table orders;drop table goods;drop table buyer;drop table seller;。
网上书店售书管理系统数据库设计说明书版本信息目录1 引言 (1)1.1 编写目的 (1)1.2 背景 (1)1.3 定义 (1)1.4 参考资料 (1)2 外部设计 (1)2.1 标识符和状态 (1)2.2约定 (1)字符集采用UTF-8,请注意字符的转换。
(1)3需求分析 (2)4结构设计 (2)4.1 概念结构设计 (2)4.2 逻辑结构设计 (9)4.2.1 表 (9)4.2.2 存储过程 (12)4.3 物理结构设计 (13)5运用设计 (14)5.1 数据字典设计 (14)6附录 (14)1 引言1.1 编写目的本说明书说明“网上书店售书管理系统”的数据库设计、结构情况,用于开发人员进行项目设计,同时也为后续的数据库维护工作提供了良好的使用说明,也可以作为未来版本升级时的重要参考资料。
1.2 背景数据库名称:BOOKSHOPDB数据库系统:SQL SERVER 2008数据库宿主环境:Windows客户端连接工具:.NET设计软件:PowerDesigner 15.21.3 定义数据选项约束表:用于为其他数据表中的字符型字段提供限定的选项。
实体表:用户实际使用的客观表格。
计算表:数据来自于对其他一个或多个实体表的计算结果。
1.4 参考资料a.本项目的《用户需求分析报告》;b.用户提供的《工作设想》;c.本项目相关的其他参考资料。
2 外部设计2.1 标识符和状态数据库标示符:bookShop用户名:programmer密码:security权限:全部有效时间:开发阶段说明:系统正式发布后,可能更改数据库用户/密码,请在统一位置编写数据库连接字符串,在发行前请予以改正。
2.2约定字符集采用UTF-8,请注意字符的转换。
所有数据表第一个字段都是系统内部使用主键列,自增字段,不可空,确保不把此字段暴露给最终用户。
除特别说明外,所有小数的字段都采用decimal(13,3) 的形式表达。
除特别说明外,所有日期格式都采用datetime 格式,无时间值。
图书管理系统数据库源代码//创建工程及设计主界面public class Main extends JFrame{private static final JDesktopPane{DESKTOP_PANE=new JDesktopPane(); //桌面窗体}public static void main(String[] args) //入口方法{try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName( )); //设置系统界面外观new BookLogin(); //登录窗口}catch(Exception ex){ex.printStackTrace();}}public static void addIFame(JInternalFrame iframe) //添加子窗体的方法{DESKTOP_PANE.add(iframe); //新增子窗体}public Main(){super(); //设置“关闭”按钮处理事件setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //创建工具栏Toolkit tool=Toolkit,getDefaultToolkit(); //获得屏幕大小Dimension screenSize=tool.getScreenSize();setSize(800,600); //设置窗体大小setLocation((screenSize.width-getWidth())/2,(screenSize.height-ge tHeight())/2; //设置窗体位置setTitle("图书管理系统"); //设置窗体标题JMenuBar menuBar=createMenu(); //创建菜单栏setJMenuBar(menuBar); //设置菜单栏JToolBar toolBar=createToolBar(); //创建工具栏的方法getContentPane(),add(toolBar,BorderLayout.NORTH); //设置工具栏final JLable lable=new JLable(); //创建一个标签,用来显示图片lable.setBounds(0,0,0,0); //设置窗体的大小和位置lable.setIcon(null); //窗体背景DESKTOP_PANE.addComponentListener(new ComponentAdapter()){public void componentResized(final ComponentEvent e){Dimension size=e.getComponent().getSize(); //获得组建大小lable.setSize(e.getComponent().getSize()); //设置标签大小lable.setText("<html><imgwidth="+size.width+"height="+size.height+"src='"+this.getClass().getR esource("/backImg.jpg")+"'></html>");//设置标签文本,设置窗口背景}} //将标签添加到桌面窗体DESKTOP_PANE.add(lable,new Integer(Integer.MIN_VALUE));getContentPane().add(DESKTOP_PANE); //将桌面窗体添加到主窗体中}}private JToolBar createToolBar() //创建工具栏的方法{JToolBar toolBar=new JToolBar(); //初始化工具栏toolBar.setFloatable(false); //设置是否可以移动工具栏toolBar.setBorder(new BevelBorder(BevelBorder.RAIZED)); //设置边框//图书信息添加按钮JButton bookAddButton=new JButton(MenuActions.BOOK_ADD);ImageIcon icon=newImageIcon(Main.class.getResource("/bookAddtb.jpg")); //添加菜单栏图标bookAddButton.setIcon(icon); //设置按钮图标bookAddButton.setHideActionText(true); //显示提示文本toolBar.add(bookAddButton); //添加到工具栏中JButton bookModiAndDelButton=new JButton(MenuActions.BOOK_MODIFY);//图书信息修改按钮ImageIcon bookmodiicon=Icon.add("bookModiAndDeltb.jpg"); //创建图表方法bookModiAndDelButton.setIcon(bookmodiicon); //设置按钮图标bookModiAndDelButton.setHideActionText(true); //显示提示文本toolBar.add(bookModiAndDelButton); //添加到工具栏JButton bookTypeAddButton=new JButton(MenuActions.BOOKTYPE_ADD);//图书类别添加按钮ImageIcon bookTypeAddicon=Icon.add("bookTypeAddtb.jpg"); //创建图标方法bookTypeAddButton.setIcon(bookTypeAddicon); //设置按钮图标bookTypeAddButton.setHideActionText(true); //显示提示文本toolBar.add(bookTypeAddButton); //添加到工具栏JButton bookBorrowButton=new JButton(MenuActions.BORROW);//图书借阅按钮ImageIcon bookBorrowicon=Icon.add("bookBorrowtb.jpg"); //创建图标方法bookBorrowButton.setIcon(bookBorrowicon); //设置按钮图标bookBorrowButton.setHideActionText(true); //显示提示文本toolBar.add(bookBorrowButton); //添加到工具栏JButton bookOrderButton=new JButton(MenuActions.NEWBOOK_ORDER);//新书订购按钮ImageIcon bookOrdericon=Icon.add("bookOrdertb.jpg"); //创建图标方法bookOrderButton.setIcon(bookOrdericon); //设置按钮图标bookOrderButton.setHideActionText(true); //显示提示文本toolBar.add(bookOrderButton); //添加到工具栏JButton bookCheckButton=new JButton(MenuActions.NEWBOOK_CHECK);//验收新书按钮ImageIcon bookCheckicon=Icon.add("newbookChecktb.jpg");//创建图标方法bookCheckButton.setIcon(bookCheckicon); //设置按钮图标bookCheckButton.setHideActionText(true); //显示提示文本toolBar.add(bookCheckButton); //添加到工具栏JButton readerAddButton=new JButton(MenuActions.READER_ADD);//读者信息添加按钮ImageIcon readerAddicon=Icon.add("readerAddtb.jpg"); //创建图标方法readerAddButton.setIcon(readerAddicon); //设置按钮图标readerAddButton.setHideActionText(true); //显示提示文本toolBar.add(readerAddButton); //添加到工具栏JButton readerModiAndDelButton=newJButton(MenuActions.READER_MODIFY); //读者信息修改按钮ImageIcon readerModiAndDelicon=Icon.add("readerModiAndDeltb.jpg"); //创建图标方法readerModiAndDelButton.setIcon(readerModiAndDelicon);//设置按钮图标readerModiAndDelButton.setHideActionText(true); //显示提示文本toolBar.add(readerModiAndDelButton); //添加到工具栏JButton ExitButton=new JButton(MenuActions.EXIT); //退出系统按钮ImageIcon Exiticon=Icon.add("exittb.jpg"); //创建图标方法ExitButton.setIcon(Exiticon); //设置按钮图标ExitButton.setHideActionText(true); //显示提示文本toolBar.add(ExitButton); //添加到工具栏return toolBar;}public class Business{protected static String dbClassName="com.mysql.jdbc.Driver"; //数据库驱动类protected static String dbUr1="jdbc:mysql://localhost/ts"; //连接URLprotected static String dbUser="root"; //数据库用户名protected static String dbpwd="root"; //数据库密码private static Connection conn=null; //数据库连接对象,初值为nullpublic Business(){try{if(coon==null) //连接对象为空{Class.forName(dbClassName); //加载驱动类信息conn=DriverManager.getConnection(dbUr1,dbUser,dbPwd); //建立连接对象}}catch(Exception ee){ee.printStackTrace();}}public static ResultSet executeQuery(String sql) //执行查询方法{try{//如果连接对象为空,则重新调用构造方法if (conn==null){new Business();returnconn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR _UPDATABLE).executeQuery(sql);//执行查询}}catch(SQLException e){e.printStackTrace();return null; //返回null值}finally{}}public static int executeUpdata(String sql) //更新方法{try{if(conn==null){new Business(); //如果连接对象为空,则重新调用构造方法return conn.createStatement().executeUpdate(sql); //执行更新}}catch(SQLException e){e.printStackTrace();return -1;}finally{}}public static void close() //关闭方法{try{conn.close(); //关闭连接对象}catch(SQLException e){e.printStackTrace();}finally{conn=null; //设置连接对象为null值}}}//为数据库添加对应的类public class BookInfo{private String Book_id; //图书编号private String typeid; //类别编号private String writer; //作者private String translator; //译者private String publisher; //出版社private Date date; //出版日期private Double price; //图书单价private String getBookname; //图书名称public String getBookname(){return bookname;}public void setBookname(String bookname) {this.bookname=bookname;}public Date getDate(){return date;}public void setDate(Date date){this.date=date;}public string getBook_id(){return Book_id;}public void setBook_id(String Book_id){this.Book_id=Book_id;}public Double getPrice(){return price;}public void setprice(Double price){this.price=price;}public String getPublisher(){return Publisher;}public void setPublisher(String publisher) {this.Publisher=Publisher;}public String getTranslator(){return translator;}public void setTranslator(String translator) {this.translator=translator;}public String getTypeid(){return typeid;}public void setTypeid(String typeid){this.typeid=typeid;}public String getWriter(){return writer;}public void setWriter(String writer){this.writer=writer;}}public class BookType //图书列表信息类{private String id; //图书类别编号private String typeName; //图书类别名称private String days; //可解天数private String fk; //每罚款金额public String getFk(){return fk;}public void setFk(String fk){this.fk=fk;}public String getDays(){return days;}public void setDays(String days){this.days=days;}public string getId(){return id;}public void setId(String id){this.Bid=id;}public String getTypeName(){return typeName;}public void setTypeName(String typeName){this.typeName=typeName;}}public class Order //图书订单信息类{private String Book_id; //图书编号private Date date; //下单时间private String number; //图书数量private String operator; //操作员private String checkAndAccept; //是否收到货private String zk; //图书折扣public String getcheckAndAccept(){return checkAndAccept;}public void setcheckAndAccept(String checkAndAccept) {this.checkAndAccept=checkAndAccept;}public Date getDate(){return date;}public void setDate(Date date){this.date=date;}public string getBook_id(){return book_id;}public void setBook_id(String book_id){this.book_id=book_id;}public String getNumber(){return number;}public void setNumber(String number){this.number=number;}public String getOperator(){return operator;}public void setOperator(String operator) {this.operatorr=operator;}public String getZk(){return zk;}public void setZk(String Zk){this.zk=zk;}}public class Operater{private String id; //操作员编号private String name; //操作员用户名private String grade; //操作员等级private String password; //操作员密码private String type; //出版社public String getType(){return type;}public void setType(String type){this.type=type;}public string getGrade(){return grade;}public void setGrade(String grade){this.grade=grade;}public String getId(){return id;}public void setId(String id){this.id=id;}public String getName(){return name;}public void setName(String name){=name;}public String getPassword(){return password;}public void setPassword(String password){this.password=password;}}public class Borrow //书籍借阅信息类{private int id; //借阅编号private String book_id; //图书编号private String reader_id; //读者编号private String num; //借书数量private String borrowDate; //借书日期private String backDate; //应还日期private String Bookname; //图书名称public String getBookname(){return bookname;}public void setBookname(String bookname) {this.bookname=bookname;}public string getBackDate(){return backDate;}public void setBackDate(String backDate) {this.backDate=backDate;}public string getBorrowDate(){return borrowDate;}public void setBorrowDate(String borrowDate) {this.borrowDate=borrowDate;}public String getNum(){return num;}public void setNum(String num){this.num=num;}public String getBook_id(){return book_id;}public void setBook_id(String book_id){this.book_id=book_id;}public String getReader_id(){return reader_id;}public void setReader_id(String reader_id) {this.reader_id=reader_id;}public int getId(){return id;}public void setId(Int id){this.id=id;}}public class Back //图书归还信息类{private String book_id; //图书编号private String bookname; //图书名称private String operatorId; //操作员编号private String borrowDate; //图书借阅时间private String backDate; //图书归还时间private String readerName; //读者姓名private String reader_id; //读者编号private int typeId;private int id;public int getId(){return id;}public void setId(int id){this.id=id;}public int getTypeId(){return typeid;}public void setTypeId(int typeid){this.typeId=typeId;}public string getBackDate(){return backDate;}public void setBackDate(String backDate){this.backDate=backDate;}public String getBookname(){return bookname;}public void setBookname(String bookname){this.bookname=bookname;}public string getBorrowDate(){return borrowDate;}public void setBorrowDate(String borrowDate) {this.borrowDate=borrowDate;}public String getOperatorId(){return operatorId;}public void setOperatorId(String operatorId) {this.operatorId=operatorId;}public String getBook_id(){return book_id;}public void setBook_id(String book_id){this.book_id=book_id;}public String getReader_id(){return reader_id;}public void setReader_id(String reader_id){this.reader_id=reader_id;}public String getReaderName(){return readerName;}public void setReaderName(String readerName){this.readerName=readerName;}}//系统登录模块设计public class BookLogin extends JFrame{private static final Operater Type=null; //人员类型private static Operater user; //用户名private JPasswordField password;private JTextField username;private JButton login;private JButton reset;public BookLogin(){super();final BorderLayout borderLayout=new BorderLayout(); //创建布局管理器setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置“关闭”按钮处理事件borderLayout.setVgap(10); //设置组件间的垂直关系getContentPane().setLayout(borderLayout); //使用布局管理器setTitle("图书管理系统登录") //设置窗体标题Toolkit tool=Toolkit.getDefaultToolkit(); //获得默认的工具箱Dimension screenSize=tool.getScreenSize(); //获得屏幕的大小setSize(285,194);setLocation((screenSize.width-getWidth())/2,(screenSize.height-ge tHeight())/2); //设置窗体位置final JPanel mainPanel=new JPanel(); //创建主面板mainPanel.setLayout(new BorderLayout()); //设置边框布局mainPanel.setBorder(new EmptyBorder(0,0,0,0)) //设置边框为0getContentPane().add(mainPanel); //在窗体中加入主面板final JLabel imageLabel=new JLabel; //创建一个标签,用来显示图片ImageIcon loginIcon=Icon.add("login.jpg"); //创建一个图像图标imagelabel.setIcon(loginIcon); //设置图片imageLabel.setOpaque(true); //设置绘制其边界内的所有像素imageLabel.setBackground(Color.GREEN); //设置背景颜色imageLabel.setpreferredSize(new Dimension(260,60)); //设置标签大小mainPanel.add(imageLabel,BorderLayout.NORTH); //添加标签到主面板final JPanel centerPanel=new JPanel(); //添加一个中心面板final GridLayout gridLayout=new GridLayout(2,2); //创建网络布局管理器gridLayout.setHgap(5); //设置组件之间平行的距离gridLayout.setVgap(20); //设置组件之间垂直的距离centerPanel.setLayout(gridLayout); //使用布局管理器mainPanel.add(centerPanel); //添加到主桌面final JLabel userNamelabel=new JLabel(); //创建一个标签userNameLabel.setHorizontalAlignment(SwingConstants.CENTER); //设置对齐方式userNameLabel.setPreferredSize(new Dimension(0,0)); //设置组件大小userNameLabel.setMinimumSize(new Dimension(0,0)); //设置组件最小的大小centerPanel.add(userNameLabel); //添加到中心面板userNameLabel.setText("用户名:"); //设置标签文本username=new JTextField(20); //创建文本框username.setPreferredSize(new Dimension(0,0)); //设置组件大小centerPanel.add(username); //添加到中心面板final JLabel passwordLabel=new JLabel(); //创建一个标签passwordLabel.setHorizontalAlignment(SwingConstants.CENTER); //设置对齐方式centerPanel.add(passwordLabel); //添加到中心面板passwordLabel.setText("密码:"); //设置标签文本password=new JPasswordField(20); //创建密码框password.setDocument(new Document(6)); //设置密码长度为6password.addKeyListener(new KeyAdapter() //监听密码框{public void keyPressed(final keyEvent e) //监听键盘案件事件{if(e.getKeyCode()==10) //如果按了回车键{login.doClick(); //进行登录}}centerPanel.add(password); //添加到中心面板final JPanel southPanel=new JPanel; //新增一个底部面板mainPanel.add(southPanel,BorderLayout.SOUTH); //添加到主面板中login=new JButton(); //创建按钮组件login.addActionListener(new BookLoginAtion()); //添加监听器login.setText("登录"); //设置按钮文本southPanel.add(login); //把按钮添加到底部面板reset=new JButton(); //创建按钮组件reset.addActionListener(new BookResetAction()); //添加监听器reset.setText("重置"); //设置按钮文本southPanel.add(reset); //把按钮添加到底部面板setVisible(true); //设置创建可见setResizable(false); //设置窗体不可改变大小}public static Operater getUser(){return user;}public static Operater getType(){return Type;}public static void setUser(Operater user){er=user;}}private class BookResetAction implements ActionListener{public void actionPerformed(final ActionEvent e){username.setText(""); //设置用户名输入框为空password.setText(""); //设置密码输入框为空}}private class BookLoginAction implements ActionListener{public void actionPerformed(final ActionEvent e){user=Business.check(username.getText(),newString(password.getPassword())); //调用business方法if(user.getName()!=null) //判断用户名是否为nulltry{Main frame=new Main(); //创建一个主窗体frame.setVisible(true); //设置其可见BookLogin.this.setVisible(false); //设置登录窗体为不显示}catch(Exception ex){ex.printStackTrace();}}else{JOptionPane.showMessageDialog(null,"请输入正确的用户名和密码!"); //弹出提示框username.setText(""); //设置用户名输入框为空password.setText(""); //设置密码输入框为空}}}//基本信息管理模块public class ReaderAdd extends JInternalFrame //添加读者信息{public ReaderAdd(){super();setTitle("读者相关信息添加");setIconifiable(true); //设置窗体可最小化setClosable(true); //设置窗体可关闭setBounds(100,100,500,350);final JLabel logoLabel=new JLabel();ImageIcon readerAddIcon=Icon.add("readerAdd.jpg");logoLabel.setIcon(readerAddIcon);logoLabel.setOpaque(true);logoLabel.setBackground(Color.CYAN);logoLabel.setPreferredSize(new Dimension(400,60));getContentPane().add(logoLabel,BorderLayout.NORTH);final JPanel panel=new JPanel();panel.setLayout(new FlowLayout());getContentPane().add(panel);final JPanel panel_1=new JPanel();final GridLayout gridLayout=new GridLayout(0,4);gridLayout.setVgap(15);gridLayout.setHgap(15);panel_1.setLayout(gridLayout);panel_1.setPreferredSize(new Dimension(450,200));panel.add(panel_1);final JLabel label_2=new JLabel();label_2.setText("姓名:");panel_1.add(label_2);readername=new JTextField();readername.setDocument(new Document(10));panel_1.add(readername);final JLabel label_3=new JLabel();public void actionPerformed(final ActionEvent e) {Check validator=new Check(); //校验类String zj=String.valueof(comboBox.getSelectedIndex());String id=read_id.getText().trim();Vector v1=new Vector();v1.clear();v1.add("reader"); //读取配置文件中相应的查询语句v1.add(id);if(l==validator.Validate(V1)) //检查是否存在该读者{JOptionPane.showMessageDialog(null,"添加失败,该读者编号已存在!");}else{Inti=Business.InsertReader(readername.getText().trim(),sex.trim(),age.ge tText().trim(),zjnumber.getText().trim(),Date.valueOf(date.getText().trim()),maxnumber.getText().trim().te l.getText().trim(),Double.valueof(keepmoney.getText().trim()),zj,zy.getText().trim(),Date.valueOf(bztime.getText().trim()),read _id.getText().trim());if(i==1){JOptionPane.showMessageDialog(null,"添加成功!");doDefaultCloseAction();}}}}class TelListener extends KeyAdapter{public void keyTyped(KeyEvent e){String numStr="0123456789-"+(char)8; //类型转换if(numStr.indexOf(e.getKeyChar())<0){e.consume();}}}//添加“关闭”按钮的事件监听器class CloseActionListener implements ActionListener{public void actionPerformed(final ActionEvent e){doDefaultCloseAction();}}private String[] columnNames("名称","性别","年龄","证件号码","借书证有效日期","借书量","电话","押金","证件","职业","读者编号","办证时间");private String[] array=new String[]{"身份证","军人证","学生证"}; String id;private Object[][] getFileStates(List list){Object[][]results=new Object[list.size()][columnNames.length];for(int i=0;i<list.size();i++){Reader reader=(Reader)list.get(i);result[i][0]=reader.getName(); //定义二维数组String sex;if(reader.getSex().equals("1")){sex="男";}else{sex="女";}results[i][1]=sex; //读取读者歌属性值results[i][2]=reader.getAge();results[i][3]=reader.getIdentityCard();results[i][4]=reader.getDate();results[i][5]=reader.getMaxNum();results[i][6]=reader.getTel();results[i][7]=reader.getKeepMoney();results[i][8]=array[reader.getZj()];results[i][9]=reader.getZy();results[i][10]=reader.getBook_id();results[i][11]=reader.getBZtime();}return results;}//图书类别管理//添加图书信息utton.addActionListener(new ActionListener(){public void actionPerformed(final ActionEvent e){if(bookTypeName.getText().length()==0){JOptionPane.showMMessageDialog(null,"图书类别文本框不可为空");return;}if(days.getText().length()==0){JOptionPane.showMessageDialog(null,"可借天数文本框不可为空");return;}if(!check.isNumeric(days.getText().trim())){JOptionPane.showMessageDialog(null,"可借天数必须为数字");return;}if(fakuan.getText().length()==0){JOptionPane.showMessageDialog(null,"罚款文本框不可为空");return;}if(!check.isNumeric(fakuan.getText().trim())){JOptionPane.showMessageDialog(null,"罚款必须为数字");return;}inti=Business.InsertBookType(bookTypeName.getText().trim(),days.getText( ).trim(),Double.valueof(fakuan.getText.trim())/10);if(i==1){JOptionPane.showMessageDialog(null,"添加成功!");doDefaultCloseAction();}}});panel_6.add(button);final JButton buttonDel=new JButton();buttonDel.setText("关闭");buttonDel.addActionListener(new ActionListener(){public void actionPerformed(final ActionEvent e){doDefaultCloseAction();}});panel_6.add(buttonDel);setVisibel(true);}//修改图书类class ButtonAddListener implements ActionListener{public void actionPerformed(ActionEvent e){Object selectedItem=bookTypeModel.getSelectedItem();inti=Business.UpdatebookType(BookTypeId.getText().trim(),selectedItem.to String(),days.getText().trim(),fk.getText().trim());if(i==1){JOptionPane.showMessageDialog(null,"修改成功");object[][]results=getFileStates(Business.selectBookCategory());model.setDataVector(results.columnNames);table.setModel(model);}}}。
附录:Default.aspx 用来显示主页<%@Page Language=”C#"MasterPageFile="~/common。
master"AutoEventWireup=”true”CodeFile="Default.aspx。
cs”Inherits="_Default"Title=”首页|第三波+书店”%>〈asp:Content ID=”Content1"ContentPlaceHolderID=”cphContent"Runat="Server"> <table width=”98%”border=”0"cellspacing="0”cellpadding=”0"〉<tr>〈td height="10"bgcolor="#BBE188"〉</td〉</tr〉〈/table><br/>〈table width=”98%”border=”0"cellspacing="0"cellpadding="0">〈tr><td align=”left”〉<img src="images/06default_1018_28。
gif"width="77”height=”18"/〉</td〉〈td align="right">&nbsp;</td></tr〉</table〉<br/〉<table width="98%”border=”0”cellspacing=”0"cellpadding=”0”><tr><td width=”120"height=”155”align="left”valign="top"><a href="BookDetail.asp x?bid=4943”target="_blank"〉<img src=”BookCover。
广西交通职业技术学院信息工程系作品设计报告书题目:《图书管理系统》班级网络2012-1班学号 20120404026姓名唐张森课程名称数据库应用技术指导教师乐文行二O一三年六月目录数据库课程设计报告书一、设计目标1.掌握计算机管理信息系统设计的一般方法,主要包括系统分析、系统设计的组织和实施。
2.关系型数据库管理系统的编程技术,并能独立完成一般小系统的程序设计、调试运行等工作。
3.培养把所学知识运用到具体对象,并能求出解决方案的能力。
二、数据库存储设计指导思想在数据库存储设计的无数选择中,简单是系统架构师和 DBA 的秘密武器。
简单,有时候就来自于对一个特定的表或表空间没有选择最优 I/O 特性,总有这么一种可能,一个富有经验的 DBA 拥有高超的存储技能并可以没有时间限制的去为一个非常重要的表或者索引配置一个存储。
然而这样做的问题是,就算能达到设计的最佳性能,为了维护原始对象,这也经常造成对一个系统的管理变得更加复杂。
好的数据库存储设计的要点是,在一个动态系统上,实现所有目标应该是最初的系统设计的一部分,并应该在数据库运行过程中长期进行。
这篇文档简单的最佳实践描述达到了这些目标并且几乎没有性能损失。
三、任务角色:读者、图书馆馆员、系统管理员;基础数据:读者信息、图书信息、操作员信息;业务数据:借还书记录登记、罚款登记;统计数据:书籍借阅情况统计或读者借阅情况统计。
基本要求:利用数据库技术,完成基础数据和业务数据的储存和操作,数据库设计合理1.设计报告:含E-R图、数据字典、关系模式、关系实例、查询描述、关系代数、SQL 实现的查询语言及查询结果。
2.上机实现。
1.问题描述1.1背景随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。
网络书店系统数据库设计说明书目录1引言 (3)1.1编写目的 (3)1.2背景 (3)1.3定义 (3)1.4参考资料 (3)2外部设计 (4)2.1标识符 (4)2.2使用它的程序 (4)2.3约定 (4)2.4支持软件 (5)3结构设计 (6)3.1系统数据分布 (6)3.2概念结构设计 (6)3.3逻辑结构设计 (8)4数据库实现 (8)4.1数据库建立 (8)4.2数据库初始化 (9)4.3参数设置 (9)1引言1.1编写目的这份数据库说明书是为了说明本小组项目(网络书店系统)的数据库的相关信息,以供本小组其它成员在使用到数据库时更顺利,以及为了使更好的进行具体的数据库设计。
1.2背景为了更好的为本小组的项目(网络书店系统)服务,使用了本小组成员都熟悉的数据库MYSQL,且免费,节省费用。
1.3定义1.关系模型:用二维表格结构表示实体集,外键表示实体间联系的数据模型称为关系模型。
关系模型是由若干个关系模式组成的集合。
2.关系模式:关系模式实际上就是记录类型。
它包括:模式名,属性名,值域名以及模式的主键。
关系模式仅是对数据特性的描述。
3.关系实例:就是一个关系,即一张二维表格。
4.属性:在关系模型中,字段称为属性。
5.域:在关系中,每一个属性都有一个取值范围,称为属性的值域。
6.元组:在关系中,记录称为元组。
7.候选码:在关系中能唯一标识元组的属性集称为关系模式的候选码。
8.主码:用户选作元组标识的一个候选码为主码。
9.外码:某个关系的主码相应的属性在另一关系中出现,此时该主码在就是另一关系的外码,如有两个关系S和SC,其中S#是关系S的主码,相应的属性S#在关系SC中也出现,此时S#就是关系SC的外码。
10.实体完整性规则:这条规则要求关系中元组在组成主码的属性上不能有空值。
如果出现空值,那么主码值就起不了唯一标识元组的作用。
11.参照完整性规则:这条规则要求“不引用不存在的实体”。
其形式定义如下:如果属性集K是关系模式R1的主码,K也是关系模式R2的外码,那么R2的关系中,K的取值只允许有两种可能,或者为空值,或者等于R1关系中某个主码值。
图书管理系统代码//***********************//图书馆管理系统//***********************#include<stdio.h>#include<string.h>#include<malloc.h>#define null 0#define max 65536static int n;//*********************// 图书结构体//*********************typedef struct{char num[10]; //书号char name[9]; //书名char addr[31]; //作者int Nowcounter; //现存量int Allcounter; //总库存量}datatype;datatype *x[max]; //定义两个指针数组datatype *p;//*****************************//图书功能函数列表//*****************************void redo(); //主递归函数void creatlist(datatype *x[]); //图书建立函数int menu_select(); //功能菜单函数void find(datatype *x[],int n); //查找函数void delnode(datatype *x[]); //插入函数void printlist(datatype *x[]); //显示函数void jieyue(datatype *x[],int n); //借阅函数void guihuan(datatype *x[],int n); //归还函数//*****************************//主递归函数程序//*****************************void redo(){int i=0,j,n1,k=0,flage;for( ; ;){switch( menu_select()){case 1: //选项1的实现printf("***********************\n");printf("* 图书的建立*\n");printf("***********************\n");creatlist(x);break;case 2: //选项2的实现printf("***********************\n");printf("* 新图书信息的添加*\n");printf("***********************\n");printf(" 插入的个数:");scanf("%d",&n1); //输入插入新图书的个数for(i=0;i<n1;i++){flage=0;p=(datatype *)malloc(sizeof(datatype)); //分配一个节点空间printf(" 书名: ");scanf("%s",p->name); //输入插入书的书名if(flage==0){for(j=0;j<n;j++){if(strcmp(x[j]->name,p->name) == 0 )//调用比较函数查看书名是否已知{x[j]->Allcounter++;x[j]->Nowcounter++;flage=1;}}if(flage==0){n++;printf(" 第%d 个图书数据:\n",n); //插入新的图书p=(datatype *)malloc(sizeof(datatype));x[n-1]=p;printf(" 书名:");scanf("%s",x[n-1]->name); //输入书名printf(" 编号:");scanf(" %s",x[n-1]->num); //输入书号printf(" 作者:");scanf(" %s",x[n-1]->addr); // 输入作者名printf(" 总库存量:");scanf("%d",&x[n-1]->Allcounter); //输入总库存量x[n-1]->Nowcounter=x[n-1]->Allcounter;}}}break;case 3:printf("***********************\n");printf("* 图书信息的查询*\n");printf("***********************\n");find(x,n);break;case 4:printf("************************\n");printf("* 图书信息的删除*\n");printf("************************\n");delnode(x);break;case 5:printf("************************\n");printf("* 图书信息的显示*\n");printf("************************\n");printlist(x);break;case 6:printf("************************\n");printf(" 图书的借阅\n");printf("************************\n");jieyue(x,n);break;case 7:printf("************************\n");printf(" 图书的归还\n");printf("************************\n");guihuan(x,n);break;case 0:printf("\t 谢谢使用,再见! \n");return;}}//*************************//主函数程序//*************************void main (){redo(); //调用主递归函数}//*************************//功能菜单函数//*************************int menu_select(){int i;printf(" 欢迎进入图书管理系统!\n");printf("===========================\n");printf(" 1. 图书信息的采集\n");printf(" 2. 新图书的插入\n");printf(" 3. 图书信息的查询\n");printf(" 4. 图书的删除\n");printf(" 5. 图书的显示\n");printf(" 6. 图书的借阅\n");printf(" 7. 图书的归还\n");printf(" 0. 退出管理系统\n");printf("===========================\n");printf(" 请选择0-7: ");scanf("%d",&i);while(i<0||i>7){printf("\n\t输入出错,重选0-7: ");scanf("%d",&i);}return i;}//********************************// 建立链表图书建造函数//********************************void creatlist(datatype *x[]){int i;printf(" 请输入要建立图书的个数:");scanf("%d",&n);for(i=0;i<n;i++)printf(" 第%d 个图书数据:\n",i+1);p=(datatype *)malloc(sizeof(datatype)); //分配一个节点空间x[i]=p;printf(" 书名:"); //输入图书各项内容scanf("%s",x[i]->name);printf(" 编号:");scanf(" %s",x[i]->num);printf(" 作者:");scanf(" %s",x[i]->addr);printf(" 总库存量:");scanf("%d",&x[i]->Allcounter);x[i]->Nowcounter=x[i]->Allcounter;}}//**********************************// 查找函数程序//*********************************void find(datatype *x[],int n){char num[10];char name[9];int t,i;printf("=================\n"); //输出查找方式printf(" 1.按编号查询\n");printf(" 2.按书名查询\n");printf("=================\n");printf(" 请选择: ");scanf("%d",&t); //输入选择信息if(t==1){printf(" 请输入要查找者的编号: ");scanf("%s",num); //输入书号for(i=0;i<n;i++){if(strcmp(x[i]->num,num)==0) //调用strcmp函数{printf(" 编号书名作者现库存量总库存量\n");//输出要查询书的信息printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);elsecontinue;}}else{printf(" 请输入要查询的书名: ");scanf("%s",name); // 输入书名for(i=0;i<n;i++){if(strcmp(x[i]->name,name)==0){printf("编号书名作者现库存量总库存量\n"); //输出要查询书的信息printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i ]->Nowcounter,x[i]->Allcounter);}elsecontinue;}}}//******************************//删除函数程序//******************************void delnode(datatype *x[]){char num1[10],name1[10]; //定义两个字符数组int i,j,m=1,p;printf(" 1.按编号删除\n"); //输出选择方式printf(" 2.按书名删除\n");printf(" 3.返回\n");printf(" 请选择:\n");scanf("%d",&p); //输入选择信息if(p>3||p<1){printf(" 您的输入有误,请重新输入!\n");scanf("%d",&p); //重新输入选择信息}switch(p) //实现删除程序{case 1:printf(" 输入要删除书的编号:\n");scanf(" %s",num1);for(i=0;i<n;i++){if(strcmp(x[i]->num,num1)==0) //调用strcmp函数{m=0;n--;for(j=i;j<n;j++)x[j]=x[j+1]; //将该书信息删除printf(" 该书已删除!\n");}}if(m==1)printf(" 没有这样的的图书\n");break;case 2:printf(" 输入要删除书的名字:\n");scanf("%s",&name1);for(i=0;i<n;i++){if(strcmp(x[i]->name,name1)==0) //调用strcmp函数{m=0;n--;for(j=i;j<n;j++) //将该书信息删除x[j]=x[j+1];printf(" 该书已删除!\n");}}if(m==1)printf(" 没有这样的的图书\n");break;case 3:break;}}//////////////////////////////借阅函数程序/////////////////////////void jieyue(datatype *x[],int n){int i,m=1,p;char name1[10],num1[10]; //定义两个字符数组printf(" 1.按名字借阅\n"); //输出选择方式printf(" 2.按编号借阅\n");printf(" 3.返回\n");printf(" 请选择\n");scanf("%d",&p); //输入选择信息if(p>3||p<1){printf(" 您的输入有误!\n");scanf("%d",&p); //重新输入选择信息}switch(p) //实现查询程序{case 1:printf(" 请输入你要的书的名字!\n");scanf("%s",&name1); // 输入书名for(i=0;i<n;i++){if(strcmp(x[i]->name,name1)==0) //调用strcmp函数{m=0;if(x[i]->Nowcounter!=0)x[i]->Nowcounter--;printf(" 借书成功!\n");if(x[i]->Nowcounter==0)printf(" 这本书已经没有了\n");}}if(m==1)printf(" 您要的书不存在!\n");break;case 2:printf(" 请输入你要的书的编号!\n");scanf("%s",&num1); // 输入书号for(i=0;i<n;i++){if(strcmp(x[i]->num,num1)==0) //调用strcmp函数{m=0;if(x[i]->Nowcounter!=0)x[i]->Nowcounter--; //现存书数量减1printf(" 借书成功!\n");if(x[i]->Nowcounter==0)printf(" 这本书已经没有了\n");}}if(m==1)printf(" 您要的书不存在!\n");break;case 3:break;}}////////////////////////////归还程序//////////////////////void guihuan(datatype *x[],int n){int i,q,m=1;char name1[10],num1[10]; //定义两个字符数组printf(" 1.按书名归还\n"); //输出可选择方式printf(" 2.按书号归还\n");printf(" 3.返回\n");printf(" 请选择\n");scanf("%d",&q); //输入选择信息if(q>3||q<1){printf(" 您的输入有误!\n");scanf("%d",&q); //重新输入选择信息}switch(q) //实现归还程序{case 1:printf(" 输入归还书的书名: ");scanf("%s",&name1); // 输入书名for(i=0;i<n;i++){if(strcmp(x[i]->name,name1)==0){m=0;x[i]->Nowcounter++;printf("此书归还成功!\n");printf("此书的存储情况\n");printf("编号书名作者现存量总存量\n"); printf("===============================================\n");printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);printf("===============================================\n");}if(strcmp(x[i]->name,name1)==0)continue;}if(m==1)printf("此书不是图书馆的!\n");break;case 2:printf("输入归还书的书号\n");scanf("%s",&num1); // 输入书号for(i=0;i<n;i++){if(strcmp(x[i]->num,num1)==0){m=0;x[i]->Nowcounter++; //显存书增加1printf("此书归还成功!\n");printf("此书的存储情况\n");printf("编号书名作者现存量总存量\n"); printf("==============================================\n");printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);printf("==============================================\n");}if(strcmp(x[i]->num,num1)==0) //调用strcmp 函数continue;}if(m==1)printf("此书不是图书馆的!\n");break;case 3:break;}}//**************************************// 输出程序//**************************************void printlist(datatype *x[]){int i;printf("编号书名作者现存量总存量\n");//输出图书各项信息for(i=0;i<n;i++){printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i ]->Nowcounter,x[i]->Allcounter);}printf("===============================================\n");}。
数据库课程设计网上书店数据库管理系统网上书店数据库系统设计概念结构设计1.书籍信息表2.供货信息表3. 订单信息表订购日期用户生成订单的时间日期型日期型的长度满足特定的日期格式订单总数每份订单书籍的数量整型10 1-9999999999发货地址管理员确定发货的地址字符型80订单状态订单的发货状态字符804.顾客信息表数据项含义说明数据类型数据长度取值围用户id唯一区分用户的表示字符型20 合法的字符用户姓名顾客的真实姓名字符型20 合法的字符用户密码用户的登录密码字符型10家庭住址顾客收货地址字符型100 合法的字符账户余额用户可用的金额整型10信用等级整型102.根据对网上书店的需求分析,画出如下实体的ER图和实体之间的关系ER图。
图-1书籍信息ER图图-2 缺货信息ER图图-3 订单信息ER图图-4 用户信息ER图图-5 供货信息ER图图-6订单详情ER图图-7供应商信息ER图图-6 实体之间关系ER图3.逻辑结构设计3.1 把ER图转换成相应的关系模型(a) 书籍{ISBN号,书籍名称,书籍作者,书籍出版年份}(b) 订单{订购号,订购人,订购日期,订购书籍,书籍数量,发货日期}(c) 库存{ISBN号,库存量,价格,折扣,库存下限}(d) 顾客{注册名,真实姓名,家庭住址,联系式,购书卡号(e) 管理员{管理员编号,管理员真实姓名,密码,具体身份,}(f) 书-订单{订单号,ISBN号,书籍数量,发货日期}(g) 订单-顾客{订单号,注册名,订购日期}(h) 库存-订单{ISBN号,订单号}3.2 数据模型的优化将关系模式订单垂直分解为书-订单,和订单-顾客。
个人体会为期近一个星期的软件能力测试实习结束了,回首整个过程,当第一次拿到实习报告的时候,真的没有想到自己能够和我的同伴们顺利的完成任务,最终事实证明我们做到了,我们学到了更多的知识。
在这期间,我们开始接触了小型的系统。
这些小型的系统分析、设计与实现巩固了我们的基础知识,让我们学会了一些编程的技巧,以及一些验证的法。
网上书店信息管理系统的设计与实现学生姓名:蒋斌指导老师:罗永红摘要本课程设计主要是设计一个网上书店信息管理的系统,实现用户的注册、登录,书店书籍的添加、删除、修改、查询及图书的购买等功能。
程序设计平台为Windows XP,程序设计语言采用JA V A,所连接的数据库是oracle 10g。
在程序设计中,采用了结构化与面向对象两种解决问题的方法。
程序通过调试运行,初步实现了目标。
关键词数据库;oracle 10g;JAVA;网上书店信息管理系统The Design and Implementation of Book Store InformationManagement SystemStudent Name:JiangBin Advisor:LuoYong-hongAbstract This course design is mainly to make a information management system of a online bookstore, The function of the system include bo ok’adding ,deleting and querying and purchase books. Program design platform is Windows XP, programming language is JA V A, are the connected database is Oracle 10g. In the program process, I adopted two solution of the structured and object-oriented. Program run through the debugger, achieving the initial goal.Keywords Database; oracle 10g; JA V A; Online Bookstore Information Management System目录1引言 (1)1.1课题背景 (1)1.2课程设计目的 (1)1.3课程设计任务 (1)2 系统结构分析 (2)2.1需求分析 (2)2.2功能模块图 (3)3 数据库设计 (4)3.1概念结构设计 (4)3.2逻辑结构设计 (6)3.3数据库表的建立 (8)4功能实现 (10)4.1注册界面 (10)4.2登录界面 (11)4.3主界面 (12)4.4书籍添加 (12)4.5书籍修改 (13)4.6图书删除 (14)4.7图书删除 (14)4.8订单查询修改 (15)5 系统技术实现 (16)5.1JAVA (16)5.2 ORACLE (16)6 结束语 (18)参考文献 (19)1引言1.1 课题背景随着计算机技术的发展以及计算机网络的逐渐普及,英特网成为人们查找信息的重要场所。
二十一世纪是信息的时代,所以信息的交换和信息流通显的特别重要。
因此网上书店的出现成为必然。
1.2 课程设计目的随着计算机的广泛应用,其逐步成为现代化的标志。
书店等,在正常运行过程中总是面对大量的客户信息,书籍信息以及两者相互作用产生的购书信息。
因此需要对客户资源、书籍资源、购书信息及书籍信息进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了书店自动化的管理,能够更快速的满足客户的要求,提高各种工作的效率,现对其设计相应的系统,以达到上述的目的。
网上书店信息管理系统的主要功能是实现书籍信息管理及购书的自动化。
围绕这一主要功能,本系统涉及到以下核心功能:上传管理,修改管理,查询管理。
除了这些核心功能外,还包括一些基本和辅助功能,如:商家和客户的注册、登录,客户的购书等。
1.3课程设计任务本课程设计任务是通过开发一个网上书店信息管理系统,学习数据库系统的设计与开发,采用Eclipse和oracle 10g等软件为开发工具。
通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。
在指导老师的帮助下,已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理。
2 系统结构分析2.1 需求分析网上书店信息管理系统是适应计算机时代发展的需要,提高管理的效率而开发设计的。
通过对书籍信息管理,使客户能轻松购买书籍。
经过综合分析,确定了网上书店信息管理系统的主要包括以下功能:(1)商家:a、商家注册功能此模块的主要功能是用于商家注册账号;b、商家登录功能此模块的主要功能是用于拥有商家账号的用户登陆系统对自己的书店进行管理;c、上传书籍功能此模块的主要功能是用于商家发布一些新书共客户查看及购买;d、书籍修改功能此模块的主要功能是用于商家修改自己书店书籍的信息;e、书籍删除功能此模块的主要功能是用于商家删除一些书籍信息;f、书籍查询功能此模块的主要功能是用于商家查询自己书店的书籍;g、订单查询功能此模块的主要功能是用于商家查询自己书店卖书的记录;(2)客户:a、商家注册功能此模块的主要功能是用于商家注册账号;b、商家登录功能此模块的主要功能是对拥有客户账号的用户登录;c、商品信息查询功能此模块的主要功能是用于客户查看所有商家的书籍信息; d 、书籍购买功能此模块的主要功能用于客户购买书籍 e 、订单查询功能此模块的主要功能是用于客户查询自己的购书记录;2.2 功能模块图根据上述的功能,可以设计出系统的总体功能模块,如图2.1所示,图2.1 系统功能模块示意图网上书店信息管理系统商家 书籍查询 客户注册 登录书籍上传书籍修改 书籍删除 订单查询注册 书籍查询 登录购买书籍 订单查询3 数据库设计3.1 概念结构设计根据需求分析抽象出信息结构,可得该系统的E-R图,(1)商家用户E-R图,如图3.1所示,Seller_id Seller_namesellerpwd address图3.1 商家用户E-R图(2)客户用户E-R图,如图3.2所示,buyer_id buyer_namebuyerpwd address图3.2 客户用户E-R图(3) 书籍信息E-R 图,如图3.3所示,图3.3 书籍信息E-R 图(4)订单E-R 图,如图3.4所示,图3.4 商家用户E-R 图(5)根据分E-R 图和需求分析,可得到总E-R 图,如图3.5所示。
orderBuyer_id Goods_idorder_id Seller_idnumgoodsprice discount numGoods_id Seller_id Goods_nam图3.5 总E-R图3.2逻辑结构设计根据上述的概念结构设计出逻辑结构,将E-R图转换为关系模型。
数据库ORCL包含以下4个表:商家信息表seller、客户信息表buyer、书籍信息表goods、订单信息表order。
(1)商家信息表seller商家信息表seller用来保存商家账号、密码等信息,表seller的结构如表3-1所示,表3-1 表seller的结构字段名说明类型长度及备注seller_id 商家编号varchar2(20) 主键seller_name 书店名称varchar2(20)pwd 密码varchar2(20)address 书店地址varchar2(200)(2) 客户信息表buyer客户信息表buyer用来保存客户账号、密码等信息,表buyer的结构如表3-2所示,表3-2 表buyer的结构字段名说明类型长度及备注buyer_id 客户编号varchar2(20) 主键buyer_name 客户名字varchar2(20)pwd 密码varchar2(20)address 客户住址varchar2(200)(3)图书信息表goods书籍信息表goods用来保存书号、书名、作者等信息。
表goods的结构如表3-3所示,表3-3 表goods的结构字段名说明类型长度及备注goods_id 书籍编号int 主键seller_id 商家编号varchar(20) 外键goods_name 书籍名称varchar(50)price 价格intdiscount 折扣intnum 书籍数量int(4)订单信息表order订单信息表order用来保存订单号、书籍编名等信息。
表order的结构如表3-4所示,表3-4 表order的结构字段名说明类型长度及备注order_id 订单编号int 主键goods_id 书籍编号varchar(20) 外键seller_id 商家编号varchar(50) 外键buyer_id 客户编号int 外键num 购买数量int3.3数据库表的建立在设计数据库表结构之前,首先要创建一个数据库实例。
本系统使用的数据库为oracle 10g。
数据库表的建立语句如下:--商家create table seller(seller_id varchar2(20) primary key,seller_name varchar2(20),pwd varchar2(20),address varchar2(200));--客户create table buyer(buyer_id varchar(20) primary key,buyer_name varchar(20),pwd varchar2(20),address varchar(200));--书籍create table goods(goods_id int primary key,seller_id varchar(20),goods_name varchar(50),price int,discount int,num int,constraint fk_seller_id foreign key(seller_id) references seller(seller_id));--订单create table orders(order_id int primary key,goods_id int,seller_id varchar(20),buyer_id varchar(20),num int,constraint fk_goods_id foreign key(goods_id) references goods(goods_id),constraint fk_sellers_id foreign key(seller_id) references seller(seller_id),constraint fk_buyer_id foreign key(buyer_id) references buyer(buyer_id));4功能实现该程序实现了网上书店信息管理系统应有的功能,即账号注册、登录功能、书籍查询、书籍添加、书籍删除、书籍修改、书籍购买功能。