网上书店管理系统(附程序源代码)
图书馆管理系统源代码
![图书馆管理系统源代码](https://img.taocdn.com/s3/m/185adda4b0717fd5360cdcaf.png)
源程序清单1、文件名 login(login.frm)功能说明:整个系统的登陆界面,需要输入用户名和登陆密码才能进入到系统中,进行借阅等操作。
源代码:Option ExplicitDim cnt As IntegerPrivate Sub Command1_Click()Dim sql As StringDim rs_login As New ADODB.RecordsetIf Trim(Combo1.Text) = "" ThenMsgBox "没有这个用户", vbOKOnly + vbExclamation, ""Combo1.SetFocusElsesql = "select * from 系统管理 where 用户名='" & Combo1.Text & "'" rs_login.Open sql, conn, adOpenKeyset, adLockPessimisticIf rs_login.EOF = True ThenMsgBox "没有这个用户", vbOKOnly + vbExclamation, ""Combo1.SetFocusElseIf Trim(rs_login.Fields(1)) = Trim(txtpwd.Text) ThenuserID = Combo1.Textrs_login.CloseUnload Meform1.ShowElseMsgBox "密码不正确", vbOKOnly + vbExclamation, ""txtpwd.SetFocusEnd IfEnd Ifcnt = cnt + 1If cnt = 3 ThenUnload MeEnd IfExit SubEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Dim connectionstring As Stringconnectionstring = "provider=Microsoft.Jet.oledb.4.0;" & _"data source=book.mdb"conn.Open connectionstringcnt = 0End SubPrivate Sub txtuser_Change()End Sub2、文件名 form1(form1.frm)功能说明:整个系统的主界面,其中包括图书管理、读者管理、图书借阅管理、系统管理、关于,以及在这下面的子菜单。
基于Java的网上书店系统的设计与实现(含源文件)
![基于Java的网上书店系统的设计与实现(含源文件)](https://img.taocdn.com/s3/m/dd6a58e9ff00bed5b8f31da1.png)
盐城师范学院毕业论文(设计)2013-2014学年度基于Java的网上书店系统的设计与实现-书籍管理部分学生姓名学院专业软件工程班级学号指导教师2014年5 月23日基于Java的网上书店系统的设计与实现—书籍管理部分摘要网上书店是随着网络技术的发展而出现的一种创新型图书销售方式,它通过人与电子通信方式的结合,以通讯技术为基础,依靠计算机网络为媒介,实现图书的网上交易。
本系统主要运用到了SSH框架以及三层架构,结合了Java和Jsp技术,以Eclipse+jdk作为开发平台,结合MySQL数据库支撑建立数据库连接关系。
本报告主要介绍了网上书店系统的开发背景和研究内容,采用面向对象开发方法,较详细的阐述了书籍展示、书籍搜索、书籍维护等书籍管理功能。
【关键词】网上书店;Java;SSH框架;书籍管理;EclipseThe Design and Implementation of Online Bookstore System Based on Java —Book ManagementAbstractOnline bookstore is an innovative way to sell books with the development of network tec hnology.It is through a combination of human and electronic communication,which is base d on communication technologies and rely on computer networks as the media to realize the o nline trading of books。
The system combines Java with Jsp technology to Eclipse + jd k as a development platform, which combines with MySQL database to support to est ablish a database connection relations,this system mainly applies the SSH framework and three—tier architecture. This report introduces mainly the background and researc h content of the online bookstore system, using object—oriented development method s,describing the book display, book search, book maintenance and any other book m anagement functions.【Key words】:online bookstore; Java;The SSH Framework; book management;Eclipse目录引言 (1)1选题背景及研究意义 (1)1。
图书馆管理系统完整代码
![图书馆管理系统完整代码](https://img.taocdn.com/s3/m/fab1be0de87101f69e3195fb.png)
out.println("<h3>"+login+"</h3>"); %> </div></body> </html>
logon.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 "/TR/html4/loose.dtd"> <html> <script language="JavaScript">
{ alert("请输入有效电话!"); return false;
} } var em,index; em=myform.email.value; index=myform.email.value.indexOf('@'); if(index<=0||index>=em.length-1) {
alert("请输入合法的电子邮件地址!"); return false; } } </script> <head> <title>用户注册</title> </head> <body><div align="center"><h2> 用户注册 </h2> <%!String sex=null; %> <form action="dealLogon.jsp" method="post" onSubmit="return check()" name="myform"> <table height="100%" border="1" align="center" width="90%"> <tbody><tr> <td align="right">用户名:<br></td> <td align="left"><input type="text" name="username"></td></tr> <tr> <td align="right">真实姓名:<br></td> <td align="left"><input type="text" name="truename"></td></tr> <tr> <td align="right">密码:</td> <td align="left"><input type="password" name="password"></td></tr> <tr> <td align="right">确认密码:</td> <td align="left"><input type="password" name="confirmPassword"></td></tr> <tr> <td align="right">年龄: </td> <td align="left"><input type="text" name="age"></td></tr> <tr> <td align="right">性别:</td> <td align="left"><input type="radio" name="sex" value="男" <%if(sex.equals("男")) out.println("checked");%>> <img src="Images/boy.gif" width="24" height="24">男
(完整word版)图书管理系统源代码
![(完整word版)图书管理系统源代码](https://img.taocdn.com/s3/m/bf5ec506551810a6f4248638.png)
图书管理系统源代码(一)程序代码1。
主窗口界面import java.awt。
*;import java.awt。
event.*;import javax。
swing.*;import javax.swing.border.TitledBorder;import java.awt。
Font;import javax.swing。
JMenu;public class MainWindow extends JFrame implements ActionListener { private static final long serialVersionUID = 1L;static String loginName;static String loginNo;JLabel mlabel;JPanel jp=new JPanel();//建立菜单栏JMenu a=new JMenu();JMenu b=new JMenu();JMenu c=new JMenu();//建立系统管理菜单组JMenuItem aa=new JMenuItem();JMenuItem ab=new JMenuItem();JMenuItem ac=new JMenuItem();//建立读者管理菜单组JMenuItem bb=new JMenuItem();//建立书籍管理菜单组JMenuItem ca=new JMenuItem();JMenuItem cb=new JMenuItem();JMenuItem cc=new JMenuItem();JMenuItem cd=new JMenuItem();public MainWindow(){super(”图书管理系统");addWindowListener(new WindowAdapter(){System.exit(0);}});Container d=getContentPane();this。
JSP网上书店开发完整实例(含完整源代码)
![JSP网上书店开发完整实例(含完整源代码)](https://img.taocdn.com/s3/m/8266273c19e8b8f67d1cb9bd.png)
完整的简单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。
图书管理系统毕业设计源代码
![图书管理系统毕业设计源代码](https://img.taocdn.com/s3/m/321f80dcdc88d0d233d4b14e852458fb760b386c.png)
图书管理系统毕业设计源代码1. 简介图书管理系统是一个用于管理图书馆藏书及借阅情况的软件系统。
本文档将详细介绍图书管理系统的毕业设计源代码。
2. 源代码结构图书管理系统的源代码采用模块化的设计,分为以下几个模块: - 用户管理模块:负责管理员和读者的管理,包括用户注册、登录、修改密码等功能。
- 图书管理模块:负责图书的录入、删除、查找等功能。
- 借阅管理模块:负责借阅记录的管理,包括借书、还书、查看借阅历史等功能。
- 统计分析模块:负责统计图书馆的借阅情况、读者喜好等信息。
- 权限管理模块:负责管理不同角色的权限,例如管理员有更高的权限。
3. 技术选型•后端开发语言:采用Java语言进行开发,利用Java的面向对象和多线程的特性来实现系统的各个功能模块。
•前端开发:采用HTML、CSS和JavaScript进行前端开发,使用Bootstrap框架来实现页面的美化和响应式布局。
•数据库:采用MySQL关系数据库管理系统,存储图书馆的图书信息、用户信息及借阅记录等数据。
4. 代码实现细节4.1 用户管理模块用户管理模块的主要功能包括用户注册、登录、修改密码等。
- 用户注册:用户可以填写注册表单,并将信息提交到服务器进行注册。
服务器会将用户的信息存储到数据库中,并为用户分配一个唯一的ID。
- 用户登录:用户在登录页面输入用户名和密码,服务器会校验用户的登录信息,并根据用户的角色跳转到相应的首页。
- 修改密码:用户可以在个人信息页面修改密码,需要输入原密码和新密码。
4.2 图书管理模块图书管理模块的主要功能包括图书的录入、删除、查找等。
- 图书录入:管理员可以在后台管理页面输入图书的信息,包括书名、作者、出版社、ISBN等,并提交保存到数据库中。
- 图书删除:管理员可以根据图书的ID或其他关键字进行图书的删除操作,同时删除数据库中的对应记录。
- 图书查找:管理员和读者可以根据图书的关键字进行查找,系统会显示匹配的图书列表。
网上书店完整代码
![网上书店完整代码](https://img.taocdn.com/s3/m/4da91d3725c52cc58ad6be36.png)
附录全部源代码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;。
(完整word版)网上书店管理系统--详细设计说明书.
![(完整word版)网上书店管理系统--详细设计说明书.](https://img.taocdn.com/s3/m/74471084f705cc1754270914.png)
一引言1.1 编写目的通过学习,深入了解电子商务系统的开发内容和运行过程。
将所学的网络开发技术2.0运用到企业项目中去,后台使用数据库sql server 2005。
电子商务的迅速发展为人们提供了更快捷方便的购物渠道。
本文介绍了基于 2.0的网络购书管理系统,该系统采用 2.0技术,访问sql server 2005数据库,实现了注册与登录、图书查找、选购图书、生成订单、用户管理、图书管理、订单管理和读者论谈等功能,顾客也可以通过系统所提供的分类查找来快速搜寻自己所想要找的书籍。
本说明是对网上购书系统的各模块、页面、脚本分别进行了实现层面上的要求和说明。
软件开发小组的产品实现成员应该阅读和参考本说明进行代码的编写、测试。
1.2 研究背景据最新统计,中国大陆已经注册的网上书店大约有100多家,有网站的有50多家,但已经投入运营能够买到书的只有十来家。
最近据一家媒体的调查,能够买到书且服务到位的也只有大洋网、旌旗席殊等几家。
很多人看到了书这种商品网上销售的诸多好处:方便购买、金额小、风险小、用户容易决定;讯息的完整性以及很少出现质量问题和退货现象等。
尽管全球最大的网上书城亚马逊股票惨跌,尽管各家书店都承认目前的亏本经营状况,但这并未阻挡投资者对网上书店“钱”景的期待。
最早的网上书店是由上海图书城投资50万元於1998年底成立的上海网上书城,该网站经理李列群坦言告诉记者,运营一年多,业绩很不理想,现在网上书城的交易额还不到整个上海图书城交易额的千分之一。
据他分析,除了传统购书习惯的因素,频宽不够,上网的速度很慢,也影响了人们上网购书。
由IDG 、日本软银(Softbank和中国科文公司投资的当当一直号称是全球最大的网上中文书店,其市场总监阎光称当当每个月的访问量有7.5万人次,下单订购率为3%,交易额达12万元。
阎光特别强调,在当当的顾客中,有20%来自海外。
建立了配送网络的大洋网上书城成为华南中心城市广州的IT 热点,从3月改版40多天,已有4万人注册为会员。
网上书店管理系统
![网上书店管理系统](https://img.taocdn.com/s3/m/7141d0cf6edb6f1afe001f55.png)
课程设计报告课程名称:UML软件建模设计题目:网上书店管理系统专业班级:网络工程班级: 1学生姓名:贺**学生学号:2013**指导老师:罗**二○一六年六月十三日目录一、系统需求................................................................................................................................ - 2 -二、功能需求................................................................................................................................ - 3 -2.1用户认证管理 (3)2.2书籍浏览 (3)2.3书籍选购 (4)2.4用户结算 (4)2.5用户信息管理 (4)2.6书籍信息管理 (4)2.8订单信息管理 (4)三、数据需求................................................................................................................................ - 5 -四、需求分析................................................................................................................................ - 5 -4.1识别参与者 (5)4.2识别用例 (5)4.3用例的事件描述 (7)五、模型结构.............................................................................................................................. - 12 -5.1定义系统对象 (12)5.2定义用户界面类 (12)5.3建立类图 (13)六、动态行为模型 ...................................................................................................................... - 15 -6.1创建系统的顺序图 (16)6.2创建系统的状态图 (19)6.3创建系统的活动图 (21)七、物理模型.............................................................................................................................. - 23 -7.1创建系统构件图 (23)八、总结 .................................................................................................................................. - 23 -一、系统需求网上书店系统描述如下:在网上书店系统中,普通用户浏览主页面查看图书及详细信息,如想在本网站购买图书,需注册成为该网站会员,然后进行购买活动。
ssm网上书城管理系统(2024)
![ssm网上书城管理系统(2024)](https://img.taocdn.com/s3/m/0f11f7c0690203d8ce2f0066f5335a8103d2666e.png)
商品详情展示
根据商品ID获取商品详细信息,包括商品名称、 价格、库存、描述、图片等,并展示在商品详情 页中。
商品删除
接收管理员提交的商品删除请求,并根据商品ID 从数据库中删除对应商品信息。删除成功后返回 操作成功提示。
13
订单处理流程设计
订单生成
订单支付
用户在购物车中选择商品并确认购买后, 生成订单信息,包括订单号、用户信息、 商品信息、收货地址等。
。
A
B
前端技术
采用HTML5、CSS3、JavaScript等前端技术, 实现响应式布局和交互效果。
CD
2024/1/29
数据库选型
使用MySQL数据库,保证数据的稳定性和可靠 性。
服务器选型
选用Tomcat作为应用服务器,支持高并发访问 和快速响应。
6
02
前端展示层
2024/1/29
7
界面设计与交互体验
重要组成部分。
02
传统书店面临挑战
传统书店在运营、库存、销售等方面存在诸多限制,难以满足现代消费
者的多元化需求。
2024/1/29
03
ssm网上书城管理系统的意义
通过搭建ssm网上书城管理系统,可以实现图书资源的整合、优化销售
流程、提高运营效率,为消费者提供更加便捷、个性化的购书体验。
4
系统目标与定位
调用第三方支付接口,接收用户支付的订 单金额,并等待支付结果。支付成功后, 更新订单状态为已支付。
订单发货
订单收货与评价
根据订单中的商品信息和收货地址,进行 商品的配送和发货操作。发货成功后,更 新订单状态为已发货。
2024/1/29
用户在收到商品后,确认收货并可以对商品 进行评价和晒单。评价信息将展示在商品详 情页中,供其他用户参考。
图书管理系统源码(java实现)
![图书管理系统源码(java实现)](https://img.taocdn.com/s3/m/2d4be5c4aaea998fcd220e78.png)
【图书管理系统】【MainPro包】1.系统登录页面public class Login extends Frame {private static final long serialVersionUID = -1758475247807861408L;TextField text_user;TextField text_pass;public Login() {1 this.setTitle("登录");this.setLayout(null);//默认流式布局this.setSize(260, 170);/* 定义标签与文本框*/Label lbUser = new Label("用户名:");text_user = new TextField();Label lbPass = new Label("密码:");text_pass = new TextField();Button btn_ok = new Button("确定");Button btn_cancel = new Button("取消");lbUser.setBounds(40, 53, 60, 20);//x,y,width,heightlbPass.setBounds(40, 83, 60, 20);text_user.setBounds(100, 50, 120, 20);text_pass.setBounds(100, 80, 120, 20);btn_ok.setBounds(45, 120, 80, 25); // 确定按钮btn_cancel.setBounds(135, 120, 80, 25); // 取消按钮/* 添加标签与文本框*/add(lbUser);add(lbPass);add(text_user);add(text_pass);add(btn_ok);add(btn_cancel);setLocationRelativeTo(null); // 使窗体在屏幕上居中放置this.setVisible(true); // 使窗体可见btn_ok.addActionListener((new ActionListener() {public void actionPerformed(ActionEvent e) {btn_okActionPerformed(e);//自定义确定按钮触发的实施过程}}));btn_cancel.addActionListener((new ActionListener() {public void actionPerformed(ActionEvent e) {DbOp.Close(); // 关闭数据库System.exit(0);}}));this.addWindowListener(new WindowAdapter() {/* 关闭窗口*/// 重写windowClosing()方法public void windowClosing(WindowEvent e) {DbOp.Close(); // 关闭数据库System.exit(0);} }); }public void btn_okActionPerformed(ActionEvent e) {String user = text_user.getText();String pass = text_pass.getText();String is_admin;// 如果用户名或密码任一为空,则终止后续操作if (user.equals("")||pass.equals("")) {JOptionPane.showMessageDialog(null, "用户名或密码不能为空!");return;}try {// 核对用户名和密码String sql = "select * from user where username=" + "'" + user + "' and password=" + "'" + pass + "'";ResultSet rs = DbOp.executeQuery(sql);// 如果此用户存在,则记录其状态(否:不是管理员,是:是管理员)if (rs.next()) {is_admin = rs.getString("is_admin");} else {JOptionPane.showMessageDialog(null, "用户名或密码不正确!");return;}GlobalVar.login_user = user; // 记录登录的用户名ShowMain show = new ShowMain(); // 调用主程序// 只有管理员才能使用"基础管理"和"借阅管理"菜单show.setRights(is_admin);// 释放窗体及其全部组件的屏幕资源,即使释放登录窗体dispose(); // 释放当前窗体} catch (SQLException e1) {JOptionPane.showMessageDialog(null, "用户数据库有误!");}}}2.系统首页页面public class ShowMain extends Frame {private static final long serialVersionUID = 5003296786441785470L;MenuBar menuBar;Menu jcwh, jcwh_book, jcwh_reader;//基础维护:图书维护、读者维护Menu jywh, cxgl, xtgl;//借阅维护、查询管理、系统管理MenuItemjcwh_book_add,jcwh_book_update,jcwh_book_delete,jcwh_reader_add,jcwh_reader_update,jcwh_reader_delete;MenuItem jywh_borrow, jywh_back;MenuItem cxgl_book, cxgl_reader;MenuItem xtgl_update_pass, xtgl_exit;public void setRights(String rights) {// 如果不是管理员,则禁止用户维护图书信息和读者信息以及禁止进行借阅管理,即只能查询if (rights.equals("否")) {jywh.setEnabled(false);jcwh.setEnabled(false);}}public ShowMain() {setTitle("图书管理系统");setLayout(new BorderLayout());setSize(640, 480);menuBar = new MenuBar();jcwh = new Menu("基础维护");// 基础维护菜单jcwh_book = new Menu("图书维护");// 图书维护菜单jcwh_book_add = new MenuItem("添加");// 添加图书菜单jcwh_book_update = new MenuItem("修改");// 修改图书菜单jcwh_book_delete = new MenuItem("删除");// 删除图书菜单jcwh_reader = new Menu("读者维护");// 读者维护菜单jcwh_reader_add = new MenuItem("添加读者");// 添加读者菜单jcwh_reader_update = new MenuItem("修改读者");jcwh_reader_delete = new MenuItem("删除读者");jywh = new Menu("借阅管理");jywh_borrow = new MenuItem("借书管理");jywh_back = new MenuItem("还书管理");cxgl = new Menu("查询管理");cxgl_book = new MenuItem("图书查询");cxgl_reader = new MenuItem("读者查询");xtgl = new Menu("系统管理");xtgl_update_pass = new MenuItem("修改密码");xtgl_exit = new MenuItem("退出系统");// 添加图书菜单jcwh_book.add(jcwh_book_add);jcwh_book.add(jcwh_book_update);jcwh_book.add(jcwh_book_delete);jcwh.add(jcwh_book);jcwh_reader.add(jcwh_reader_add);jcwh_reader.add(jcwh_reader_update);jcwh_reader.add(jcwh_reader_delete);jcwh.add(jcwh_reader);jywh.add(jywh_borrow);jywh.add(jywh_back);cxgl.add(cxgl_book);cxgl.add(cxgl_reader);xtgl.add(xtgl_update_pass);xtgl.add(xtgl_exit);menuBar.add(jcwh);menuBar.add(jywh);menuBar.add(cxgl);menuBar.add(xtgl);setMenuBar(menuBar);setLocationRelativeTo(null); // 使窗体在屏幕上居中放置setVisible(true); // 使窗体可见jcwh_book_add.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new BookManeger("save");} });jcwh_book_update.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new BookManeger("update");} });jcwh_book_delete.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new BookManeger("delete");} });jcwh_reader_add.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new ReaderManeger("save");} });jcwh_reader_update.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new ReaderManeger("update");} });jcwh_reader_delete.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new ReaderManeger("delete");} });jywh_borrow.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new Borrow();} });jywh_back.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new Back();} });cxgl_book.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new BookQuery();} });cxgl_reader.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new ReaderQuery();} });xtgl_update_pass.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {new UpdatePassword();} });xtgl_exit.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {DbOp.Close(); // 关闭数据库System.exit(0);}});this.addWindowListener(new WindowAdapter() {/* 关闭窗口*/// 重写windowClosing()方法public void windowClosing(WindowEvent e) {DbOp.Close(); // 关闭数据库System.exit(0);}});}}3.图书管理public class BookManeger extends JFrame {private static final long serialVersionUID = 377287301994613384L;private Label lbbookid_c = new Label("图书编号");private TextField tf_bookid_c = new TextField();private Label lbbookid = new Label("图书编号");private TextField tf_bookid = new TextField();private Label lbbookname = new Label("图书名称");private TextField tf_bookname = new TextField();private Label lbbooktype = new Label("图书类别");private Choice tf_booktype = new Choice();private Label lbauthor = new Label("作者");private TextField tf_author = new TextField();private Label lbtranslator = new Label("译者");private TextField tf_translator = new TextField();private Label lbpublisher = new Label("出版社");private TextField tf_publisher = new TextField();private Label lbpublish_time = new Label("出版时间");private TextField tf_publish_time = new TextField();private Label lbprice = new Label("定价");private TextField tf_price = new TextField();private Label lbstock = new Label("库存数量");private TextField tf_stock = new TextField();private Button queryBtn = new Button("查询");private Button saveBtn = new Button("保存");private Button closeBtn = new Button("关闭");private String optionStr;BookManeger(String str) {optionStr = str;ggFrame(optionStr);saveBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("bookid", tf_bookid);map.put("bookname", tf_bookname);map.put("booktype", tf_booktype);map.put("author", tf_author);map.put("translator", tf_translator);map.put("publisher", tf_publisher);map.put("publish_time", tf_publish_time);map.put("price", tf_price);map.put("stock", tf_stock);int i ;if(optionStr.equals("delete")){i = Jcwh.btn_delActionPerformed(e, map);}else{i = Jcwh.btn_saveActionPerformed(e, map,optionStr);}if (i == 1) {String showInfo = "";if(optionStr.equals("save")){showInfo = "图书添加成功!";}else if(optionStr.equals("update")){showInfo = "图书修改成功!";}else if(optionStr.equals("delete")){showInfo = "图书删除成功!";}JOptionPane.showMessageDialog(null, showInfo);// 清空全部文本框clearAllTextfield();}}});closeBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {dispose(); // 释放当前窗体}});/* 关闭窗口*/this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) { // 关闭当前窗口dispose(); // 释放当前窗体}});}private void ggFrame(String str) {setLayout(null);setSize(500, 320);lbbookid.setBounds(50, 40, 50, 20); // 图书编号tf_bookid.setBounds(110, 40, 100, 20);lbbookname.setBounds(240, 40, 50, 20); // 图书名称tf_bookname.setBounds(300, 40, 100, 20);lbbooktype.setBounds(50, 80, 50, 20); // 图书类别tf_booktype.setBounds(110, 80, 100, 20);tf_booktype.add("科技");tf_booktype.add("文学");tf_booktype.add("社科");tf_booktype.add("其他");lbauthor.setBounds(240, 80, 50, 20); // 作者tf_author.setBounds(300, 80, 100, 20);lbtranslator.setBounds(50, 120, 50, 20); // 设置译者tf_translator.setBounds(110, 120, 100, 20);lbpublisher.setBounds(240, 120, 50, 20); // 出版社tf_publisher.setBounds(300, 120, 100, 20);lbpublish_time.setBounds(50, 160, 50, 20); // 出版时间tf_publish_time.setBounds(110, 160, 100, 20);lbprice.setBounds(240, 160, 50, 20); // 定价tf_price.setBounds(300, 160, 100, 20);lbstock.setBounds(50, 200, 50, 20); // 库存数量tf_stock.setBounds(110, 200, 100, 20);saveBtn.setBounds(150, 240, 80, 25); // 保存按钮closeBtn.setBounds(280, 240, 80, 25);// 关闭按钮if(str.equals("save")){setTitle("添加图书");}else if(str.equals("update")){setTitle("修改图书");lbbookid_c.setBounds(100, 10, 50, 20); // 图书编号tf_bookid_c.setBounds(160, 10, 100, 20);tf_bookid.setEditable(false);//修改的图书信息中id不可以修改queryBtn.setBounds(280, 10, 80, 20); // 查询按钮add(lbbookid_c);add(tf_bookid_c);add(queryBtn);queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("bookid", tf_bookid_c);Book book = (Book)Jcwh.btn_queryActionPerformed(e,map).get("book");if(book!=null){tf_bookid.setText(book.getId());tf_bookname.setText(book.getBookname());// 将Choice的选定项设置为其名称等于指定字符串的项tf_booktype.select(book.getBooktype());tf_author.setText(book.getAuthor());tf_translator.setText(book.getTranslator());tf_publisher.setText(book.getPublisher());tf_publish_time.setText(book.getPublish_time().toString());tf_price.setText(String.valueOf(book.getPrice()));tf_stock.setText(String.valueOf(book.getStock()));}}});saveBtn.setLabel("修改");//将按钮显示文字修改成“修改”}else if(str.equals("delete")){setTitle("删除图书");lbbookid_c.setBounds(100, 10, 50, 20); // 图书编号tf_bookid_c.setBounds(160, 10, 100, 20);tf_bookid.setEditable(false);//修改的图书信息中id不可以修改queryBtn.setBounds(280, 10, 80, 20); // 查询按钮add(lbbookid_c);add(tf_bookid_c);add(queryBtn);queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("bookid", tf_bookid_c);Book book = (Book)Jcwh.btn_queryActionPerformed(e,map).get("book");if(book!=null){tf_bookid.setText(book.getId());tf_bookname.setText(book.getBookname());// 将Choice的选定项设置为其名称等于指定字符串的项tf_booktype.select(book.getBooktype());tf_author.setText(book.getAuthor());tf_translator.setText(book.getTranslator());tf_publisher.setText(book.getPublisher());tf_publish_time.setText(book.getPublish_time().toString());tf_price.setText(String.valueOf(book.getPrice()));tf_stock.setText(String.valueOf(book.getStock()));}}});saveBtn.setLabel("删除");//将按钮显示文字修改成“删除”}add(lbbookid);add(tf_bookid);add(lbbookname);add(tf_bookname);add(lbbooktype);add(tf_booktype);add(lbauthor);add(tf_author);add(lbtranslator);add(tf_translator);add(lbpublisher);add(tf_publisher);add(lbpublish_time);add(tf_publish_time);add(lbprice);add(tf_price);add(lbstock);add(tf_stock);add(saveBtn);add(closeBtn);setLocationRelativeTo(null); // 使窗体在屏幕上居中放置setVisible(true); // 使窗体可见}private void clearAllTextfield() {tf_bookid.setText("");tf_bookname.setText("");tf_author.setText("");tf_translator.setText("");tf_publisher.setText("");tf_publish_time.setText("");tf_price.setText("");tf_stock.setText("");}}4.读者管理public class ReaderManeger extends JFrame {private static final long serialVersionUID = -2399939451497711745L;Label lbreaderid_c = new Label("读者编号");TextField tf_readerid_c = new TextField();Label lbreaderid = new Label("读者编号");TextField tf_readerid = new TextField();Label lbreadername = new Label("读者姓名");TextField tf_readername = new TextField();Label lbreadertype = new Label("读者类别");Choice tf_readertype = new Choice();Label lbsex = new Label("性别");Choice tf_sex = new Choice();Label lbmax_num = new Label("可借数量");TextField tf_max_num = new TextField();Label lbdays_num = new Label("可借天数");TextField tf_days_num = new TextField();Button queryBtn = new Button("查询");Button saveBtn = new Button("保存");Button closeBtn = new Button("关闭");private String optionStr;//保存、修改、删除ReaderManeger(String str){optionStr = str;ggFrame(optionStr);saveBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("readerid", tf_readerid);map.put("readername", tf_readername);map.put("readertype", tf_readertype);map.put("sex", tf_sex);map.put("days_num", tf_days_num);map.put("max_num", tf_max_num);int i ;if(optionStr.equals("delete")){i = Jcwh.btn_delReaderActionPerformed(e, map);}else{i = Jcwh.btn_saveReaderActionPerformed(e,map,optionStr);}if (i == 1) {String showInfo = "";if(optionStr.equals("save")){showInfo = "读者添加成功!";}else if(optionStr.equals("update")){showInfo = "读者修改成功!";}else if(optionStr.equals("delete")){showInfo = "读者删除成功!";}JOptionPane.showMessageDialog(null, showInfo);// 清空全部文本框clearAllTextfield();}}});closeBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {dispose(); // 释放当前窗体}});this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) { // 关闭当前窗口dispose(); // 释放当前窗体}});}private void ggFrame(String str) {setLayout(null);setTitle("添加读者信息");setSize(500, 230);lbreaderid.setBounds(50, 50, 50, 20);tf_readerid.setBounds(110, 50, 100, 20);lbreadername.setBounds(240, 50, 50, 20);tf_readername.setBounds(300, 50, 100, 20);lbreadertype.setBounds(50, 80, 50, 20);tf_readertype.setBounds(110, 80, 100, 20);tf_readertype.add("教师");tf_readertype.add("学生");tf_readertype.add("职工");lbsex.setBounds(240, 80, 50, 20);tf_sex.setBounds(300, 80, 100, 20);tf_sex.add("男");tf_sex.add("女");lbmax_num.setBounds(50, 110, 50, 20);tf_max_num.setBounds(110, 110, 100, 20);lbdays_num.setBounds(240, 110, 50, 20);tf_days_num.setBounds(300, 110, 100, 20);saveBtn.setBounds(150, 150, 80, 25);closeBtn.setBounds(280, 150, 80, 25);if(str.equals("save")){setTitle("添加读者");}else if(str.equals("update")){setTitle("修改读者");lbreaderid_c.setBounds(100, 10, 50, 20);tf_readerid_c.setBounds(160, 10, 100, 20);tf_readerid.setEditable(false);queryBtn.setBounds(280, 10, 80, 20);add(lbreaderid_c);add(tf_readerid_c);add(queryBtn);queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("readerid", tf_readerid_c);Reader reader = (Reader)Jcwh.btn_queryReaderActionPerformed(e,map).get("reader");if(reader!=null){tf_readerid.setText(reader.getId());tf_readername.setText(reader.getReadername());tf_readertype.select(reader.getReadertype());tf_sex.select(reader.getSex());tf_days_num.setText(String.valueOf(reader.getDays_num()));tf_max_num.setText(String.valueOf(reader.getMax_num()));}}});saveBtn.setLabel("修改");//将按钮显示文字修改成“修改”}else if(str.equals("delete")){setTitle("删除图书");lbreaderid_c.setBounds(100, 10, 50, 20);tf_readerid_c.setBounds(160, 10, 100, 20);tf_readerid.setEditable(false);queryBtn.setBounds(280, 10, 80, 20);add(lbreaderid_c);add(tf_readerid_c);add(queryBtn);queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("readerid", tf_readerid_c);Reader reader = (Reader)Jcwh.btn_queryReaderActionPerformed(e,map).get("reader");if(reader!=null){tf_readerid.setText(reader.getId());tf_readername.setText(reader.getReadername());tf_readertype.select(reader.getReadertype());tf_sex.select(reader.getSex());tf_days_num.setText(String.valueOf(reader.getDays_num()));tf_max_num.setText(String.valueOf(reader.getMax_num()));}}});saveBtn.setLabel("删除");//将按钮显示文字修改成“删除”}add(lbreaderid);add(lbreadername);add(lbreadertype);add(lbsex);add(lbmax_num);add(lbdays_num);add(tf_readerid);add(tf_readername);add(tf_max_num);add(tf_days_num);add(tf_readertype);add(tf_sex);add(saveBtn);add(closeBtn);setLocationRelativeTo(null);setVisible(true);}private void clearAllTextfield() {tf_readerid.setText("");tf_readername.setText("");tf_max_num.setText("");tf_days_num.setText("");}public static void main(String[] args) {ReaderManeger r = new ReaderManeger("update");}}5.借书public class Borrow extends Frame {private static final long serialVersionUID = -1036076990599464079L;String SepLine = "-------------------------------------------------";Label lbbookid = new Label("图书编号");Label lbreaderid = new Label("读者编号");TextField tf_bookid = new TextField();TextField tf_readerid = new TextField();Button queryBtn = new Button("查询");Label lbbookinfo = new Label(SepLine + "图书信息" + SepLine); Label lbbookname = new Label("图书名称:");Label tf_bookname = new Label("xx");Label lbauthor = new Label("作者:");Label tf_author = new Label("xx");Label lbpublisher = new Label("出版社:");Label tf_publisher = new Label("xx");Label lbpublish_time = new Label("出版时间:");Label tf_publish_time = new Label("xx");Label lbprice = new Label("定价:");Label tf_price = new Label("xx");Label lbstock = new Label("库存数量:");Label tf_stock = new Label("xx");Label lbreaderinfo = new Label(SepLine + "读者信息" + SepLine); Label lbreadername = new Label("读者姓名:");Label tf_readername = new Label("xx");Label lbreadertype = new Label("读者类型:");Label tf_readertype = new Label("xx");Label lbmax_num = new Label("最大可借数:");Label tf_max_num = new Label("xx");Label lbdays_num = new Label("最大可借天数:");Label tf_days_num = new Label("xx");Label lbborrowinfo = new Label(SepLine + "借阅信息" + SepLine); Label lbborrowednum = new Label("该读者已借图书数量:"); Label tf_borrowednum = new Label("xx");Label lbif_borrow = new Label("该读者是否可借所选图书:"); Label tf_if_borrow = new Label("xx");Label lbborrow_date = new Label("借阅日期:");Label tf_borrow_date = new Label("xx");Button borrowBtn = new Button("借出");Button closeBtn = new Button("关闭");public Borrow() {setLayout(null);setTitle("借阅图书");setSize(500, 420);this.setForeground(Color.BLACK); // 设置前景色为黑色lbbookid.setBounds(30, 40, 50, 25); // 图书编号tf_bookid.setBounds(90, 40, 90, 20);lbreaderid.setBounds(200, 40, 50, 25); // 读者编号tf_readerid.setBounds(260, 40, 90, 20);queryBtn.setBounds(370, 40, 80, 25); // 查询按钮lbbookinfo.setBounds(30, 70, 440, 25); // 图书信息提示条lbbookname.setBounds(30, 100, 60, 25); // 图书名称tf_bookname.setBounds(90, 100, 200, 25);lbauthor.setBounds(310, 100, 60, 25); // 作者tf_author.setBounds(370, 100, 90, 25);lbpublisher.setBounds(30, 125, 60, 25); // 出版社tf_publisher.setBounds(90, 125, 200, 25);lbpublish_time.setBounds(310, 125, 60, 25); // 出版时间tf_publish_time.setBounds(370, 125, 90, 25);lbprice.setBounds(30, 150, 60, 25); // 定价tf_price.setBounds(90, 150, 200, 25);lbstock.setBounds(310, 150, 60, 25); // 库存数量tf_stock.setBounds(370, 150, 90, 25);lbreaderinfo.setBounds(30, 180, 440, 25); // 读者信息提示条lbreadername.setBounds(30, 205, 60, 25); // 读者姓名tf_readername.setBounds(90, 205, 90, 25);lbreadertype.setBounds(310, 205, 60, 25); // 读者类型tf_readertype.setBounds(370, 205, 90, 25);lbmax_num.setBounds(30, 230, 75, 25); // 最大可借数tf_max_num.setBounds(105, 230, 90, 25);lbdays_num.setBounds(310, 230, 85, 25); // 最大可借天数tf_days_num.setBounds(395, 230, 70, 25);lbborrowinfo.setBounds(30, 260, 440, 25); // 借阅信息提示条lbborrowednum.setBounds(30, 285, 120, 25);// 已借图书数量tf_borrowednum.setBounds(150, 285, 50, 25);lbif_borrow.setBounds(30, 310, 145, 25); // 是否可借tf_if_borrow.setBounds(175, 310, 50, 25);lbborrow_date.setBounds(30, 335, 60, 25);// 借书日期tf_borrow_date.setBounds(90, 335, 100, 25);borrowBtn.setBounds(160, 365, 80, 25);// 借出按钮borrowBtn.setEnabled(false); // 开始时禁用借出按钮closeBtn.setBounds(260, 365, 80, 25);// 关闭按钮queryBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { btn_querywActionPerformed(e); } }); borrowBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { btn_borrowActionPerformed(e); } });closeBtn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) { setForeground(Color.BLACK); dispose(); } }); this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {setForeground(Color.BLACK); // 设置前景色为黑色dispose(); // 关闭窗体}});add(lbbookid);add(lbreaderid);add(queryBtn);add(lbbookinfo);add(lbbookname);add(lbauthor);add(lbpublisher);add(lbpublish_time);add(lbprice);add(lbstock);add(lbreaderinfo);add(lbreadername);add(lbreadertype);add(lbmax_num);add(lbdays_num);add(lbborrowinfo);add(lbborrowednum);add(lbif_borrow);add(lbborrow_date);add(borrowBtn);add(closeBtn);setLocationRelativeTo(null); // 使窗体在屏幕上居中放置setVisible(true); // 使窗体可见setForeground(Color.RED); // 设置前景色为红色add(tf_bookid);add(tf_readerid);add(tf_bookname);add(tf_author);add(tf_publisher);add(tf_publish_time);add(tf_price);add(tf_stock);add(tf_readername);add(tf_readertype);add(tf_max_num);add(tf_days_num);add(tf_borrowednum);add(tf_if_borrow);add(tf_borrow_date);}// 图书和读者查询private void btn_querywActionPerformed(ActionEvent e) {String bookid = tf_bookid.getText();String readerid = tf_readerid.getText();// 如果图书编号或读者编号两者均为空,或者有一个为空,则返回if (bookid.equals("") || readerid.equals("")) {JOptionPane.showMessageDialog(null, "图书编号和读者编号均不能为空!");init(); // 重新初始化各参数并禁止借出按钮return;}// 按编号查询图书,结果存入book对象中Book book = BookSelect.SelectBookById(bookid);if (book != null) { // 如果查询到结果,将其显示在各文本框中tf_bookname.setText(book.getBookname());tf_author.setText(book.getAuthor());tf_publisher.setText(book.getPublisher());tf_publish_time.setText(book.getPublish_time().toString());tf_price.setText(String.valueOf((book.getPrice())));tf_stock.setText(String.valueOf(book.getStock()));} else {JOptionPane.showMessageDialog(null, "图书编号有误,查无此书!");init(); // 重新初始化各参数并禁止借出按钮return;}if (book.getStock() == 0) {JOptionPane.showMessageDialog(null, "图书已无库存,无法借阅!");init(); // 重新初始化各参数并禁止借出按钮return;}// 按编号查询读者,结果存入reader对象中Reader reader = ReaderSelect.selectReaderById(readerid);// 如果查询到结果,将其显示在各文本框中if (reader != null) {tf_readername.setText(reader.getReadername());tf_readertype.setText(reader.getReadertype());tf_max_num.setText(String.valueOf(reader.getMax_num()));tf_days_num.setText(String.valueOf(reader.getDays_num()));} else {JOptionPane.showMessageDialog(null, "读者编号有误,查无此人!");init(); // 重新初始化各参数并禁止借出按钮return;}// 查询指定读者是否已借过指定图书且未归还if (IfBorrowBack.findbook(bookid, readerid)) {JOptionPane.showMessageDialog(null, "该读者已借阅所选图书,且未归还!");init(); // 重新初始化各参数并禁止借出按钮return;}// 统计读者所借图书数量int borrowednum = statborrowednum(readerid);tf_borrowednum.setText(String.valueOf(borrowednum));// 如果读者已借图书尚未超出其允许最大借书量,则允许其继续借阅所选图书if (borrowednum < reader.getMax_num()) {tf_if_borrow.setText("是");// 创建一个简单日期格式对象,注意:MM一定要用大写SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");// 创建日期变量,其内容为当前日期Date currentdate = new Date();// 将日期按指定格式输出String borrowdate = sdf.format(currentdate);tf_borrow_date.setText(borrowdate);borrowBtn.setEnabled(true); // 使借出按钮有效} else {JOptionPane.showMessageDialog(null, "该读者借书过多,无法继续借阅!");init(); // 重新初始化各参数并禁止借出按钮return;}}// 填写借出图书记录private void btn_borrowActionPerformed(ActionEvent e) {String sql;String bookid = tf_bookid.getText();String readerid = tf_readerid.getText();String borrowdate = tf_borrow_date.getText();// 为borrow表增加借书记录sql = "insert into borrow (book_id,reader_id,"+ "borrow_date,if_back) values('" + bookid + "','" + readerid + "','" + borrowdate + "','否')";。
书籍管理 php源代码
![书籍管理 php源代码](https://img.taocdn.com/s3/m/1d5dca6ccec789eb172ded630b1c59eef8c79af5.png)
书籍管理 php源代码以下是一个简单的书籍管理 PHP 源代码示例,包含了添加、查看、修改和删除书籍的基本功能:```php<?php// 连接数据库$servername = "localhost";$username = "你的用户名";$password = "你的密码";$dbname = "你的数据库名称";// 创建连接$conn = new mysqli($servername, $username, $password, $dbname);// 检查连接if ($conn->connect_error) {die("连接失败: ". $conn->connect_error);}// 定义操作函数function addBook($title, $author, $isbn) {$sql = "INSERT INTO books (title, author, isbn) VALUES ('".$title."', '".$author."', '".$isbn."')";if ($conn->query($sql) === TRUE) {echo "图书添加成功";} else {echo "图书添加失败: ". $conn->error;}}function viewBooks() {$sql = "SELECT * FROM books";$result = $conn->query($sql);if ($result->num_rows > 0) {while($row = $result->fetch_assoc()) {echo "标题: ". $row["title"]. " ". "作者: ". $row["author"]. " ". "ISBN: ". $row["isbn"]. "<br>";}} else {echo "没有图书记录";}}function updateBook($id, $title, $author, $isbn) {$sql = "UPDATE books SET title = '".$title."', author = '".$author."', isbn = '".$isbn."' WHERE id = ".$id;if ($conn->query($sql) === TRUE) {echo "图书修改成功";} else {echo "图书修改失败: ". $conn->error;}}function deleteBook($id) {$sql = "DELETE FROM books WHERE id = ".$id;if ($conn->query($sql) === TRUE) {echo "图书删除成功";} else {echo "图书删除失败: ". $conn->error;}}// 处理表单操作if ($_SERVER["REQUEST_METHOD"] == "POST") {if (isset($_POST["addBook"])) {addBook($_POST["title"], $_POST["author"], $_POST["isbn"]);} else if (isset($_POST["viewBooks"])) {viewBooks();} else if (isset($_POST["updateBook"])) {updateBook($_POST["id"], $_POST["title"], $_POST["author"], $_POST["isbn"]);} else if (isset($_POST["deleteBook"])) {deleteBook($_POST["id"]);}}// 显示图书管理页面><!DOCTYPE html><html><head><title>图书管理</title></head><body><h1>图书管理</h1><form action="" method="post"><input type="submit" name="addBook" value="添加图书"></form><form action="" method="post"><input type="submit" name="viewBooks" value="查看图书"></form><form action="" method="post"><input type="submit" name="updateBook" value="修改图书"></form><form action="" method="post"><input type="submit" name="deleteBook" value="删除图书"></form></body></html><?php// 关闭数据库连接$conn->close();>```上述代码实现了一个简单的图书管理系统,包含了添加、查看、修改和删除图书的功能。
网上图书管理系统代码
![网上图书管理系统代码](https://img.taocdn.com/s3/m/19fda687cd22bcd126fff705cc17552707225e4e.png)
附录: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。
图书管理系统代码
![图书管理系统代码](https://img.taocdn.com/s3/m/e98a410c192e45361066f5d9.png)
图书管理系统代码//***********************//图书馆管理系统//***********************#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");}。
网上书店系统实验报告
![网上书店系统实验报告](https://img.taocdn.com/s3/m/38bd0ff9fab069dc502201d3.png)
实验报告一、实验题目编程实现“网上书店系统”二、题目分析1、需求分析要开发一个系统,首先要了解该系统到底想做什么,需要实现怎样的功能,这就是需求分析。
网上书店从大的需求方面看,就是要实现通过互联网能够进行书籍的购买及相关的管理等功能,大致需要提供下面的一系列功能:*浏览书籍(模糊查询)*选择需要购买的书籍*可以继续选择别的书籍,并且可以购买该书籍*选择了需要购买的书籍后,进行购买书籍操作*保存选中的图书和数量UML图:2、数据分析图书信息数据库购物车本次会话有效1、页面转移关系再次查询2、对象模型(1)界面对象(View)*查询页Search.jsp*图书目录页Directory.jsp*购物车页Cart.jsp*定单页Order.jsp(2)控制器(Control)*CtrlServlet 负责响应输入命令*包括:模糊查询key、查看购物车cart、结算order 、继续选书continue、再次查询search(3)业务模型*图书信息:BookBean 实体类的会话Bean*购物车信息:CartBean 会话Bean(1)图书信息(数据库表、查询结果)*书号ISBN char[24] 主键*书名Title char[64]*作者Author char[32]*出版社Press char[32]*价格Price double(2)购物车信息*书号ISBN char[24]*数量Number integer(3)共享数据*查询结果和选中的图书信息*作为session参数4、动态模型5、EJB接口设计(1)BookBean 管理图书信息(封装数据库)*find( string key )*根据关键字从数据库中查找出图书信息记录(数组)条件:书名、作者、出版社名中包含关键字get( string isbn )*根据书号,找出图书信息记录(2)CartBean 管理购物车信息(本次会话有效)*add( string isbn ) 添加记录*gest( ) 获得记录数组*set( string isbn, integer num ) 设置购买数量5、控制器(1)CtrlServlet 的输入*来自查询页page=“search”&key=关键字*来自图书目录页page=“directory”&submit=“cart”&choose=书号数组page=“directoty”&submit=“search”*来自购物车页page=“cart”&submit=“order”page=“cart”&submit=“continue”page=“cart”&submit=“search”(2)算法概要*模糊查询search按照key 从BookBean 查询图书,转交图书目录页*查看购物车将选定图书存入CartBean,转交购物车页*结算计算CartBean中的图书总价,从BookBean获得图书信息,连同地址,转交定单页*继续选书返回图书目录页*再次查询转向查询页*异常处理直接生成错误信息页面四、实现技术1、采用MVC 模式(1)JSP 实现页面视图View(2)Servlet 实现控制Control(3)EJB 实现业务模型Model2、交互关系(1)JSP 表单动作(form)⎝ CtrlServlet(2)Servlet 转发⎝ JSP 页面3、数据传输(1)Servlet 调用EJB 对象获得数据(2)Servlet 通过session 参数传递给JSP 页面五、实验源代码1、BooksOnline-ejb(1)Books①Books.java:import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;dQueries;import dQuery;import javax.persistence.Table;@Entity@Table(name = "BOOKS")@NamedQueries({@NamedQuery(name = "Books.findByIsbn", query = "SELECT b FROM Booksb WHERE b.isbn = :isbn"), @NamedQuery(name = "Books.findByTitle", query = "SELECTb FROM Books b WHERE b.title = :title"), @NamedQuery(name = "Books.findByAuthor",query = "SELECT b FROM Books b WHERE b.author = :author"), @NamedQuery(name = "Books.findByPress", query = "SELECT b FROM Books b WHERE b.press = :press"), @NamedQuery(name = "Books.findByPrice", query = "SELECT b FROM Books b WHERE b.price = :price")})public class Books implements Serializable {private static final long serialVersionUID = 1L;@Id@Column(name = "ISBN", nullable = false)private String isbn;@Column(name = "TITLE")private String title;@Column(name = "AUTHOR")private String author;@Column(name = "PRESS")private String press;@Column(name = "PRICE")private Double price;public Books() {}public Books(String isbn) {this.isbn = isbn;}public String getIsbn() {return isbn;}public void setIsbn(String isbn) {this.isbn = isbn;}public String getTitle() {return title;}public void setTitle(String title) { this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) { this.author = author;}public String getPress() {return press;}public void setPress(String press) {this.press = press;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}@Overridepublic int hashCode() {int hash = 0;hash += (isbn != null ? isbn.hashCode() : 0);return hash;}@Overridepublic boolean equals(Object object) {// TODO: Warning - this method won't work in the case the id fields are not setif (!(object instanceof Books)) {return false;}Books other = (Books) object;if ((this.isbn == null && other.isbn != null) || (this.isbn != null && !this.isbn.equals(other.isbn))) {return false;}return true;}@Overridepublic String toString() {return "Books.Books[isbn=" + isbn + "]";}}②BooksFacade.javaimport java.util.List;import java.util.ArrayList;import javax.ejb.Stateless;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;@Statelesspublic class BooksFacade implements BooksFacadeRemote {@PersistenceContextprivate EntityManager em;public void create(Books books) {em.persist(books);}public void edit(Books books) {em.merge(books);}public void remove(Books books) {em.remove(em.merge(books));}public Books find(Object id) {return em.find(Books.class, id);}public List<Books> findAll() {return em.createQuery("select object(o) from Books as o").getResultList(); }public ArrayList<Books> search(String key) {List<Books> all = this.findAll();if(all.isEmpty()) {return null;}ArrayList<Books> result = new ArrayList<Books>();for(Books current : all) {if(current.getTitle().toLowerCase().contains(key)||current.getAuthor().toLowerC ase().contains(key)||current.getPress().toLowerCase().contains(key)) {result.add(current);}}return result;}}③BooksFacadeRemote.javaimport java.util.List;import java.util.ArrayList;import javax.ejb.Remote;@Remotepublic interface BooksFacadeRemote {void create(Books books);(2)Cart①Cart.javaimport java.io.Serializable;public class Cart implements Serializable {private String isbn;private String title;private double price;private int number;public Cart(String isbn,String title,double price,int number) { this.isbn = isbn;this.title = title;this.price = price;this.number = number;}public String getIsbn() {return this.isbn;}public String getTitle() {return this.title;}public double getPrice() {return this.price;}public int getNumber() {return this.number;}public void setIsbn(String isbn) {this.isbn = isbn;}public void setTitle(String title) {this.title = title;}public void setPrice(double price) {this.price = price;}public void setNumber(int number) {this.number = number;}}②CartBean.javaimport javax.ejb.Stateful;import java.util.ArrayList;@Statefulpublic class CartBean implements CartRemote {private ArrayList<Cart> record;private boolean initialed = false;public void add(String isbn,String title,double price){ record.add(new Cart(isbn,title,price,1));}public void set(String isbn,int number){for(Cart current : record) {if(current.getIsbn().equals(isbn)) {current.setNumber(number);}}}public boolean exist(String isbn) {for(Cart current : record) {if(current.getIsbn().equals(isbn)) {return true;}}return false;}public ArrayList<Cart> get(){ArrayList<Cart> result = new ArrayList<Cart>();for(Cart current : record){ result.add(newCart(current.getIsbn(),current.getTitle(),current.getPrice() ,current.getNumber()));}return result;}public boolean initialed() {return this.initialed;}public void create(){record = new ArrayList<Cart>();initialed = true;}}void edit(Books books);void remove(Books books);Books find(Object id);List<Books> findAll();ArrayList<Books> search(String key);}③CartRemote.javaimport javax.ejb.Remote;import java.util.ArrayList;@Remotepublic interface CartRemote {public void add(String isbn,String name,double price);public void set(String isbn,int number);public boolean exist(String isbn);public ArrayList<Cart> get();public boolean initialed();public void create();}2、BooksOnline-warControlServlet.javaimport Books.BooksFacadeRemote;import Cart.CartRemote;import java.util.Enumeration;import java.io.IOException;import java.io.PrintWriter;import javax.ejb.EJB;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ControlServlet extends HttpServlet {@EJBprivate CartRemote cartBean;@EJBprivate BooksFacadeRemote booksFacade;/*** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.* @param request servlet request* @param response servlet response*/protected void processRequest(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");request.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();try {if(request.getParameter("page").equals("search")) {request.getSession().setAttribute("directory",booksFacade.search(request.getParameter("key").toLowerCase()));response.sendRedirect("Directory.jsp");}if(request.getParameter("page").equals("directory")&&request.getParameter("su bmit").equals("cart")) {if(!cartBean.initialed()) {cartBean.create();}Enumeration names = request.getParameterNames();while(names.hasMoreElements()) {String name = (String)names.nextElement();if(!name.equals("page")&&!name.equals("submit")) {if(!cartBean.exist(request.getParameter(name))) {cartBean.add(request.getParameter(name),booksFacade.find(request.getParameter (name)).getTitle(),booksFacade.find(request.getParameter(name)).getPrice()); }}}request.getSession().setAttribute("cart",cartBean.get());response.sendRedirect("Cart.jsp");}if(request.getParameter("page").equals("directory")&&request.getParameter("su bmit").equals("search")) {response.sendRedirect("Search.jsp");}if(request.getParameter("page").equals("cart")&&request.getParameter("submit" ).equals("order")) {double sum = 0;Enumeration names = request.getParameterNames();while(names.hasMoreElements()) {String name = (String)names.nextElement();if(!name.equals("page")&&!name.equals("submit")&&!name.equals("address")) {cartBean.set(name,Integer.parseInt(request.getParameter(name)));sum +=booksFacade.find(name).getPrice()*Integer.parseInt(request.getParameter(name) );}}request.getSession().setAttribute("cart",cartBean.get());request.getSession().setAttribute("fee",sum);request.getSession().setAttribute("address",request.getParameter("address")); response.sendRedirect("Order.jsp");}if(request.getParameter("page").equals("cart")&&request.getParameter("submit" ).equals("continue")) {response.sendRedirect("Directory.jsp");}if(request.getParameter("page").equals("cart")&&request.getParameter("submit" ).equals("search")) {response.sendRedirect("Search.jsp");}} finally {out.close();}}// <editor-fold defaultstate="collapsed" desc="HttpServlet 方法。
新华书店进销存管理系统部分程序源代码
![新华书店进销存管理系统部分程序源代码](https://img.taocdn.com/s3/m/8819345ff121dd36a22d821b.png)
资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载新华书店进销存管理系统部分程序源代码地点:__________________时间:__________________说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容附录2新华书店进销存管理系统部分程序源代码主程序MAIN.PRG程序代码SET DEFAULT TO C:\毕业设计PUBLIC nkfgl,nxsgl,ncggl,nkcgl,nxtgl STORE .f. TO nkfgl,nxsgl,ncggl,nkcgl,nxtgl PUBLIC nname,ndepartmentSTORE "" TO nname,ndepartmentDo Form loginfRead EventsDo Form mainRead EventsQuit主表单MAIN.SCX代码2.1 表单Init过程程序代码do mmenu.mpr with this,.T.bel2.caption = nnamebel4.caption = ndepartment系统登入表单LOGINF.SCX代码3.1 表单登入按钮Click事件程序代码SELECT userGO TOP*检查用户名和密码是否输入If empty(thisform.text1.value) thenbel3.caption = "请输入用户名"returnelseif empty(thisform.text2.value) thenbel3.caption = "请输入密码"returnendifendif*操作USER表,查询满足条件记录locate for name = alltrim(thisform.text1.value)if !found()bel3.caption="用户不存在"returnelseif user.password != alltrim(thisform.text2.value) thenbel3.caption="密码错误"returnendifendifnname = ndepartment = user.department nkfgl = user.kfglnxsgl = user.xsglncggl = user.cgglnkcgl = user.kcglnxtgl = user.xtglthisform.releaseclear events系统管理表单XTGLF.SCX代码4.1 表单Init过程程序代码thisform.text1.enabled = .f. thisform.text2.enabled = .f. thisform.text3.enabled = .f. bo1.enabled = .f. thisform.check1.enabled = .f. thisform.check2.enabled = .f. thisform.check3.enabled = .f.thisform.check4.enabled = .f. thisform.check5.enabled = .f. bel5.visible = .f. thisform.text3.visible = .f. mand10.enabled = .f. mand11.enabled = .f. thisform.dis_recordthisform.dis_reccommand4.2 表单自定义过程DIS_RECORD程序代码PUBLIC newcommandSTORE .f. TO newcommandif reccount("user") = 0thisform.text1.value = ""thisform.text2.value = ""bo1.value = "" thisform.check1.value = 0thisform.check2.value = 0thisform.check3.value = 0thisform.check4.value = 0thisform.check5.value = 0elsethisform.text1.value = thisform.text2.value = user.password bo1.value = user.department if user.kfgl thenthisform.check1.value = 1elsethisform.check1.value = 0endifif user.xsgl thenthisform.check2.value = 1elsethisform.check2.value = 0endifif user.cggl thenthisform.check3.value = 1elsethisform.check3.value = 0endifif user.kcgl thenthisform.check4.value = 1elsethisform.check4.value = 0endifif user.xtgl thenthisform.check5.value = 1elsethisform.check5.value = 0endifendifthisform.refresh4.3 表单自定义过程DIS_RECCOMMAND程序代码private nstore 0 to nn = reccount("user")if n=1 .or. n=0 thenmand1.enabled = .f. mand2.enabled = .f. mand3.enabled = .f. mand4.enabled = .f.elseif recno("user")=1 thenmand1.enabled = .f.mand2.enabled = .f. mand3.enabled = .t. mand4.enabled = .t.elseif recno("user")=n thenmand1.enabled = .t. mand2.enabled = .t. mand3.enabled = .f. mand4.enabled = .f.elsemand1.enabled = .t. mand2.enabled = .t. mand3.enabled = .t. mand4.enabled = .t.endifendifendifthisform.refresh4.4 表单保存按钮Click事件程序代码if empty(thisform.text1.value) then=messagebox("请输入用户名",0+48+0,"出错")thisform.refreshreturnendifif empty(thisform.text2.value) then=messagebox("请输入密码",0+48+0,"出错")thisform.text2.setfocusthisform.refreshreturnendifif .not.(alltrim(thisform.text2.value) ==alltrim(thisform.text3.value)) then=messagebox("密码重复错误,请重新输入",0+48+0,"出错") thisform.text2.value = ""thisform.text3.value = ""thisform.text2.setfocusthisform.refreshreturnendifif empty(bo1.value) then=messagebox("请选择所属部门",0+48+0,"出错")thisform.refreshreturnendififthisform.check1.value=0.and.thisform.check2.value=0.and .thisform.check3.value=0.and.thisform.check4.value=0.an d.thisform.check5.value=0 then=messagebox("至少选择一个用户权限",0+48+0,"出错") thisform.check1.setfocusthisform.refreshreturnendififthisform.check1.value=1.and.thisform.check2.value=1.and .thisform.check3.value=1.and.thisform.check4.value=1.an d.thisform.check5.value=1 thenmesbox=messagebox("此用户将具有全部权限,请确认",4+48+0,"警告")if mesbox=7 thenthisform.check1.setfocusthisform.refreshreturnendifendif*用户权限处理PRIVATEnname,npassword,ndepartment,nkf,nxs,ncg,nkc,nxt nname = alltrim(thisform.text1.value)npassword = alltrim(thisform.text2.value)ndepartment = alltrim(bo1.value) if thisform.check1.value = 1 thennkf = .t.elsenkf = .f.endifif thisform.check2.value = 1 thennxs = .t.elsenxs = .f.endifif thisform.check3.value = 1 thenncg = .t.elsencg = .f.endifif thisform.check4.value = 1 thennkc = .t.elsenkc = .f.endifif thisform.check5.value = 1 thennxt = .t.elsenxt = .f.endif*判断是新记录保存还是修改记录If newcommand then && newcommand = .t. 是新记录保存locate for =alltrim(thisform.text1.value) if found() then=messagebox("用户已经存在",0+48+0,"出错")thisform.text1.setfocusthisform.refreshreturnendif*数据表user保存记录insert intouser(name,password,department,kfgl,xsgl,cggl,kcgl,xtgl) values (nname,npassword,ndepartment,nkf,nxs,ncg,nkc,nxt) =messagebox("保存完毕",0+48+0,"提示")elseupdate user set password=npassword,department=ndepartment,kfgl=nkf,xsgl=nxs,cggl=ncg,kcgl=nkc,xtgl=nxt where name= nname=messagebox("修改完成",0+48+0,"提示")endif*表单初始化thisform.text1.enabled = .f.thisform.text2.enabled = .f.thisform.text3.enabled = .f.bo1.enabled = .f.thisform.check1.enabled = .f.thisform.check2.enabled = .f.thisform.check3.enabled = .f.thisform.check4.enabled = .f. thisform.check5.enabled = .f. mand1.enabled = .t. mand2.enabled = .t. mand3.enabled = .t. mand4.enabled = .t. mand5.enabled = .t. mand6.enabled = .t. mand7.enabled = .t. mand8.enabled = .t. mand9.enabled = .t. mand10.enabled =.f. mand11.enabled =.f. mand12.enabled = .t. bel5.visible = .f. thisform.text3.visible = .f. thisform.dis_reccommand thisform.dis_recordnewcommand = .f.thisform.refresh4.5 表单浏览按钮Click事件程序代码DEFINE WINDOW browsewin FROM 1,1 TO 30,80 noFLOAT CLOSE nominimize nogrow nozoom systembrow fields name,department,kfgl,xsgl,cggl,kcgl window browsewin noappend nomodify nodeleterelease window browsewin图书管理表单TSGL.SCX代码5.1 自定义过程AUTO_BOOKID程序代码select bookset order to bookidgo bottomprivate autoid1,autoid2,autoid3,autoid4autoid1 =alltrim(str(val(substr(alltrim(book.bookid),2,6))+1,6,0 ))autoid2 = len(autoid1)if autoid2 != 6 thenfor n = autoid2 to 5autoid1 = "0" + autoid1endforendifautoid4 = "B" + alltrim(autoid1)thisform.text1.value = autoid4 5.2 新建按钮Click事件程序代码thisform.text2.enabled = .t. thisform.text3.enabled = .t. thisform.text4.enabled = .t. thisform.text5.enabled = .t. thisform.text6.enabled = .t. bo1.enabled = .t. thisform.text7.enabled = .t. thisform.text8.enabled = .t. mand1.enabled = .f. mand2.enabled = .f. mand3.enabled = .f. mand4.enabled = .f. mand5.enabled = .f. mand6.enabled = .f. mand7.enabled = .f. mand8.enabled = .f. mand9.enabled = .f. mand10.enabled =.t. mand11.enabled =.t.mand12.enabled = .t.thisform.text2.value = ""thisform.text3.value = ""thisform.text4.value = ""thisform.text5.value = ""thisform.text6.value = ""bo1.value = ""thisform.text7.value = 0thisform.text8.value = 0thisform.auto_bookidthisform.text2.setfocusthisform.newcommand = .t.thisform.refresh5.3 删除按钮Click事件程序代码if reccount("book")=1 then=messagebox("只有一条记录,不能删除",0+16+0,"出错") returnelsenbookid = alltrim(thisform.text1.value) nbookname = alltrim(thisform.text2.value)mesbox=messagebox("是否删除"+nbookid+"号图书",4+48+0,"警告")if mesbox=7 thenreturnelseuse book EXCLUSIVEdelete from book where bookid=nbookidpack=messagebox(nbookid+"图书已经删除",0+48+0,"提示") endifendifthisform.dis_recordthisform.dis_reccommandthisform.grid1.recordsource = "book"thisform.refresh5.4 保存按钮Click事件程序代码if empty(thisform.text2.value)=messagebox("请输入书名",0+48+0,"出错")thisform.text2.setfocusthisform.refreshreturnendifif empty(thisform.text3.value)=messagebox("请输入书号",0+48+0,"出错") thisform.text3.setfocusthisform.refreshreturnendifif empty(thisform.text4.value)=messagebox("请输入出版社",0+48+0,"出错") thisform.text4.setfocusthisform.refreshreturnendifif empty(thisform.text5.value)=messagebox("请输入作者信息",0+48+0,"出错") thisform.text5.setfocusthisform.refreshreturnendifif empty(bo1.value)=messagebox("请选择图书类型",0+48+0,"出错")bo1.setfocusthisform.refreshreturnendifif thisform.text7.value = 0=messagebox("请输入价格",0+48+0,"出错")bo1.setfocusthisform.refreshreturnendifPRIVATEnbookid,nbookname,nbookno,nbookphouse,nbookwriter,nbook cd,nbookclass,nbookprice,nbookdiscountnbookid = alltrim(thisform.text1.value)nbookname = alltrim(thisform.text2.value)nbookno = alltrim(thisform.text3.value)nbookphouse = alltrim(thisform.text4.value)nbookwriter = alltrim(thisform.text5.value)nbookcd = alltrim(thisform.text6.value)nbookclass = alltrim(bo1.value)nbookprice = thisform.text7.valuenbookdiscount = thisform.text8.value*判断是新记录保存还是修改记录If thisform.newcommand then && newcommand = .t. 是新记录保存*数据表book保存记录insert into book(bookid,bookname,bookno,bookphouse,bookwriter,bookcd,bookclass,bookprice,bookdiscount) values(nbookid,nbookname,nbookno,nbookphouse,nbookwriter,nbookcd,nbookclass,nbookprice,nbookdiscount)=messagebox("保存完毕",0+48+0,"提示")elseupdate book setbookname=nbookname,bookno=nbookno,bookphouse=nbookphouse,bookwriter=nbookwriter,bookcd=nbookcd,bookclass=nbookclass,bookprice=nbookprice,bookdiscount=nbookdiscountwhere bookid=nbookid=messagebox("修改完成",0+48+0,"提示")endif*表单初始化thisform.text2.enabled = .f.thisform.text3.enabled = .f.thisform.text4.enabled = .f.thisform.text5.enabled = .f.thisform.text6.enabled = .f.bo1.enabled = .f.thisform.text7.enabled = .f.thisform.text8.enabled = .f.mand5.enabled = .t.mand6.enabled = .t.mand7.enabled = .t.mand8.enabled = .t.mand9.enabled = .t.mand10.enabled =.f.mand11.enabled =.f.mand12.enabled = .t.thisform.dis_recordthisform.dis_reccommandthisform.newcommand = .f.thisform.refresh5.5 浏览按钮Click事件程序代码DEFINE WINDOW browsewin FROM 1,1 TO 30,160 noFLOAT CLOSE nominimize nogrow nozoom systembrow fieldsbookid,bookname,bookno,bookphouse,bookwriter,bookcd,boo kclass,bookprice,bookdiscount window browsewin noappend nomodify nodeleterelease window browsewin会员输入表单KFGL_HYSR.SCX程序代码6.1 自定义过程AUTO_VIPID程序代码select vipset order to vipidgo bottomprivate autoid1,autoid2,autoid3,autoid4autoid1 =alltrim(str(val(substr(alltrim(vip.vipid),2,6))+1,6,0)) autoid2 = len(autoid1)if autoid2 != 6 thenfor n = autoid2 to 5autoid1 = "0" + autoid1endforendifautoid4 = "V" + alltrim(autoid1)thisform.text1.value = autoid46.2 保存按钮Click事件程序代码*输入数据校验if empty(thisform.text2.value)=messagebox("请输入会员姓名",0+16+0,"出错") thisform.text2.setfocusreturnendifif thisform.optiongroup1.value = 0=messagebox("请选择会员性别",0+16+0,"出错") thisform.optiongroup1.option1.setfocus returnelseprivate nvipsexstore "" to nvipsexif thisform.optiongroup1.value = 1store "男" to nvipsexelsestor "女" to nvipsexendifendifif empty(thisform.text4.value)=messagebox("请输入会员联系地址",0+16+0,"出错") thisform.text4.setfocusreturnendifif empty(thisform.text5.value)=messagebox("请输入会员联系电话",0+16+0,"出错") thisform.text5.setfocusreturnendifif empty(thisform.text6.value)=messagebox("请输入邮政编码",0+16+0,"出错") thisform.text6.setfocusreturnendif*保存数据private nvipid,nvipname,nvipadd,nvipphone,nvipcode nvipid = alltrim(thisform.text1.value)nvipname = alltrim(thisform.text2.value)nvipadd = alltrim(thisform.text4.value)nvipphone = alltrim(thisform.text5.value) nvipcode = alltrim(thisform.text6.value)insert into vip(vipid,vipname,vipsex,vipadd,vipphone,vipcode,vipsum,vi pdiscount) values(nvipid,nvipname,nvipsex,nvipadd,nvipphone,nvipcode,0,0) =messagebox("保存成功",0+48+0,"提示")nmesbox=messagebox("是否打印会员卡?",4+32+0,"会员卡打印")if nmesbox = 6selectvip.vipid,vip.vipname,vip.vipsex,vip.vipadd,vip.vipphon e,vip.vipcode from vip where vip.vipid = nvipid into cursor vipcardselect vipcardreport form vipcard.frx to printuse in vipcardendifthisform.auto_vipidmand2.click6.3 清除按钮Click事件程序代码thisform.text2.value = ""thisform.optiongroup1.value = 0thisform.text4.value = ""thisform.text5.value = ""thisform.text6.value = ""thisform.text1.setfocusthisform.refresh会员查询表单KFGL_HYCX.SCX程序代码7.1 表单自定义过程DIS_GRID程序代码thisform.grid1.readonly = .t.thisform.grid1.columncount = 8thisform.grid1.column1.header1.caption = "会员编号" thisform.grid1.column1.width = 80thisform.grid1.column1.movable = .f.thisform.grid1.column1.resizable = .f.thisform.grid1.column2.header1.caption = "会员姓名" thisform.grid1.column2.width = 80thisform.grid1.column2.movable = .f.thisform.grid1.column2.resizable = .f.thisform.grid1.column3.header1.caption = "会员性别" thisform.grid1.column3.width = 80thisform.grid1.column3.movable = .f.thisform.grid1.column3.resizable = .f.thisform.grid1.column4.header1.caption = "联系地址"thisform.grid1.column4.width = 250thisform.grid1.column4.movable = .f.thisform.grid1.column4.resizable = .f.thisform.grid1.column5.header1.caption = "联系电话"thisform.grid1.column5.width = 80thisform.grid1.column5.movable = .f.thisform.grid1.column5.resizable = .f.thisform.grid1.column6.header1.caption = "邮政编码"thisform.grid1.column6.width = 80thisform.grid1.column6.movable = .f.thisform.grid1.column6.resizable = .f.thisform.grid1.column7.header1.caption = "累计购书金额"thisform.grid1.column7.width = 80thisform.grid1.column7.movable = .f.thisform.grid1.column7.resizable = .f.thisform.grid1.column8.header1.caption = "会员优惠折扣"thisform.grid1.column8.width = 80thisform.grid1.column8.movable = .f.thisform.grid1.column8.resizable = .f.thisform.refresh7.2 表单Init过程程序代码thisform.dis_gridpublic ncombo1,ncombo2,ntext1,chsql,cxsqlstore "" to ncombo1,ncombo2,ntext1,chsql,cxsqlthisform.optiongroup1.value = 0thisform.optiongroup1.enabled = .f.thisform.grid1.recordsource = Nullselectvip.vipid,vip.vipname,vip.vipsex,vip.vipadd,vip.vipphon e,vip.vipcode,vip.vipsum,vip.vipdiscount from vip into cursor hycx_temptable order by vip.vipidthisform.grid1.recordsource = "hycx_temptable"thisform.dis_gridthisform.refresh7.3 表单添加条件按钮Click事件程序代码if empty(bo1.value) .or.empty(bo2.value) .or.empty(thisform.text1.value)=messagebox("请输入条件",0+48+0,"出错")bo1.setfocusreturnendifif thisform.optiongroup1.value = 1chsql = " AND "endifif thisform.optiongroup1.value = 2chsql = " OR "endifchsql = chsql + ncombo1 + ncombo2 + ntext1 thisform.edit1.value = thisform.edit1.value + chsql if .not.empty(thisform.edit1.value)thisform.optiongroup1.value = 1thisform.optiongroup1.enabled = .t.endifbo1.value = ""bo2.value = ""thisform.text1.value = ""chsql = ""bo1.setfocusthisform.refresh7.4 表单条件查询按钮Click事件程序代码if empty(thisform.edit1.value)=messagebox("请输入查询条件",0+16+0,"出错")mand1.setfocusthisform.refreshreturnendifcxsql = alltrim(thisform.edit1.value)thisform.grid1.recordsource = Nullselectvip.vipid,vip.vipname,vip.vipsex,vip.vipadd,vip.vipphon e,vip.vipcode,vip.vipsum,vip.vipdiscount from vip where &cxsql into cursor hycx_temptable order by vip.vipid thisform.grid1.recordsource = "hycx_temptable"thisform.dis_gridthisform.optiongroup1.value = 0thisform.optiongroup1.enabled = .f.bo1.value = ""bo2.value = ""thisform.text1.value = ""thisform.edit1.value = ""store "" to ncombo1,ncombo2,ntext1,chsql,cxsqlthisform.refresh会员修改表单KFGL_HYXG.SCX程序代码表单Init过程程序代码LPARAMETERS nPar1select vipset order to vipidlocate for vip.vipid = nPar1 thisform.text1.value = vip.vipid thisform.text2.value = vip.vipname if vip.vipsex = "男"thisform.optiongroup1.value = 1 elsethisform.optiongroup1.value = 2 endifthisform.text4.value = vip.vipadd thisform.text5.value = vip.vipphone thisform.text6.value = vip.vipcode thisform.refresh保存按钮Click事件程序代码*输入数据校验if empty(thisform.text2.value)=messagebox("请输入会员姓名",0+48+0,"出错") thisform.text2.setfocusreturnendifif thisform.optiongroup1.value = 0=messagebox("请选择会员性别",0+48+0,"出错") thisform.optiongroup1.option1.setfocusreturnelseprivate nvipsexstore "" to nvipsexif thisform.optiongroup1.value = 1store "男" to nvipsexelsestor "女" to nvipsexendifendifif empty(thisform.text4.value)=messagebox("请输入会员联系地址",0+48+0,"出错") thisform.text4.setfocusreturnendifif empty(thisform.text5.value)=messagebox("请输入会员联系电话",0+48+0,"出错")thisform.text5.setfocusreturnendifif empty(thisform.text6.value)=messagebox("请输入邮政编码",0+48+0,"出错")thisform.text6.setfocusreturnendif*修改数据private nvipid,nvipname,nvipadd,nvipphone,nvipcodenvipid = alltrim(thisform.text1.value)nvipname = alltrim(thisform.text2.value)nvipadd = alltrim(thisform.text4.value)nvipphone = alltrim(thisform.text5.value)nvipcode = alltrim(thisform.text6.value)update vip set vip.vipname = nvipname, vip.vipsex = nvipsex, vip.vipadd = nvipadd, vip.vipphone = nvipphone, vip.vipcode = nvipcode where vip.vipid = nvipid=messagebox("修改已完成",0+48+0,"提示")thisform.release删除按钮Click事件程序代码nvipid = alltrim(thisform.text1.value)mesbox=messagebox("是否删除" + nvipid + "号会员",4+48+0,"警告")if mesbox=7 thenreturnelseuse vip EXCLUSIVEdelete from vip where vip.vipid = nvipidpack=messagebox("会员" + nvipid + "已经删除",0+48+0,"提示")endifthisform.release会员卡打印表单KFGL_HYDY.SCX程序代码9.1 打印按钮Click事件程序代码if empty(thisform.text1.value)=messagebox("请输入会员编号",0+16+0,"出错")thisform.text1.setfocusreturnelsenvipid = thisform.text1.valueendifnmesbox=messagebox("是否打印会员卡?",4+32+0,"会员卡打印")if nmesbox = 6selectvip.vipid,vip.vipname,vip.vipsex,vip.vipadd,vip.vipphon e,vip.vipcode from vip where vip.vipid = nvipid into cursor vipcardselect vipcardreport form vipcard.frx to printuse in vipcardendif9.2 输入框Text1的Valid事件程序代码this.value = alltrim(this.value)if .not.empty(this.value)select vipgo toplocate for vip.vipid = this.valueif found()thisform.text2.value = vip.vipname thisform.text3.value = vip.vipsex thisform.text4.value = vip.vipadd thisform.text5.value = vip.vipphone thisform.text6.value = vip.vipcodeelse=messagebox("会员编号不存在",0+16+0,"出错") thisform.text1.value = ""thisform.text2.value = ""thisform.text3.value = ""thisform.text4.value = ""thisform.text5.value = ""thisform.text6.value = ""endifendifthisform.refresh采购员管理表单KFGL_CGY.SCX程序代码10.1 表单自定义过程AUTO_BUYERID程序代码select buyerset order to buyeridgo bottomprivate autoid1,autoid2,autoid3,autoid4autoid1 =alltrim(str(val(substr(alltrim(buyer.buyerid),4,2))+1,2 ,0))autoid2 = len(autoid1)if autoid2 =1autoid1 = "0" + autoid1endifautoid4 = "BUY" + alltrim(autoid1)thisform.text1.value = autoid410.2 表单表单保存按钮Click程序代码privatenbuyerid,nbuyername,nbuyersex,nbuyerbirthday,nbuyeradd, nbuyerphoneif empty(thisform.text2.value)=messagebox("请输入采购员姓名",0+48+0,"出错")thisform.text2.setfocusthisform.refreshreturnendifif thisform.optiongroup1.value = 0=messagebox("请选择采购员性别",0+48+0,"出错") thisform.optiongroup1.option1.setfocus thisform.refreshreturnendifif thisform.text3.value = {}=messagebox("请输入出生年月",0+48+0,"出错") thisform.text3.setfocusthisform.refreshreturnendifif empty(thisform.text4.value) then=messagebox("请输入家庭住址",0+48+0,"出错") thisform.text4.setfocusthisform.refreshreturnendifif empty(thisform.text5.value) then=messagebox("请输入联系电话",0+48+0,"出错") thisform.text5.setfocusthisform.refreshreturnendifnbuyerid = alltrim(thisform.text1.value)nbuyername = alltrim(thisform.text2.value)if thisform.optiongroup1.value = 1nbuyersex = "男"elsenbuyersex = "女"endifnbuyerbirthday = dtoc(thisform.text3.value)nbuyeradd = alltrim(thisform.text4.value)nbuyerphone = alltrim(thisform.text5.value)*判断是新记录保存还是修改记录If thisform.newcommand = .t. && newcommand = .t. 是新记录保存*数据表buyer保存记录insert intobuyer(buyerid,buyername,buyersex,buyerbirthday,buyeradd ,buyerphone) values(nbuyerid,nbuyername,nbuyersex,nbuyerbirthday,nbuyeradd ,nbuyerphone)=messagebox("保存完毕",0+48+0,"提示")elseupdate buyer setbuyername=nbuyername,buyersex=nbuyersex,buyerbirthday=n buyerbirthday,buyeradd=nbuyeradd,buyerphone=nbuyerphone where buyerid=nbuyerid=messagebox("修改完成",0+48+0,"提示")endif*表单初始化thisform.text1.enabled = .f.thisform.text2.enabled = .f.thisform.optiongroup1.enabled = .f.thisform.text3.enabled = .f.thisform.text4.enabled = .f.thisform.text5.enabled = .f.mand1.enabled = .t.mand2.enabled = .t.mand3.enabled = .t.mand4.enabled = .t.mand5.enabled = .t.mand6.enabled = .t.mand7.enabled = .t.mand8.enabled = .t.mand9.enabled = .t.mand10.enabled =.f.mand11.enabled =.f.mand12.enabled = .t.thisform.dis_recordthisform.dis_reccommandthisform.newcommand = .f.thisform.refresh10.3 表单删除按钮Click程序代码if reccount("buyer")=1 then=messagebox("只有一条记录,不能删除",0+16+0,"出错") returnelsenbuyerid = alltrim(thisform.text1.value)nbuyername = alltrim(thisform.text2.value)mesbox=messagebox("是否删除"+nbuyerid+"号采购员"+nbuyername,4+48+0,"警告")if mesbox=7 thenreturnelseuse buyer EXCLUSIVEdelete from buyer where buyer.buyerid=nbuyeridpack=messagebox(nbuyerid+"号采购员"+nbuyername+"已经删除",0+48+0,"提示")endifendifthisform.dis_recordthisform.dis_reccommandthisform.refresh10.4 表单浏览按钮Click程序代码DEFINE WINDOW browsewin FROM 1,1 TO 30,120 noFLOAT CLOSE nominimize nogrow nozoom systemselect buyerset order to buyeridbrow fieldsbuyerid,buyername,buyersex,buyerbirthday,buyeradd,buyer phone window browsewin noappend nomodify nodeleterelease window browsewin10.5 表单自定义过程DIS_RECORD程序代码select buyerset order to buyeridif reccount("buyer") = 0thisform.text1.value = ""thisform.text2.value = ""thisform.optiongroup1.value = 0thisform.text3.value = {}thisform.text4.value = ""thisform.text5.value = ""elsethisform.text1.value = buyer.buyerid thisform.text2.value = buyer.buyernameif buyer.buyersex = "男"thisform.optiongroup1.value = 1elsethisform.optiongroup1.value = 2endifthisform.text3.value = buyer.buyerbirthday thisform.text4.value = buyer.buyeraddthisform.text5.value = buyer.buyerphoneendifthisform.refresh采购员信息查找表单KFGL_CGY_CZ.SCX程序代码11.1 表单查找按钮Click事件程序代码if thisform.optiongroup1.value = 1 .and. empty(thisform.text1.value)=messagebox("请输入采购员编号",0+16+0,"出错") thisform.text1.setfocusreturnendifif thisform.optiongroup1.value = 2 .and. empty(thisform.text2.value)=messagebox("请输入采购员姓名",0+16+0,"出错") thisform.text2.setfocusreturnendifif thisform.optiongroup1.value = 0=messagebox("请选择条件",0+16+0,"出错")thisform.optiongroup1.option1.setfocusreturnendifselect buyerset order to buyeridgo topif thisform.optiongroup1.value = 1locate for buyerid == alltrim(thisform.text1.value) if .not.found()=messagebox("没有附和条件记录",0+16+0,"出错") thisform.text1.setfocusreturnendifelselocate for buyername = alltrim(thisform.text2.value) if .not.found()=messagebox("没有附和条件记录",0+16+0,"出错") thisform.text2.setfocusreturnendifendifcggl_cgy.dis_recordcggl_cgy.dis_reccommandcggl_cgy.refresh thisform.release。
JSP图书管理系统代码
![JSP图书管理系统代码](https://img.taocdn.com/s3/m/41f1afb4d1d233d4b14e852458fb770bf78a3bf0.png)
JSP图书管理系统代码JSP图书管理系统代码本文档提供了一个JSP图书管理系统的完整代码实现,通过该系统可以实现图书的管理、查询和借阅功能。
本系统采用JSP作为前端技术,Java作为后端技术,数据库使用MySQL。
目录⒈介绍⒉系统需求⒈软件需求⒉硬件需求⒊安装和配置⒈数据库安装⒉环境配置⒊代码部署⒋数据库设计⒈Book表⒉User表⒊Borrow表⒌系统架构⒍功能实现⒈用户登录和注册⒉图书查询⒊图书借阅⒋管理员功能⒈图书添加⒉图书删除⒊图书修改⒎系统测试⒏运行截图⒐附件⒈介绍JSP图书管理系统是一个基于Web的应用程序,旨在帮助图书馆管理图书的流通。
系统提供了用户登录和注册功能,允许用户查询图书信息并进行借阅。
管理员可以添加、删除和修改图书信息。
⒉系统需求⑴软件需求- Java Development Kit(JDK)- Apache Tomcat- MySQL数据库⑵硬件需求- 计算机- 网络连接⒊安装和配置⑴数据库安装⒈并安装MySQL数据库。
⒉创建一个新的数据库,将名称设置为book_management。
⒊在book_management数据库中创建三个表:Book、User和Borrow。
⑵环境配置⒈安装JDK和Tomcat,并将其配置好。
⒉将项目代码到本地,并将其放置在Tomcat的webapps目录下。
⑶代码部署⒈启动Tomcat服务器。
⒉打开浏览器,访问项目名称。
⒋数据库设计⑴ Book表---- 列名 ---- 类型 ---- 描述 -------- --------- ---- ----------- ---- -------------- -------- id ---- int ---- 图书ID -------- name ---- varchar(50) ---- 图书名称 -------- author ---- varchar(50) ---- 图书作者 -------- publisher ---- varchar(50) ---- 图书出版社 -------- quantity ---- int ---- 图书数量 -------- avlable ---- int ---- 可借阅数量 ----⑵ User表---- 列名 ---- 类型 ---- 描述 -------- ------ ---- ----------- ---- -------- -------- id ---- int ---- 用户ID -------- name ---- varchar(50) ---- 用户名 -------- password ---- varchar(50) ---- 用户密码 ----⑶ Borrow表---- 列名 ---- 类型 ---- 描述 -------- ---------- ---- ----------- ---- ---------- -------- id ---- int ---- 借阅ID -------- book_id ---- int ---- 图书ID -------- user_id ---- int ---- 用户ID -------- borrow_date---- date ---- 借阅日期 -------- return_date---- date ---- 归还日期 ----⒌系统架构本系统采用经典的MVC(Model-View-Controller)架构模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库与管理信息系统报告题目:网上书店管理系统学院:信息工程与自动化学院专业:计算机科学与技术年级: 09级学生姓名:指导教师:日期: 2012-6-3教务处制目录一、需求分析; (2)二、系统设计内容; (2)三、系统逻辑设计; (3)四、系统功能需求分析; (6)五、总结; (10)六、参考资料; (11)七、附录; (11)一、需求分析;网上书店系统主要是实现网上选书、购书、产生订单等功能的系统。
一个典型的网上商城一般都需要实现商品信息的动态提示、购物车管理、客户信息注册登录管理、订单处理等模块。
根据网上书店的基本需求,本系统需要完成的具体任务如下:1)书图查询: 当客户进入网上书店时,应该在主页面中分类显示最新的书目信息,以供客户选择所需图书,同时也应该提供按照图书名称,或者作者信息快速查询所需书目信息的功能。
2)购物车管理:当客户选择购买某图书产品时,应该能够将对应图书信息,如:价格、数量记录到对应的购物车中,并允许客户返回书目查询页面,选择其他商品,并添加到购物车中,当对应的购物订单生成后,应该能够自动清除以生成订单的购物车中的信息。
3)订单处理:对应客户购买图书商品信息的需求,在确定了所购图书商品的价格、数量等信息后,提示用户选择对应的送货方式及付款方式,最终生成对应的订单记录,以便于网站配货人员依据订单信息进行后续的出货、送货的处理。
4)会员注册:为了能够实现图书商品的购买,需要管理客户相关的联系方式、送货地点等相关的信息。
二、系统设计内容;1)采用人机对话的操作方式,界面设计美观友好、信息查询灵活、方便、快捷、准确、数据存储安全可靠。
2)全面展示商城内所有商品。
3)为顾客提供一个方便、快捷的商品信息查询功能。
采用模糊查询查询数据。
4)会员可以随时修改自己的会员资料。
5)实现网上购物。
6)查看商城内的公告信息。
7)用户随时都可以查看自己的订单。
8)对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。
9)系统最大限度地实现了易维护性和易操作性。
10)系统运行稳定、安全可靠。
三、系统逻辑设计;根据实现功能不同将网站分为了在线购书子系统和后台管理子系统。
1)在线购书子系统为消费提供了在线浏览图书,订购图书的平台。
属于前台展示部分的设计。
具体功能如下:用户登陆网站浏览图书。
用户在主页或我的帐户中注册成为网站的会员。
只有网站的会员才能在网站购买图书。
用户可以通过分类浏览,书目推荐,新书推荐,书目查询的方式选择喜爱的图书。
用户选择图书提交订单完成订购。
2)后台管理子系统为书店管理员提供了管理网络书店的平台。
属于后台管理部分的设计。
具体功能如下:注册会员的管理,并通过会员的消费记录更改的会员的等级,不同等级的会员享受不同的购书折扣待遇。
图书类别的管理,图书的管理。
通过添加,修改,删除对图书类别进行管理。
在类别下添加图书记录,对图书的名称,出版单位,媒体推荐,内容简介等详细信息进行添加,修改等管理。
订单的管理,查询会员提交的订单并处理。
处理已经送货的订单使之对书店的图书销售记录书店库存信息实时修改。
书店公告信息的管理添加书店的公告信息使消费者及时了解书店的最新动态。
对于数据库应用系统而言,设计数据库是十分重要的,也是首要的工作。
一般先设计系统数据库,然后才开始设计应用程序。
1.实体E_R图以下是购物车实体E-R图:图1购物车E-R图以下是留言信息实体E-R图图2留言信息E-R图2.数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以及实现的效果产生影响。
合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。
用户的需求具体体现在各种信息的提供,保存,更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入.收集基本数据,数据结构以及数据处理的流程。
通过上述系统功能分析,针对一般在线书店的需求,总结出如下需求信息。
1)用户分一般用户和管理员。
2)订单分单张详细订单和总订单。
3)每一本图书都从属一种类型。
4)一个用户可以购买多本图书。
5)一个用户对应一张定单列表。
根据上面的设计规划出的实体有:管理员信息实体、用户信息实体、图书实体、图书分类实体、订单实体、订单列表实体。
数据库存储过程的设计和调用:使用存储过程增加了数据库的安全性,在页面调用也十分方便。
数据库MY_BOOK表查询原代码如下:CREATE PROCEDURE SHOW //创建存储过程SHOW,查询数据库的表AS //MY_BOOK的数据SELECT * FROM MY_BOOKGO调用存储过程代码如下:CON=POOL.GETCONNECTION(); //前台调用存储过程STA TEMENT STMT=CON.CREATESTATEMENT();RESULTSET RS=STMT.EXECUTEQUERY("SHOW");数据库表数据删除存储过程代码:CREATE PROCEDURE DEL_U @ID INTASDELETE FROM MY_USERS WHERE ID=@IDGO调用存储过程代码如下:STA TEMENT STMT = CON.CREATESTATEMENT();INT VALUE=STMT.EXECUTEUPDA TE("DEL_U @ID="+ID);3数据库表结构表1购物车表表2留言信息表四、系统功能需求分析;4.1、系统功能模块图以下部分是网上书店系统的前台模块图:图3系统功能模块图以下是网上书店后台管理的模块图:包括图书馆里、会员管理、订单管理、支付宝管理、数据库管理和留言板管理。
图4后台管理模块图4.2、系统简单的流程图;首先假定一个合法的用户已经登录到这个系统。
当客户选择订购货物时,业务流程开始。
客户输入想要购买书的名字、出版社或作者。
或通过点击图书分类进行查询。
对于每一个输入的信息,网站会给出该书的基本信息,用户通过订单按钮将该书添加到购物车,形成订单表。
该系统可以保存连续的已经订购的商品清单。
用户点击支付的按钮,系统会转到支付信息页面。
系统检验输入的信息,把该订单作为未完成的交易保存,同时向记帐系统发支付信息。
如果客户提交的信息不正确,系统将提示客户修改。
当支付确认后,订单被标记上已经确认,同时返回给客户一个订单ID,业务流程也就结束了。
另外,如果支付没有被确认,系统将提示客户改正支付信息或者取消。
本网站主要业务流程描述如下:图5系统流程图用powerdesigner画出CDM图;用powerdesigner画出PDM图;4.3、系统的结构;1、系统主要分为前后台两部分:前台是不需要认证的,是供网站的访问者访问的,我完成的是前台部分、购物车模块和留言板,前台主要完成了以下功能:下图所示的界面是网上书店系统的前台首页。
图6 电子商务系统前台首页购买商品登陆之后,单击商品的类别选项,即可查看相应的商品信息。
单击任意一种商品下方的【添加到购物车】按钮,页面会转到【我的购物车】页面,在购物车中会显示该用户的订单信息,分为已定购,未订购,已购买三个标单信息。
图7 购物车界面购物车模块说明:如果同一种商品要购买多个,只需在数量文本框中修改数量即可。
如果要删除购物车中的商品,只需单击“X”按钮,商品即被删除,如果继续购物,单击“继续购买”按钮,即返回首页,继续购物。
点击全部支付,系统会检查你在本站的余额是否足够,足够则购买成功。
留言板图8留言板图说明单击“给我们留言”按钮可到留言板中进行留言操作。
在这里你可以发表你对本网站的一些意见和评论。
五、总结;经过2个星期的努力,网上书店基本开发完毕。
其功能基本符合企业需求。
对于数据的输入、修改、查询等问题通过程序进行了有效的解决。
并且能对数据库进行权限管理。
但某些功能,由于自己知识的欠缺和时间不足造成一些细微的功能未能实现,主要是,某些算法不够简练,这些需要在以后的工作中改进,锤炼。
在这段时间的设计中,我感觉自己学了很多的以前没有深入了解的知识和从未接触过的知识。
比如JSP和SQL数据库以及网站设计方面的知识。
在以前的学习中也学习了JSP和SQL,但那只是停留在了解的阶段。
而此次毕业设计却带给我更进一步了解和应用这些知识的机会。
做课程设计的过程中,熟悉了数据库的应用和开发,对许多软件的安装原理有了较深刻的认识;对软件的开发过程、软件工程理论都有了进一步的了解,大大丰富了软件开发经验;并且对以前学习过程中所学到的相关知识有了更加深的了解,并进一步把它应用到课程设计中。
但是由于毕业设计时间较短和本人知识有限,所以该网站还有许多不尽人意的地方,网站还存在以下一些问题:(1)系统在安全性方面还有一些问题;(2)系统的某些功能还不能够很好的实现,同时本系统还某些方面没有考虑到;(3)系统在跨平台运行方面有一些不足。
这些都有待进一步的改善。
因此,以后还应加强这几个方面的工作和学习:对网站的安全管理方面的学习和加强;对一些常用的应用软件还要多熟悉;更多地加强对关于网络功能数据库知识的学习。
六、参考资料;1.叶核亚JA V A程序设计使用教程(第三版)电子工业出版社2005-032.张月玲《管理信息系统》(第二版)清华大学出版社20013.周绪.《SQL server2000 入门与提高》.清华大学出版社,20064.李萍.《SQL Server 2000 应用开发教程》.电子工业出版社,20045.百度资料七、附录;程序源代码前台模块代码<%@ page language="java" import="java.utill.*,java.text.*"%><%@ page contentType="text/html;charset=gb2312" %><style type="text/css">.sec_menu {BORDER-RIGHT: white 1px solid; BACKGROUND: #d6dff7; OVERFLOW: hidden; BORDER-LEFT: white 1px solid; BORDER-BOTTOM: white 1px solid.menu_titleSPAN FONT-WEIGHT: bold; LEFT: 10px; COLOR: #215dc6; POSITION: relative; TOP: 2px.menu_title2 FONT-WEIGHT: bold; LEFT: 10px; COLOR: #428eff; POSITION: relative; TOP: 2px}</style></head><BODY><script>var he=document.body.clientHeight-105document.write("<div id=tt style=height:"+he+";overflow:hidden>")<table cellspacing="0" cellpadding="0" width="158" align="center"><tr><tdid="imgmenu20"class="menu_title" onMouseOver="this.className='menu_title2';" onClick="showsubmenu(20);loadThreadFollow()" onMouseOut="this.className='menu_title';"style="cursor:hand" background=../my/images/menudown.gif height="25"><span>经济管理</span></a></td></tr><tr><td id="submenu20" style="display:none">d id="imgmenu5" class="menu_title" onMouseOver="this.className='menu_title2';" onClick="showsubmenu(5)" onMouseOut="this.className='menu_title';" style="cursor:hand" </tr><tr></tr></table></div><script>function aa(Dir){tt.doScroll(Dir);Timer=setTimeout('aa("'+Dir+'")',100)}function StopScroll(){if(Timer!=null)clearTimeout(Timer)}function initIt(){divColl=document.all.tags("DIV");for(i=0; i<divColl.length; i++) {whichEl=divColl(i);if(whichEl.className=="child")whichEl.style.display="none";}}function expands(el) {whichEl1=eval(el+"Child");if (whichEl1.style.display=="none"){initIt();whichEl1.style.display="block";}else{whichEl1.style.display="none";}}function loadThreadFollow(){if (tree==0){document.frames["hiddenframe"].location.replace("LeftTree.asp");eval("submenu" + sid + ".style.display=\"\";");imgmenu.background="images/menuup.gif";}else{eval("submenu" + sid + ".style.display=\"none\";");imgmenu.background="images/menudown.gif";function loadingmenu(id){var loadmenu =eval("menu" + id);if (loadmenu.innerText=="Loading..."){document.frames["hiddenframe"].location.replace("LeftTree.asp?menu=menu&id="+id+""); }}top.document.title="";</script></BODY></HTML>留言代码版模块代码:<%@ page contentType="text/html;charset=gb2312" %><%@ page import="java.sql.*,bean.book.*"%><jsp:useBean id="db" class="bean.ConnectDB" scope="page"/><%Statement stmt = db.getStatement();String sql = "select * from liuyan";try{ResultSet rs=stmt.executeQuery(sql); int intPageSize; //一页显示的记录数int intRowCount; //记录总数int intPageCount; //总页数int intPage; //待显示页码String strPage;<dt><div align="left"><%= rs.getString("username")%> <span class="STYLE4">在</span> <%= rs.getString("times")%> <span class="STYLE4">发表关于该网站的评论</span>:</div> </dt><br /><dd><%= rs.getString("context")%></dd></dl><hr><div align="right"><%if(intPage<2){ %>catch(Exception e){out.println(e.getMessage());%><div id="postBox"><form name="theForm" method="post" action="ly.do"><div align="right"><table border="0" width="100%"><tr><td colspan="2"><div align="left" class="STYLE4">在此填写提交你对网站的新评论</div></td></tr><tr><td width="60" height="40"><div align="right">用户:</div></td><td width="640" height="40"><div align="left"><% users u = (users)session.getAttribute("us");if(us==null){%><input type="text" name="username" value="游客" readonly="" /> <%}else{%><inputtype="text"name="username"value="<%=u.getUserName()%>" readonly=""/><%}%></div></td></tr><tr><td width="60"><div align="right">内容:</div></td><td width="640"><div align="left"><textarea rows="10" cols="45" name="context"></textarea> <%int num = 0;Statement st = db.getStatement();String sql1 = "select * from liuyan";try{ResultSet rr=st.executeQuery(sql1);st();num = rr.getRow();}catch(Exception e){}%><br><input type="hidden" name="id" value="<%=num+1%>" /><input type="submit" value="发表" /> <input type="reset" value="重写" /> </div></td></tr></table></div></form></div>。