软件开发案例分析一_第1页
软件开发案例分析一_第2页
软件开发案例分析一_第3页
软件开发案例分析一_第4页
软件开发案例分析一_第5页
已阅读5页,还剩109页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

的目的是为了开发项课程目标提 新知识、新技术能软件的生命周 课程安排(3216+7-7-7-7-课 案例代码:Javaanli27661-《JAVASSH框SQLServer/*30项目分析*110缺勤2次及以上,取消考试资格 计 数据库:SQLSwing应(服务)逻(服务)逻数数 用户往往不能准确、全面地提出系统需设计开 可按信息系统建设的思路来引导用必要时可先按照用户最初的描述,建立系统原设计开 以往类似系统经验(文档3.3.管理员信订单(记录)信入库(记录)信出库(记录)信部门信员工信息(基本信息职务信息

供货商信销售商信商品信仓库信需求分析——实体联系 n mm需求分析——实体联系mm1111货 管货 管供货商销售商货品管仓库“已经入库”状态、等信的管理员信订单(记录)信入库(记录)信出库(记录)信部门信员工信息(基本信息职务信息

供货商信销售商信商品信实体联系图—— n mmm11m1111表管理员信息表列类允许描不能为主 用户 基 ——供货商信息表列 类 允许 描 不能为 主 不能为 供货商名 地 联系 传 电子邮 备基 ——销售商信息表列 类 允许 描 联系 联系地 传 电子邮 备基 ——货 信息表列 类 允许 描 不能为 主 货品名 货品描 单 进货 零售 会员基 ——仓库管理信息表列类允许描不能为主管理描采购订货信息表列类允许描不能为金仓库入库信息表列 类 允许 描 不能为 主 订单 仓 货品名 入库时 重 备仓库出库信息表列类允许描不能为主仓货品名出库时重备列类允许描列类允许描不能为主职 信息表列 类允许描 不能为主外键,与员工基信息表主键对 不能为传varchar(50)电子邮 部门信息表列类允许描不能为主部门名(部门)描Swing简介— 百Swing是一个用于开发Java应用程序用户界面的开发工具包 WindowToolkit):提供了一套与本地图形界面进行Swing开发只用很少的代码就可以利用Swing丰富、灵活的功SwingJFrame(框架):表示主程序窗 JApplet(小程序):在浏览器内显示一个小程序界的编辑框多登录界登录界/程序 Enter.javapublicstaticvoidmain(String[]{EventQueue.invokeLater(new{publicvoid{{

设置外观风UIManager.setLookAndFeel(newSwingUtilities.invokeLater(new{publicvoidrun()Entermostly=new catch(Exception{ });。。public{setLocationRelativeTo(null);//窗体居setTitle("登录窗体setBounds(100,100,559,设置顶级容器JFrame属contentPane=getLoginPanel();contentPane.setBorder(newEmptyBorder(5,5,5,5));创建}返回返回创建Enter.java——登录按 登录按钮登录按钮器用户名用户名 检NY创建UserBean对象,创建UserBean对象,main( 该管理Y(功能主界41321创建时钟面板,并

2创建日历面板,并2创建日历面板,并33调用getContentPanel,4.调用getModuleButtonGroup,4.调用getModuleButtonGroup,主功能界 2323 时 日 功 菜 事件响应— tree.addTreeSelectionListener(newTreeSelectionListener()publicvoidvalueChanged(TreeSelectionEvente)if(!tree.isSelectionEmpty())TreePathselectionPaths=Objectpath DefaultMutableTreeNodenode=(DefaultMutableTreeNode)StringuserObject=(String)if(userObject.equals("供货商管理 elseif(userObject.equals("销售商管理 19.片主线 子线片paint(drawClock(drawClock(。。public{//设置为不透backgroundnew //加载背景时inticonWidth=background.getIconWidth();centerX=iconWidth/inticonHeight=background.getIconHeight();centerY=iconHeight/2;setPreferredSize(newDimension(532,286));newThread(this).start();//设置时钟面板大//启动子线}。。publicvoidpaint(Graphics{Graphics2Dg2=(Graphics2D)Compositecomposite当前的posite.SrcOver.derive(0.6f));//设置新的Calendarcalendar=Calendar.getInstance();drawClock(g2,calendar);获取当前时//调用drawClock函数,绘制时//恢复原有的Compositeg2.drawImage(background.getImage(),0,0,this); //画背景 //释放资源}日历显示区日历显示区getJPanel1:剩余行为日期调用remark()——更改年、月,并在日历栏显示该月份日日历栏选择标准日 日历栏日历栏

。。jButton1.addActionListener(new{{calendar.add(Calendar.MONTH,-添器器响应函//改变日历信息(月份减将日期改变事件发送器(如果有JCheckBoxsourceJCheckBox //获取该事件发生的源控//将该控件设为没有选中(为了美观//调用父类所实现的函数功}按 日历栏 privatefinalclassDayClientListenerextends 器类定{publicvoidmousePressed(MouseEvent 接口实{JLabellabel(JLabel) //获取事件发生的源控if //如果这个控件上没有日期,什么都不做,直接返 //用红色边框标记当前日Stringtext=label.getText(); intdayNum //获取当前天的日 calendar.set(Calendar.DAY_OF_MONTH, //改变当前日历缓存对 //更 的日 //利用给 和背景标记所选日label.setBackground(new //将日期改变事件发送 器(如果有 六个功能控制按(六个功能控制按(特殊的显示效果为为每个按钮添加类钮、各功能按钮 控制按钮publicvoidmousePressed(MouseEvent{Objectsourcee.getSource获取事件isPressed=//判断事件源是左侧按钮还是右侧按钮,并执行相应操if(source=={scrollMoved(-}{}}左右控制按 器——控制滚动条位scrollMoved()函数 器——privateclassScrollButtonShowListenerextendsComponentAdapterimplements{privatestaticfinallongserialVersionUID= publicvoidcomponentResized(ComponentEvent{JScrollBarscrollBar 获取横向滚动intscrollWidth //获取范围限制参intpaneWidth=if(paneWidth //在容器大于包含内容的时候隐藏左右微调按{ if(paneWidth //在容器小于包含内容的时候显示左右微调按{ 六个功能按钮以“采购进货”按钮为progressButtonnew 创建按mand(“采购进货 //设置按钮事件名//设置按钮(未选中)时显示progressButton.setIcon(new //创建另一个图标(当该按钮被选中是显示这个图标ImageIconicon=new //设置当按钮翻转是显示这个图 //设置当按钮被选中是显示这个图progressButton.addActionListener(new //为按钮添 六个功能按钮 以“采购进货”按钮为if(e.getSource() //如果这个事件来自于“采购进货”按{ //清空功能区面板的所有内容(backPanel为功能区面板 //功能区面板添加新 (firstLabel和fristLabel.setBounds(133,38,123, //label_1显示的是:“你当前位置是 大小位置设 //firstLabel显示的是:“采购订货panel_1.setBounds(10,63,611, //设置panel_1子面板大StockPanelstockPanlnew //创建“采购进货”功能子面fristLabel.setText("采购订货 //添加自“采购进货”子面板到backPanel面板 刷新界13.功能主界4132 器

添加按 以“采购进货”按钮为insertButton.addActionListener(new //添 {publicvoidactionPerformed(ActionEvent //实 接口函{InserStockFrameframenew //创建新的添加面 显示新的面 修改按 以“采购进货”按钮为updateButton.addActionListener(new //添 {publicvoidactionPerformed(ActionEvent //实 接口函{introw //调用JTable控件方法,获取用户选中表格的行if(row //如果没选中任何行,那么输出提示信息,并返{JOptionPane.showMessageDialog(getParent(),"没有选择要修改的数据!","信息提示框 //否则,创建并显示新的面{UpdateStockFrameframe=newUpdateStockFrame();//创建修改信息窗 19.删除按 以“采购进货”按钮为deleteButton.addActionListener(newActionListener()//添 {publicvoidactionPerformed(ActionEvente)//实 接口函{introw=table.getSelectedRow();//调用JTable控件方法,获取用户选中表格的行if(row0)如果没选中任何行,那么输出提示信息,并返{JOptionPane.showMessageDialog(getParent(),"没有选择要删除的数据"信息提示框return;//退出程 Stringcolumn=dm.getValueAt(row,1).toString();//由JTable控件,获取表第一列(主键)的值(字符串形式 //将字符串形式的主键转换为整JOptionPane.showMessageDialog(getParent(),"数据删除成功!","信息提示框JOptionPane.INFORMATION_MESSAGE);//给出提示信 17.查询按 以“采购进货”按钮为findButton.addActionListener(new //添 {publicvoidactionPerformed(ActionEvent //实 接口函{ 将表格内容清Stringcondition= //获取用户选择的查询条件 StringconditionText //获取用户添加的查询条件 //{JOptionPane.showMessageDialog(getParent(),"请输入查询条件"信息提示框",JOptionPane.INFORMATION_MESSAGE);//给出提示信return;//退出程 if(condition.equals(“货品名称”)){… //按货品名称查if(condition.equals(“订单号 {… //按订单号查if(condition.equals(“交货日期”)){… //按交货日期查“采购进货”查询按 按“货品名称”查if(condition.equals("货品名称{Listlist=dao.selectStockBySName(conditionText);//调用相应的DAO对象的方法,实现按货品名称查询for(inti0;ilist.size(); //循环遍历查询结果,将其显示到JTable控件{Stockstock //获取查询记录集中第i条记录(对象Stringoid //获取该记录(对象)的订单号信intid //调用相应的DAO对象的方法,查询该订单号是否入if(id //如果该订单的货品在入库表中不存在(尚未入库{//将该记录添加到Jtable控件中,并显示为“待入库dm.addRow(newObject[]{“入库stock.getId(),stock.getsNamestock.getConsignmentDate(),stock.getBaleName(),stock.getMoney(), //如果指定订单号的货品名称在入库表中存在(已经入库{//将该记录添加到Jtable控件中,并显示为“已入库dm.addRow(newObject[]{"已经入库",stock.getId(),stock.getsName(),stock.getConsignmentDate(),stock.getBaleName(),stock.getMoney(), DefaultTableModeldm=new dm.setDataVector(newnewObject[]{“是否入库table=new表的内”,“客户”,“订单号”,“交货日期”,“商品名”,“金额”,“数量 //表//根据DefaultTableModel对象,创建JTable对 一组数据(记录创建 数操作JTable数stock.getConsignmentDate(),stock.getBaleName(),stock.getMoney(),每个数据库表定义自己的ModelModel/DefaultTableModel的子DefaultTableModel是TableModel的一个实现,它使用一getColumnName(intgetColumnName(int返回row和columnrow,intcolumn)设置column和row处单元格的对addRow(Object[]insertRow(introw,在模型中的row位置一行removeRow(int移除模型中row例:DepotModel(仓库表模型publicclassDeptModelextends 继承{Class[]typesnewClass[]java.lang.Object.class, //一条记录中每个元素的类 booleancanEditnewboolean[]false,false, //JTable中每条表项是否可编辑(不可public //构造函数,调用其父类的构造函数,设定表{super(newObject[][]{},newString[]{ ","部门名称 ","描述 publicClassgetColumnClass(int //返回表中每列数据的类型(第3行定义{return ,)//{return 18.无题int(列int(行int(列(Archive/数据表DAO查询/删除面DAO无InsertUpdate

Setter()/Getter(

列 类 允许 描 不能为 主 部 类无无…………例:Headship(职务信息publicclass{private Id属性(主键privateString 职务名称属publicintgetId getter:获取主return publicvoidsetId(intid) this.id= publicStringgetHeadshipName //getter:获取职务名return publicvoidsetHeadshipName(StringheadshipName) //setter:设置职务名this.headshipName= 17.利用JDBC实现数据库操类实现删、查、改创建PreparedStatement创建PreparedStatement类无无无(参数无无数无publicConnection{try=获取数据库连}catch(SQLExceptione)con=null;//如果数据库连接失败,打印失败信息,并将con对象置为null(空}returncon;//返回数据库连接对}public //构造函数——加载数据库驱动程{ //加载数据库驱动className= catch(ClassNotFoundException //如果加载失败,打印失败信{System.out.println("加载数据库驱动失败 11.查询所有例:利用数据库连接对象操作数据Useruser=new //创建JavaBean对象,用 查询结conn=connection.getCon();//利用GetConnection对象获取数据库连接对tryStringsqlselect*fromtb_userswhereuserNameandpassWord=?”;//定义SQL查询语PreparedStatementstatement=conn.prepareStatement(sql);//利用SQL语句,实例化PreparedStatement对statement.setString(1, 设置SQL语句参数用户statement.setString(2, ResultSetreststatement.executeQuery();//执行SQL语句,返回结果为ResultSet对while(rest.next()){ //将查询结果保存到User对象 保存记录的// 保存记录 catch(SQLExceptione) //如果查询失败,打印失败信 return /

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论