java报告.docx
- 文档编号:29639917
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:17
- 大小:164.17KB
java报告.docx
《java报告.docx》由会员分享,可在线阅读,更多相关《java报告.docx(17页珍藏版)》请在冰豆网上搜索。
java报告
高级网络程序设计
课程设计报告
班级:
学号:
姓名:
成绩:
2015年6月16日
一、需求分析
基于C/S的销售管理系统设计
某公司有四个销售员(编号:
1-4),负责销售五种产品(编号:
1-5)。
每个销售员都将当天出售的每种产品信息提交到服务器。
信息内容:
1)销售员的代号,2)产品的代号,3)这种产品的当天的销售额。
每位销售员每天提交一次信息。
提供以下功能:
1、使用图形用户界面,系统以菜单方式工作。
2、涉及套接字和多线程。
3、信息录入功能(信息用文件或数据库保存)--输入
4、根据上个月的所有销售数据,输出销售情况
1)计算每个人每种产品的销售额。
2)按销售额对销售员进行排序,输出排序结果(销售员代号)
3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)
PS:
在程序中未能使用套接字和多线程将程序加入cs网络技术。
二、总体设计
1、程序框图
下图展示了系统用户使用本系统的基本流程。
基本业务流程:
运行系统后,不同的用户角色登陆后进入不同的界面。
库存管理包括库存查询,材料入库管理,损耗管理,退货管理4大模块。
销售管理包括销售,查看销售记录2大模块。
用户在登陆到对应的界后分别进行各自的操作来使整个系统任务完成。
2、总体分析
为了提高销售员工作效率,便于公司对销售员的销售业务统计,设计销售管理系统,设计要通过java语言、数据库、sql语句、基于c/s设计。
系统要实现销售员销售信息的输入、输出销售员销售信息、按销售额对销售员进行排序、统计每种产品的总销售额和按总销售额进行排序等功能。
这些功能需通过图形界面现实,用户在图形界面上对数据直接进行操作,存入数据库或者文件中保存。
3、基本思路
3.1、主函数main:
publicmain()
打印出菜单功能选项,包括销售信息输入,每个人每种产品的销售量,销售额排行,每人销售统计,存储数据库和退出功能。
3.2、调用函数类:
publicadd(),publicdisplay(),publicpaixu1(),publicpaixu2(),publicexit().
主菜单中依次显示添加销售信息、查询销售信息、销售员排序、商品销量排序、退出系统等功能,每个功能分块执行,进行添加、查询、排序等操作,直到退出系统。
3.3、服务器类:
server().
3.4、客户端类:
client().
三、详细设计
1、数据库连接设计
packagehy;
importjava.sql.*;
/*连接数据库的类/
publicclassDatabase{
privateStatementstmt=null;
ResultSetrs=null;
privateConnectionconn=null;
Stringsql;
Stringstrurl="jdbc:
odbc:
scmanage";
publicDatabase(){
}
/*打开数据库连接*/
publicvoidOpenConn()throwsException{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:
odbc:
Database21");
}
catch(Exceptione){
System.err.println("OpenConn:
"+e.getMessage());
}
}
链接“Database21”的数据库。
2、主函数模块
publicclassMainextendsJFrameimplementsActionListener{
privatestaticfinallongserialVersionUID=1L;
JPanelp;
JButtonexit,search,add,paixu1,paixu2;
publicMain(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
setTitle("销售管理信息");
p=newJPanel();
p.setBounds(0,0,560,400);
JLabela=newJLabel();
p.add(a);
a.setBounds(0,0,560,400);
search=newJButton("查询销售信息");
search.setBounds(170,80,115,22);
add=newJButton("添加销售信息");
add.setBounds(170,50,115,22);
paixu1=newJButton("销售员排序");
paixu1.setBounds(170,110,115,22);
paixu2=newJButton("商品排序");
paixu2.setBounds(170,140,115,22);
exit=newJButton("退出系统");
exit.setBounds(170,170,115,22);
主类用于调用其余各子类,包括:
add、display、paixu1、paixu2、exit;
方法调用关系如下:
事件监听类Voidactionperformed()
通过事件监听器、if语句等来选择各项功能
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==exit){
intn=JOptionPane.showConfirmDialog(null,"确定退出?
","退出是否",JOptionPane.YES_NO_OPTION);
if(n==JOptionPane.YES_OPTION)
System.exit(0);
}
if(e.getSource()==search)
{
newDisplay();
}
if(e.getSource()==add)
{
newadd();
}if(e.getSource()==paixu1)
{
newpaixu1();
}if(e.getSource()==paixu2)
{
newpaixu2();
}
}
3、数据库数据类型
数据名称
数据关联
数据类型
数据格式
内容限制
销售员代号
Name、jl1、
String字符串类型
%d
大于0小于5
产品代号
Product、jl2、
String字符串类型
%d
大于0小于6
产品数量
Num、jl3、
String字符串类型
%d
不限数量
数据库索引设置为:
(有重复)
4、添加销售信息类
publicclassaddextendsJFrameimplementsActionListener{
JLabeljl1=newJLabel("人员编号:
");
JLabeljl2=newJLabel("商品编号:
");
JLabeljl3=newJLabel("数量:
");
JTextFieldjt1=newJTextField();
JTextFieldjt2=newJTextField();
JTextFieldjt3=newJTextField();
JButtonjb1=newJButton("添加");
JButtonjb2=newJButton("取消");
publicadd(){
}
此部分设计添加窗口界面设置了两个按钮,三个标签,三个文本框。
JButtonjb1、JButtonjb2分别控制页面的进退
JTextFieldjt1、JTextFieldjt2、JTextFieldjt3分别输入人员编号,商品编号,数量等信息
JLabeljl1、JLabeljl2、JLabeljl3分别标识输入数据类型
5、添加信息类与数据库的链接
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jb1)
{
Stringstr1=jt1.getText();
Stringstr2=jt2.getText();
Stringstr3=jt3.getText();
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundExceptionce)
{
JOptionPane.showMessageDialog(add.this,ce.getMessage());
}
try
{
Connectioncon=DriverManager.getConnection("jdbc:
odbc:
Database21");
Statementstmt=con.createStatement();
inta=stmt.executeUpdate("insertintoDatabase21values('"+str1+"','"+str2+"','"+str3+"')");
if(a==1)
{
JOptionPane.showMessageDialog(add.this,"已成功添加");
}
else
{
JOptionPane.showMessageDialog(add.this,"添加失败");
}
stmt.close();
}
catch(SQLExceptionse)
{
JOptionPane.showMessageDialog(add.this,se.getMessage());
}
}
}
publicstaticvoidmain(String[]args){
newadd();
}
}
使用gettext()将三个文本框的数据get,用sql语句insertinto把数据添加到数据库
6、显示销售信息类
显示类publicDisplay()
链接数据库表格将数据库数据输出
publicDisplay()
{
//Form的标题
super("输入SQL语句,按提交按钮查看结果。
");
//url中指定ODBC中设置的DSN名称
Stringurl="jdbc:
odbc:
Database21";
try{////////////代码详情见附////
建立事件监听器actionlistener()
调用gettable()函数输出数据
newActionListener(){
publicvoidactionPerformed(ActionEvente)
{
getTable();
}
}
);
定义gettable()函数
privatevoidgetTable()
{
try{
Stringquery=inputQuery.getText();
statement=connection.createStatement();
resultSet=statement.executeQuery(query);
//在表格中显示查询结果
displayResultSet(resultSet);
}
catch(SQLExceptionsqlex){
sqlex.printStackTrace();
}
}
定义显示结果函数displayResultSet()
privatevoiddisplayResultSet(ResultSetrs)
throwsSQLException
{
//定位到达第一条记录
booleanmoreRecords=rs.next();
//如果没有记录,则提示一条消息
if(!
moreRecords){
////具体代码见附件
显示窗口关闭函数windowClosing()
publicvoidwindowClosing(WindowEvente)
{app.shutDown();
System.exit(0);
}
7、排序功能模块paixu1()
publicclasspaixu1extendsJFrameimplementsActionListener{
JLabelA1=newJLabel("按销售量对销售员排序:
");代码省略见附件
8、退出功能类
通过时间监听器监听到exit按钮所做出的退出操作
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==exit){
intn=JOptionPane.showConfirmDialog(null,"确定退出?
","退出是否",JOptionPane.YES_NO_OPTION);
if(n==JOptionPane.YES_OPTION)
System.exit(0);
}
四、程序运行结果测试与分析
1、主界面设计
2、添加销售信息
3、输出所存储的信息
4、销售人员排序(已存入数据)
5、商品销售量排序(已存入数据)
6、退出系统窗口
7、数据库数据
五、结论与心得
编写过程中遇到的问题:
1、最开始在连接数据库的时候,access文件的保存不当,后经查阅知道需要保存至03版以前的文件
2、最大的问题是在基于cs的网络部分没能做出来,这次时间有限,但是会在以后继续学习这方面的问题
经过这次课程设计,使我明白了java课程设计的基本步骤和大概要点,我们刚学完java课程需要通过课设来夯实自己的基本功和理论知识,通过实践操作来提高自己的java编程能力,加深对知识的理解与消化。
另外老师也说过课程设计课也是一次小毕业设计,只有用心做好每一次的课程设计,我们才会为将来大四毕业设计打下坚实的基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 报告