资源描述
一、课程设计目的
本课程设计的目的是为了让学生在学习《JAVA基础》课程的基础上,进一步深入巩固所学理论知识、使理论与实际相结合的重要实践环节。本课程设计通过完成一些具有一定难度的程序的编写、调试、运行工作,掌握面向过程程序设计的基本方法,从而提高学生分析问题、解决问题的能力。
课程设计是教学中很重要的一项实践环节,它可以帮助学生充分理解课堂教学中的内容,对提高学生的实践认识和实际动手能力都有很重要的实际意义。学生应在一周的时间内,按照课程设计的要求,结合所学的理论知识,查找相关资料,完成好本次课程设计,提高程序编写的能力,为将来的实际工作取得一定的经验。
二、课程设计题目及要求
1.所有题目都要求使用图形界面(Swing)。
2.编写全球通计费程序。
3. 要求:使用真实的全球通资费标准,模拟统计一个特定号码的一个月的实时话费。 能根据输入实现各种用户的话费的计算并显示月实时帐单。
三、程序设计与分析
1、在My SQL数据库中建立相应的表;
注:SQL语句
create database quan;
use quan;
create table quanqiutong(
num varchar(20),
pwd varchar(10),
type varchar(10),
yuezu float,
ldxianshi float,
shihua float,
gnmanyou float,
cthuafei float,
shihuasum float,
changtusum float);
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| num | varchar(20) | YES | | NULL | |
| pwd | varchar(10) | YES | | NULL | |
| type | varchar(10) | YES | | NULL | |
| yuezu | float | YES | | NULL | |
| ldxianshi | float | YES | | NULL | |
| shihua | float | YES | | NULL | |
| gnmanyou | float | YES | | NULL | |
| cthuafei | float | YES | | NULL | |
| shihuasum | float | YES | | NULL | |
| changtusum | float | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
2、在My Eclipse中导入JDBC驱动包,并设置路径;
3、链接数据库;
4、界面使用流布局的方式。
四、运行结果
五、总结与思考
通过这次课程设计,加强了我动手、思考和解决问题的能力。在整个设计过程中,我总共想过两个方案,另一个方案弄了两天,结果总是实现不了题目的要求。所以我又花了一天的时间做出这个方案,这个相对另一个方案比较简单,包括My SQL和My Eclipse的链接,数据库中表的建立,以及Java的界面划分,事件监听等。在做课程设计同时也是对课本知识的巩固和加强,平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。而且还可以记住很多东西。比如认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。故一个小小的课程设计,对我们的作用是如此之大。
六、源代码清单
程序源代码
import java.awt.*;
import java.awt.Event.*;
import javax.swing.*;
import javax.swing.*;
import javax.swing.JPasswordField;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.ResultSet;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.SQLException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Quan
{
public Quan()
{
//手机用户登录
JFrame quan = new JFrame("全球通");
quan.setLayout(new FlowLayout(1,15,30));
quan.setBounds(200, 200, 250, 300);
//添加控件
JLabel jl_welcom = new JLabel("欢迎来到全球通话费查询");
final JLabel jl_num = new JLabel("用户手机号");
final JLabel jl_pwd = new JLabel("用户密码");
final JTextField jtf_num=new JTextField(10);
//final JTextField jtf_pwd=new JTextField(10);
final JButton jb_check=new JButton("登录");
final JButton jb_cancel=new JButton("取消");
final JPasswordField jtf_pwd=new JPasswordField(10);
((JPasswordField) jtf_pwd).setEchoChar('*');
quan.add(jl_welcom);
quan.add(jl_num);
quan.add(jtf_num);
quan.add(jl_pwd);
quan.add(jtf_pwd);
quan.add(jb_check);
quan.add(jb_cancel);
quan.setVisible(true);
quan.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//话费查询
//添加查询按钮事件监听
jb_check.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
String num = jtf_num.getText();
String pwd = jtf_pwd.getText();
DbUtil util = new DbUtil();
try {
final Connection con = util.getCon();
boolean loginFlag = util.login(con, num, pwd);
if(loginFlag){
if(arg0.getSource()==jb_check)
{
JOptionPane.showMessageDialog(null, "登录成功");
final JFrame quan1=new JFrame("话费查询");
quan1.setLayout(new FlowLayout(1,15,15));
quan1.setBounds(400, 200, 250, 450);
//添加控件
JLabel jl号码=new JLabel(" 号码");
JLabel jl种类=new JLabel(" 种类");
JLabel jl月租=new JLabel(" 月租");
JLabel jl来电显示=new JLabel("来电显示");
JLabel jl市话=new JLabel(" 市话");
JLabel jl国内漫游=new JLabel("国内漫游");
JLabel jl长途费用=new JLabel("长途费");
JLabel jl市话总和=new JLabel("市话总和");
JLabel jl长途总和=new JLabel("长途总和");
final JTextField jtf号码=new JTextField(10);
final JTextField jtf种类=new JTextField(10);
final JTextField jtf月租=new JTextField(10);
final JTextField jtf来电显示=new JTextField(10);
final JTextField jtf市话=new JTextField(10);
final JTextField jtf国内漫游=new JTextField(10);
final JTextField jtf长途费用=new JTextField(10);
final JTextField jtf市话总和=new JTextField(10);
jtf市话总和.setEditable(false);
final JTextField jtf长途总和=new JTextField(10);
jtf长途总和.setEditable(false);
final JButton jb_check1=new JButton("查询");
JButton jb_cancel1=new JButton("取消");
final JButton jb_sum=new JButton("汇总");
quan1.add(jl号码);
quan1.add(jtf号码);
quan1.add(jl种类);
quan1.add(jtf种类);
quan1.add(jl月租);
quan1.add(jtf月租);
quan1.add(jl来电显示);
quan1.add(jtf来电显示);
quan1.add(jl市话);
quan1.add(jtf市话);
quan1.add(jl国内漫游);
quan1.add(jtf国内漫游);
quan1.add(jl长途费用);
quan1.add(jtf长途费用);
quan1.add(jb_check1);
quan1.add(jb_cancel1);
quan1.add(jb_sum);
quan1.add(jtf市话总和);
quan1.add(jtf长途总和);
quan1.setVisible(true);
jb_check1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
String num =jtf号码.getText();
if(e.getSource()==jb_check1)
{
Connection con = null ;
ResultSet rs=null;
DbUtil util = new DbUtil();
//异常处理
try
{
con = util.getCon();
} catch (Exception e1)
{
e1.printStackTrace();
}
try
{
rs=(ResultSet)util.quancheck(con, num);
} catch (Exception e1) {
e1.printStackTrace();
}
try {
rs=(ResultSet)util.quancheck(con, num);
} catch (NumberFormatException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (Exception e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
try
{
//读取数据库中的内容,并放到相应文本框中
while(rs.next())
{
jtf号码.setText(rs.getString("num"));
jtf种类.setText(new String(rs.getString("type").getBytes("ISO-8859-1"),("GBK")));
jtf月租.setText(rs.getString("yuezu"));//把字节转换成中文
jtf来电显示.setText(rs.getString("ldxianshi"));
jtf市话.setText(rs.getString("shihua"));
jtf国内漫游.setText(rs.getString("gnmanyou"));
jtf长途费用.setText(rs.getString("cthuafei"));
}
} catch (SQLException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
//查询话费页面取消按钮
jb_cancel1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
//汇总按钮
jb_sum.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
String num =jtf号码.getText();
if(e.getSource()==jb_sum)
{
Connection con = null ;
ResultSet rs=null;
DbUtil util = new DbUtil();
try
{
con = util.getCon();
} catch (Exception e1)
{
e1.printStackTrace();
}
try
{
rs=(ResultSet)util.sum(con,num);
} catch (Exception e1) {
e1.printStackTrace();
}
try {
rs=(ResultSet)util.sum(con,num);
} catch (NumberFormatException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
} catch (Exception e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
try
{
//汇总查询,读取数据库中的内容,并放到相应文本框中
while(rs.next())
{
jtf号码.setText(rs.getString("num"));
jtf种类.setText(new String(rs.getString("type").getBytes("ISO-8859-1"),("GBK")));
jtf月租.setText(rs.getString("yuezu"));//把字节转换成中文
jtf来电显示.setText(rs.getString("ldxianshi"));
jtf市话.setText(rs.getString("shihua"));
jtf国内漫游.setText(rs.getString("gnmanyou"));
jtf长途费用.setText(rs.getString("cthuafei"));
jtf市话总和.setText(rs.getString("shihuasum"));
jtf长途总和.setText(rs.getString("changtusum"));
}
} catch (SQLException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
}
}
else
{
JOptionPane.showMessageDialog(null, "登录失败");
}
}
catch (Exception e) {
e.printStackTrace();
}
}
});
//登录页面取消按钮
jb_cancel.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
new Quan();
}
}
与数据库相连的代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DbUtil {
private String dbUrl = "jdbc:mysql://127.0.0.1:3306/quan";
// 数据库用户名
private String dbUser = "root";
// 数据库密码
private String dbPwd = "sa";
// JDBC驱动名称
private String jdbcName = "com.mysql.jdbc.Driver";
// 获取数据库连接
public Connection getCon() throws Exception{
// 加载数据库驱动
Class.forName(jdbcName);
// 创建数据库连接
Connection con =
DriverManager.getConnection(dbUrl,dbUser,dbPwd);
// 返回数据库连接对象
return con;
}
// 关闭数据库连接
public void closeCon(Connection con) throws Exception{
if(con!=null){
con.close();
}
}
//用户登录判断
public boolean login(Connection con,String num,String pwd) throws Exception{
String sql = "select * from quanqiutong where num=? and pwd=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, num);
pstmt.setString(2, pwd);
ResultSet rs = pstmt.executeQuery();
//if(rs.next()){
// return true;
//}else{
//return false;
//}
return rs.next();
}
//话费查询判断
public ResultSet quancheck(Connection con,String num) throws Exception{
String sql="select * from quanqiutong where num=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1,num);
ResultSet rs = pstmt.executeQuery();
return rs;
}
//汇总查询
public ResultSet sum(Connection con,String num) throws Exception{
String sql="select * from quanqiutong where num=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1,num);
ResultSet rs = pstmt.executeQuery();
return rs;
}
public static void main(String arg[]) throws Exception
{
DbUtil quancheck=new DbUtil();
}
}
教师评语:
教师签名:______
日 期:
-13-
展开阅读全文