目录

 

 

Java项目实训:模拟网上超市购物结算功能 

一、        实训目的

使用Java语言编写一个模拟网上超市购物结算功能的程序,要求程序运行后有一个图形用户界面,可供用户输入购买的各种商品相关信息,最后给出用户的购物清单及价格,并且用户可以根据需要查询自己购买的第几项商品的详细信息。

要求学生按照个体软件过程的规范要求,结合该程序的实际开发过程,来深入理解并运用个体软件过程的基本概念、方法与过程。

 

二、      实训要求

1.  编写程序要严格按照Java编程规范进行代码编写。

2.  必须按照个体软件的过程,真实地采集数据、填写相关的表格、编写有关的文档。

3.  按照老师的要求,每个人必须独立完成。

4.  按照实训的时间安排进行实训,实训结束后提交有关的表格与文档。 

三、      实训环境:

JDK1.3.1及以上版本  

四、       实训安排 

一.准备阶段:实训前准备以下空表格:

1、    项目计划总结表、

2、    代码复查检查表、

3、    时间记录日志、

4、    缺陷记录日志、

5、    程序规模估计表等; 

二.计划、设计阶段

1.        分析实训题目要求,获取对该程序功能的描述,完成需求文档;

2.        做计划, 1)估计新程序的规模,填写程序规模估计表;

             2)填写项目计划总结表的计划数据部分;

             3)将计划阶段所花费的时间记入时间记录日志;

3.        做设计, 1)对程序进行设计,用流程图或伪码表示法完成设计文档; 

             2)将设计阶段所花费的时间记入时间记录日志。

需求分析:

1.用户可以添加购买一种商品,添加的信息包括商品名称、数量和单价

2.用户可以删除已购买的一种商品

3.用户可以查询已购买的一种商品的详细信息,查询时要指明查询的商品的记录号是多少(商品记录号是按照商品购买次序编的),还可以指定查询第一个或最后一个购买的商品信息。

4.用户可以删除所有已添加到购物车的商品

5.用户可以打印要购买的商品的清单

6.用户可以清空显示信息的窗口

7.用户可以要求结帐,系统会打印出用户购物清单,并给出总价。

 

做计划:

假设我们已经有了一些程序规模的统计数据,根据以前的数据来对本程序进行规模估计,填写规模估计表,如下:

      

               学生Y的程序规模估计

学生  学生Y                                    日期     10/7/96                

教员   老师Z                                    课程      CLI               

程序

代码行

以前的功能

估计的功能

最小

平均

最大

Loops

 

 

 

 

 

 

4

           

5

           

 

           

Case

           

2

           

3

           

 

           

Data

           

6

           

 

           

Calc.

           

1

           

 

 

 

       

估计

 

 

       

 

 

填写项目计划总结表的计划数据部分:

PSP项目计划总结表

 

学生         学生Y                      日期           10/18/05          

程序                 001                   程序号#       001                

教师         教师Z                     程序设计语言       java            

 

总结                   计划                    实际                   累计

  Minutes/LOC                                                                  

  LOC/Hour                                                                    

  Defects/KLOC                                                                 

  过程效益                                                                     

  A/FR                                                                         

程序规模(LOC

  新开发与更改的                                                             

  最大规模                            

  最小规模                               

开发阶段时间/min       计划            实际           累计           累计百分比

  计划                                                                       

设计                                                                       

  编码                                                                      

  代码复查                                                                   

  编译                                                                        

  测试                                                                       

  后置处理                                                                   

总计                                                                      

  最大时间                                 

  最小时间                     

引入的缺陷      计划         实际         累计        累计百分比     Def/Hour

  计划                                                                         

  设计                                                                        

  编码                                                                        

  代码复查                                                                     

  编译                                                                        

  测试                                                                         

总计                                                                       

排除的缺陷      计划         实际         累计        累计百分比     Def/Hour

  计划                                                                         

  设计                                                                         

  编码                                                                         

  代码复查                                                                   

  编译                                                                        

  测试                                                                      

总计                                                                      


 

程序设计:

public class shop extends Applet implements ActionListener{

  Vector vect=new Vector();//定义存储商品的向量对象

  。。。。。。//定义所有界面上出现的组件对象 

  public void init(){ 

初始化所有的组件对象

把组件对象添加到容器中

为按钮组件添加消息监听者 

  }  

  public void actionPerformed(ActionEvent e){ 

    判断事件源是哪个按钮,根据按钮的功能作出相应的处理 

  }

  class list{

    定义商品类信息,包括商品名称,数量和单价

  }

 

时间记录日志如下:

 

时间记录日志

学生

   学生Y      

日期

   10/19/05        

教员

   教师Z      

课程

   Java           

开始时间

结束时间

中断时间

净时间

活 动

备  注

C

U

                 
                 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三.编码阶段

         1)根据设计文档,编码实现程序;

         2)将编码阶段所花费的时间记入时间记录日志;

编码指导:

1.使用java系统awt包中的容器和组件编写一个图形用户界面如下图所示:

 

提示:

该程序是一个applet程序,需要嵌入网页中运行。

该用户图形界面的容器是applet,上面摆放了若干个组件,包括Label, TextField, Button, TextArea等。

按照界面上的内容分别生成组件对象,然后把组件添加到容器上。代码如下所示:

 

    label0=new Label("品名");

t0=new TextField(10);

area=new TextArea(10,50);

btn1=new Button("添加");

……

add(label0);

add(t0);

add(area);

add(btn1);

……

 

2.定义一个类,用来表示用户购买的商品,存储商品的名称、数量和单价。

还要定义一个向量类Vector的对象,用来存储用户购买的所有商品对象的列表。

提示:

Vector类相当于一个可变长度的数组,可以用来存储若干个对象,它提供了一些方法,可以随时添加和删除对象。

 

3.为程序添加消息处理机制,没有消息处理的程序相当于聋子和哑巴,只有添加了消息处理,程序才能与用户进行交互。本程序中的事件主要是Action类的事件。

提示:处理Action类的事件的代码如下:

Button btn1=new Button("添加");

btn1.addActionListener(this);

……

public void actionPerformed(ActionEvent e){

……

四.代码复查、 

1.代码复查阶段

1)按照代码复查检查表,复查所有的程序代码; 

代码复查检查表如下:

Java代码复查指南和检查表

程序名和程序号#

目的

指导你进行有效的代码复查

#

#

#

#

累计

累计%

一般性说明 在完成每个复查步骤之后,将发现的某个类型的缺陷的个数记录在右面的栏目中。如果该步骤没有发现缺陷,就在右面的栏目中打个表示检查无误的交叉符号()。在开始复查下一个程序单元之前,要按照检查表完成对程序,,对象或方法的检查

完整性

验证设计的所有功能都已经编码

 

 

 

 

 

 

Import

验证import语句是完全的

 

 

 

 

 

 

初始化

检查变量和参数的初始化:

l         在程序的开始;

l         在每个循环的开始;

l         在方法的入口

 

 

 

 

 

 

调用

检查方法调用的格式:

l         参数;

 

 

 

 

 

 

名字

检查名字的拼写和使用:

l         是否前后一致?

l         是否在说明的作用域之内?

l         结构和类中变量的引用是否使用了’.’

 

 

 

 

 

 

对象

检查所有的对象:

l         必须经过初始化

 

 

 

 

 

 

输出格式

检查输出格式:

l         换行是否合适?

l         间隔是否合适?

 

 

 

 

 

 

{ }

保证检查{ }是适当的而且是成对的

 

 

 

 

 

 

逻辑操作符

验证= = =|| 等逻辑操作符的使用是合适的。检查每个逻辑函数的(  )是合适的

 

 

 

 

 

 

逐行检查

检查每一行代码:

l         指令的语法是否正确?

l         标点是否正确符号是否正确?

 

 

 

 

 

 

标准

保证所有代码符合编码标准

 

 

 

 

 

 

文件的打开与关闭

验证所有的文件:

l         是合适地声明的;

l         是合适地打开的;

l         是合适地关闭的

 

 

 

 

 

 

全面检查

对整个程序进行全面的检查以发现系统问题和非期望的问题

 

 

 

 

 

 

总计

 

 

 

 

 

 

 

 

         2)修复缺陷,并将每一个所发现的缺陷记入缺陷记录日志;

 

缺陷记录日志如下:

 

缺陷记录日志

学生

    学生Y    

日期

  10/19           

教员

    教师Z    

程序号

  001          

编号

类型

引入阶段

排除阶段

修复时间

相关缺陷

 

             

 

   

 

             

 

   

 

             

 

   

 

             

 

 

 

 

          3)将代码复查阶段所花费的时间记入时间记录日志;

 

五.编译、测试阶段

    1、编译阶段

         1)编译程序;

         2)修复缺陷,并将每一个所发现的缺陷记入缺陷记录日志;

         3)将编译阶段所花费的时间记入时间记录日志;

    2.测试阶段

         1)测试程序;

         2)修复缺陷,并将每一个所发现的缺陷记入缺陷记录日志;

         3)将测试阶段所花费的时间记入时间记录日志;

六.后置处理阶段

         1)将实际数据登入项目计划总结表;

         2)总结缺陷数据,更新代码复查检查表;

         3)将后置处理阶段所花费的时间记入时间记录日志;

         4)完成PSP项目计划总结表

五、       实训结果

实训结束后请提交以下文档或表格:

     1)设计文档

2)源程序

3)已经填写完成的代码复查检查表

4)已经填写完成的时间记录日志

5)已经填写完成的缺陷记录日志

6)已经填写完成的项目计划总结表

 

六、注意事项:

n      及时记录时间与缺陷数据!

n      各个表格、文档的数据之间保持一致性!

 

 

实训:图书管理系统的开发

实训目的:

综合运用Java编程基础课程和Access数据库应用与开发课程的内容完成一个简单的图书管理系统,并且在整个项目的开发过程中,严格按照个体软件过程的思想方法控制项目开发的时间进度和软件质量,通过这个项目的开发,帮助学生掌握个体软件过程的方法,消化课程内容并培养学生的动手能力和解决实际问题的能力。在开发过程中严格遵循个体软件过程的原则,提高软件质量和开发效率。 

实训要求:

完成一个简单的“系部图书管理系统”,要求实现图书的入库、借出和归返功能。用Java实现用户界面和业务逻辑,数据存储在access数据库中。

1.  编写程序要严格按照Java编程规范进行代码编写。

2.  必须按照个体软件的过程,真实地采集数据、填写相关的表格、编写有关的文档。

3.  每个人必须独立完成。

4.  按照实训的时间安排进行,实训结束后提交有关的表格与文档。 

实训环境:

JDK1.3.1及以上版本

Microsoft Access 

实训步骤:

一、           准备阶段

实训前准备以下空表格:

1、   项目计划总结表、

2、   代码复查检查表、

3、   时间记录日志、

4、   缺陷记录日志、

5、  程序规模估计表等; 

二、           计划和设计阶段(包括数据库的准备)

1.        分析实训题目要求,获取对该程序功能的描述,完成需求文档;

2.        做计划, 1)估计新程序的规模,填写程序规模估计表;

             2)填写项目计划总结表的计划数据部分;

             3)将计划阶段所花费的时间记入时间记录日志;

3.        做设计, 1)对程序进行设计,用流程图或伪码表示法完成设计文档; 

             2)将设计阶段所花费的时间记入时间记录日志。

需求分析:

1,输入书名,点击详细信息查询按钮,下面会显示该书的详细信息

2,输入新书的全部信息,点击添加记录按钮,新书信息会被插入到数据库

3,输入书名,点击删除记录按钮,该书将被从数据库中删除。

4,输入书名,查询详细信息,如果该书没有被借出,可以输入借阅人姓名,然后点击借阅按钮,系统会把借阅信息写入数据库。

5,退出系统 

做计划:

假设我们已经有了一些程序规模的统计数据,根据以前的数据来对本程序进行规模估计,填写规模估计表,如下:

      

               学生Y的程序规模估计

学生  学生Y                            日期     11/17/96            

教员   老师Z                           课程      Java               

程序

代码行

以前的功能

估计的功能

最小

平均

最大

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

估计

 

 

 

 

 

 

 

 

填写项目计划总结表的计划数据部分:

PSP项目计划总结表

学生         学生Y                      日期           10/18/05          

程序                 001                   程序号#       001                

教师         教师Z                     程序设计语言       java            

 

总结                   计划                    实际                   累计

  Minutes/LOC                                                                  

  LOC/Hour                                                                    

  Defects/KLOC                                                                 

  过程效益                                                                     

  A/FR                                                                         

程序规模(LOC

  新开发与更改的                                                             

  最大规模                            

  最小规模                               

开发阶段时间/min       计划            实际           累计           累计百分比

  计划                                                                       

设计                                                                       

  编码                                                                      

  代码复查                                                                   

  编译                                                                        

  测试                                                                       

  后置处理                                                                   

总计                                                                      

  最大时间                                 

  最小时间                     

引入的缺陷      计划         实际         累计        累计百分比     Def/Hour

  计划                                                                         

  设计                                                                        

  编码                                                                        

  代码复查                                                                     

  编译                                                                        

  测试                                                                         

总计                                                                       

排除的缺陷      计划         实际         累计        累计百分比     Def/Hour

  计划                                                                         

  设计                                                                         

  编码                                                                         

  代码复查                                                                   

  编译                                                                        

  测试                                                                      

总计                                                                      

程序设计:

*        把界面划分为三个子界面,分别是:图书管理界面,借阅/归还界面和读者管理界面。

*        三个界面都显示在一个Frame框架中,按照卡片布局方式布局。

*        三个界面的切换是通过响应框架中的菜单项来实现的

*        当用户点击“借阅管理”->“借书”,或者,点击“借阅管理”->“还书”,出现借阅管理界面

*        当点击“读者管理”->“借阅人管理”时,出现读者管理界面

*        在框架上添加卡片布局管理方式,然后生成三个panelp1p2p3p1上放第一个界面上的所有组件;p2上放第二个界面上的所有组件;p3上放第三个界面上的所有组件;

*        为菜单项添加消息处理方法,显示相应的界面。

*        为各个按钮分别添加消息处理机制

*        java程序与数据库的连接

*        完善系统,美化界面,为每个按钮添加点击后返回给用户的提示消息框

 

时间记录日志如下:

 

时间记录日志

学生

   学生Y      

日期

   11/19/05        

教员

   教师Z      

课程

   Java           

开始时间

结束时间

中断时间

净时间

活 动

备  注

C

U

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

提示:

1、  建立数据库

Abook表存储库中图书的基本信息

    包括书名、作者、出版社、价格、是否被借阅、借阅人和借阅时间等信息,开发人员可以根据自己的需要添加字段。

Bperson表存储借书人的基本信息

存储借阅人的姓名、工卡号、部门等信息,开发人员可以根据自己的需要添加字段。

 

2、创建ODBC数据源

    连接数据库的常用方法是先建立一个ODBCOpen DataBase Connectivity)数据源。在这之前,我们已经建立了一个book.mdb数据库。打开控制面板,打开“管理工具”,双击“ODBC数据源”,根据提示信息,创建ODBC数据源。

 

三、           编码阶段

1)根据设计文档,编码实现程序;

2)将编码阶段所花费的时间记入时间记录日志;

 

编程指导:

1、程序界面设计如下:

*        把界面划分为三个子界面,分别是:图书管理界面,借阅/归还界面和读者管理界面。

*        三个界面都显示在一个Frame框架中,按照卡片布局方式布局。

*        三个界面的切换是通过响应框架中的菜单项来实现的

*        如下图所示

 

 

 

*        当用户点击“借阅管理”->“借书”,或者,点击“借阅管理”->“还书”,出现的界面如下:

 

 

 

*        当点击“读者管理”->“借阅人管理”时,界面变为如下图:

 

2、实现方法:

*        在框架上添加卡片布局管理方式,然后生成三个panelp1p2p3p1上放第一个界面上的所有组件;p2上放第二个界面上的所有组件;p3上放第三个界面上的所有组件;

*        为菜单项添加消息处理方法,显示相应的界面。

3、代码提示:

*        为五个按钮分别添加消息处理机制

例如:删除按钮binsert的消息处理

binsert.addActionListener(this);

…………………………………

public void actionPerformed(ActionEvent e){

if(e.getSource()==binsert){

               ………………………………

        }

}

*        java程序与数据库的连接

    前面我们已经成功地创建了ODBC数据源,现在用代码实现java程序与数据库的连接。

 java程序连接数据库的代码如下:

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//建立JDBC-ODBC

}catch(ClassNotFoundException e){}

 

try{

      //与数据库book建立连接

Connection con=DriverManager.getConnection("jdbc:odbc:book");

//生成Statement对象,它可以执行sql语句。

Statement stmt=con.createStatement();

//组成sql语句字符串

String sql="select  publish,athor,price,number,class,lender from book1 where bname='"+name+"'";

// ResultSet对象可以获得sql语句的执行结果

ResultSet rs=stmt.executeQuery(sql);

rs.next();

//获取出版社名

String ph=rs.getString("publish");

…………………………………………………….

}catch(Exception e){}

 

注意:如果不是执行查询的sql语句,就没有返回的结果集ResultSet,只需使用语句stmt.executeUpdate(sql); 实现数据库的操作。

 

*        完善系统,美化界面

    为每个按钮添加点击后返回给用户的提示消息框,如下图:

 

提示:

import javax.swing.*;

 

JOptionPane.showMessageDialog(null, "信息已存入数据库!", "消息框", JOptionPane.ERROR_MESSAGE); 

四、           代码复查阶段

1.代码复查阶段

1)按照代码复查检查表,复查所有的程序代码;

 

代码复查检查表如下:

Java代码复查指南和检查表

程序名和程序号#

目的

指导你进行有效的代码复查

#

#

#

#

累计

累计%

一般性说明在完成每个复查步骤之后,将发现的某个类型的缺陷的个数记录在右面的栏目中。如果该步骤没有发现缺陷,就在右面的栏目中打个表示检查无误的交叉符号()。在开始复查下一个程序单元之前,要按照检查表完成对程序,,对象或方法的检查

完整性

验证设计的所有功能都已经编码

 

 

 

 

 

 

Import

验证import语句是完全的

 

 

 

 

 

 

初始化

检查变量和参数的初始化:

l        在程序的开始;

l        在每个循环的开始;

l        在方法的入口

 

 

 

 

 

 

调用

检查方法调用的格式:

l        参数;

 

 

 

 

 

 

名字

检查名字的拼写和使用:

l        是否前后一致?

l        是否在说明的作用域之内?

l        结构和类中变量的引用是否使用了’.’

 

 

 

 

 

 

对象

检查所有的对象:

l        必须经过初始化

 

 

 

 

 

 

输出格式

检查输出格式:

l        换行是否合适?

l        间隔是否合适?

 

 

 

 

 

 

{ }

保证检查{ }是适当的而且是成对的

 

 

 

 

 

 

逻辑操作符

验证= = =|| 等逻辑操作符的使用是合适的。检查每个逻辑函数的(  )是合适的

 

 

 

 

 

 

逐行检查

检查每一行代码:

l        指令的语法是否正确?

l        标点是否正确符号是否正确?

 

 

 

 

 

 

标准

保证所有代码符合编码标准

 

 

 

 

 

 

文件的打开与关闭

验证所有的文件:

l        是合适地声明的;

l        是合适地打开的;

l        是合适地关闭的

 

 

 

 

 

 

全面检查

对整个程序进行全面的检查以发现系统问题和非期望的问题

 

 

 

 

 

 

总计

 

 

 

 

 

 

 

 

         2)修复缺陷,并将每一个所发现的缺陷记入缺陷记录日志;

缺陷记录日志见后图。 

         3)将代码复查阶段所花费的时间记入时间记录日志; 

五、           编译、测试程序阶段

1、编译阶段

1)编译程序;

2)修复缺陷,并将每一个所发现的缺陷记入缺陷记录日志;

3)将编译阶段所花费的时间记入时间记录日志;

测试程序:

1)测试程序;

2)修复缺陷,并将每一个所发现的缺陷记入缺陷记录日志;

3)将测试阶段所花费的时间记入时间记录日志;

 

缺陷记录日志

学生

    学生Y    

日期

  10/19           

教员

    教师Z    

程序号

  001          

编号

类型

引入阶段

排除阶段

修复时间

相关缺陷

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

六、后置处理:

1)将实际数据登入项目计划总结表;

2)总结缺陷数据,更新代码复查检查表;

3)将后置处理阶段所花费的时间记入时间记录日志;