资源描述
《JAVA程序设计》
课程设计汇报
设计题目: 运动会成绩管理系统
学院名称: 信息工程学院
专业班级: 13计本2
姓 名: 杨昀
学 号:
目录
一 需求分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3
二 概要设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3
三 具体设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3
3.1 数据库设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3
3.2 模块及窗体设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3
3.2.1 数据库模块设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。4
3.2.2 用户登录识别模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。5
3.2.3主页面模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。5
3.2.4 运动员信息浏览模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。6
3.2.5添加运动员信息模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。6
3.2.6运动员信息查询修改模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。7
3.2.7运动员信息查删除模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。8
3.3 关键程序代码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。8
四 软件测试。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。15
五 总结。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。23
参考资料:.......................................................24
一 需求分析
本系统关键目标就是实现运动会成绩管理,使运动会成绩管理工作愈加轻易,从而提升工作效率,降低管理成本.
系统中需要对拥护身份进行管理,采取登陆进入系统形式.
二 概要设计
/************************************************************************
概要设计阶段关键是粗略描述整个软件框架,并从业务角度描述软件模块、工作步骤等。项目标成功取决于设计好坏,而概要设计则是整个设计关键部分。概要设计关键任务是将用户需求划分为不一样功效,然后将这些功效细分成模块,并给模块部分规则约束,以达成各个模块之间能够相互交流目标。概要设计关乎到系统整体架构,所以想做好一个概要设计,不仅仅要熟悉用户业务步骤,还要含有相当丰富设计经验。
2.1 概要设计标准
概要设计是依据系统分析需求和工作环境情况对整个软件总体结构进行大致设计。概要设计要坚持以下多个标准。
(1)细分标准:软件系统全部是由很多不一样模块组成,当设计一套软件时,要先将全部功效分解。处理复杂问题方法是将其分解成多个小问题,一个个来处理。
(2)提升代码重用性:在面向对象设计中,首先考虑就是代码重用,一个好设计,未来在升级换代时不需要太大改动,节省了人力物力。
(3)从上而下层层分析:概要设计要从整体出发,逐一剖析软件功效,从上而下,先分析系统总功效,然后一步步细分,直到最小功效模块。
(4)一致性标准:概要设计要求全部功效模块在定义时使用统一规范。
(5)提升独立性,降低耦合:各个模块和模块之间尽可能降低关联,不然修改一个地方就会引发其它多处变动,不符合面向对象标准。通常情况下,对类封装后,只许可对类进行扩展,而不能修改,而封装类必需含有单一职责,既理论情况下不许可两个类共同完成一个功效。
(6)模块大小要尽可能适中:不是结构算法越复杂模块越好,模块大小要依据实际工作目标和其它类耦合紧密程度来决定。经验表明,一个模块规模不应过大,模块总行数应控制在10~100行范围内,最好为30~60行,这么了解和阅读全部较方便。过长模块往往是分解不充足表现,会增加阅读了解难度;但小规模太多也会使模块之间联络变得复杂,增大系统在模块调用时传输信息所花费开销。
因为概要设计是整个设计重中之重,牵一发而动全身,所以要努力做一个好概要设计,才能在以后软件开发过程中不再反复。现在软件行业流行模式化驱动设计,将部分市场上比较成功模式拿来用在自己设计中。
2.2 将用户需求模块化
依据概要设计标准来分析一下本项目标用户需求,并最终转化成用程序语言描述模块。什么样需求才是一个模块?模块应该含有以下3个特征。
(1)输入和输出:模块必需能被调用而且正确返回调用,而且调用全部是相对一个对象而言,这是模块独立性一个表现。
(2)处理功效:模块必需能够对调用输入数据进行灵活处理,并为输出准备好处理结果。
(3)程序代码:用来实现模块功效源代码。
2.3 确定系统最终模块
概要设计中最关键就是确定此项目包含哪些模块。依据上两节讲述设计标准和模块特征,将用户需求转化为下面模块。
**************************************************************************/
2.4 UML用例图
1.管理员权限
2.系统步骤图
2.5 模块设计
1 数据库设计模块
2 用户登录识别模块
3主页面模块
4运动员信息浏览模块
5 运动员信息添加模块
6运动员信息查询修改模块
7运动员信息删除模块
三 具体设计
3.1 数据库设计
数据库名称:yangyun
表名:tablename
运动员信息表:
学号(INT型)
姓名(varchar)
班级(varchar)
项目名(varchar)
成绩(varchar)
杨昀
13计本
100米
11.2S
马凯
13金融
跳高
2.6M
马嘉岐
14电子
50米短跑
14S
刘飞
12英语
铅球
5M
王青山
13信管
跳远
2.2米
李连杰
14网络
1*400
45S
任宇锴
13计本
跳高
2.8M
乔欢
14网络
跳远
3.2M
李小龙
15信管
4*400男子接力
40S
周杰伦
13音乐
跳远
3.5M
周星星
14演出
跳高
2.9M
王泽林
15生物
铅球
6M
刘德华
15演出
跳远
3.4M
赵一德
13计本
跳远
3M
周小华
14英语
跳高
2.5M
王晶晶
15生物
4*400女子接力
50S
刘华
15信管
铅球
6.9M
刘毅
14英语
4*400男子接力
43S
王缓缓
14网络
铅球
6.3M
3.2 模块及窗体设计
3.2.1 数据库模块设计
将数据库连接包装在一个lianjie类中,方便其它模块能够轻松调用,避免每次重写数据库连接代码。
下表是她基础属性
文件名
组员变量
组员方法
lianjie.java
Connection conn
PreparedStatement ps;
Statement stmt
ResultSet rs
Public static int shanchu(String )
public static int xiugai(String)
public static int zhucezh()
3.2.2 用户登录识别模块
代码封装在类Denlu,下表是她基础属性
文件名
控件
组员方法
Denlu.java
JLabel label1=new JLabel("管理员登录:");
JLabel label2=new JLabel("管理员:");
TextField name
JLabel label3=new JLabel(" 密码:");
JPasswordField mima
JButton button1=new JButton("登录");
JButton button2=new JButton("取消");
public Denlu()
3.2.3 主页面
以下是它基础属性
文件名
控件名称
Jiemian.java
JButton button1_0=new JButton("运动员信息浏览");
JButton button1_1=new JButton("添加运动员信息");
JButton button1_2=new JButton("查询修改运动员信息");
JButton button1_3=new JButton("删除运动员信息");
JButton button1_4=new JButton("退出系统");
3.2.4运动员信息浏览
基础属性以下
文件名
控件名
Chakansuoyou.java
JTable table;
JButton button4_0=new JButton("刷新");
JButton button4_1=new JButton("返回主页");
3.2.5 添加运动员信息
基础属性以下
文件名
控件名
Tianjia.java
TextField num=new TextField(20);
TextField name=new TextField(20);
TextField banji=new TextField(20);
TextField xiangmuming=new TextField(20);
TextField chengji=new TextField(20);
Label label1_0,label1_1,label1_2,label1_3,label1_4,label1_5;
JButton button1_0=new JButton("添加");
JButton button1_1=new JButton("取消");
3.2.6运动员信息查询和修改
基础属性以下
文件名
控件名
Chagai.java
TextField num=new TextField(20);
TextField name=new TextField(20);
TextField banji=new TextField(20);
TextField xiangmuming=new TextField(20);
TextField chengji=new TextField(20);
Label label1_0,label1_1,label1_2,label1_3,label1_4,label1_5;
JButton button1_0=new JButton("修改");
JButton button1_1=new JButton("取消");
JButton button1_2=new JButton("查询");
3.2.7删除运动员信息
3.3关键程序代码
1.登陆主页:
public class Denlu extends JFrame{
TextField name=new TextField(20);
JPasswordField mima=new JPasswordField(15);
JFrame f=new JFrame("榆林学院运动会成绩管理系统");
public Denlu(){
f.setBounds(450,200,400,300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setResizable(false);
f.setLayout(null);
JLabel label1=new JLabel("管理员登录:");
JLabel label2=new JLabel("管理员:");
JLabel label3=new JLabel(" 密 码:");
label1.setFont(new Font("Serif",Font.BOLD,20));
label1.setBounds(0,0,300,50);
label2.setFont(new Font("Serif",Font.BOLD,15));
label3.setFont(new Font("Serif",Font.BOLD,15));
JButton button1=new JButton("登录");
JButton button2=new JButton("取消");
BHandler h=new BHandler();
button1.addActionListener(h);
button2.addActionListener(h);
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
f.add(label1);
p1.setBounds(0,60,380,30);
p1.add(label2);
p1.add(name);
p2.setBounds(0,90,380,30);
p2.add(label3);
p2.add(mima);
p3.setBounds(0,150,420,40);
p3.add(button1);
p3.add(button2);
f.add(p1);
f.add(p2);
f.add(p3);
f.setVisible(true);
}
public static void main(String[] args) {
Denlu a=new Denlu();
}
public class BHandler implements ActionListener {
public void actionPerformed (ActionEvent event) {
if(event.getActionCommand()=="登录")
{
if(name.getText().equals("yangyun")&&mima.getText().equals("123"))
{
Jiemian zhuce=new Jiemian();
}
else
JOptionPane.showMessageDialog(Denlu.this,"卡号或密码不正确!");
}
else
{
f.dispose();
}
}
}
}
2.主界面:
public class Jiemian extends JFrame{
JFrame f=new JFrame("运动会成绩管理系统界面");
public Jiemian(){
JLabel label1;
f.setBounds(400,150,600,450);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setResizable(false);
f.setLayout(null);
label1=new JLabel("欢迎进入榆林学院运动会成绩管理系统",SwingConstants.CENTER);
label1.setFont(new Font("Serif",Font.BOLD,25));
JButton button1_0=new JButton("运动员信息浏览");
JButton button1_1=new JButton("添加运动员信息");
JButton button1_2=new JButton("查询修改运动员信息");
JButton button1_3=new JButton("删除运动员信息");
JButton button1_4=new JButton("退 出 系 统");
BHandler h=new BHandler();
button1_0.addActionListener(h);
button1_0.setFont(new Font("宋体", Font.BOLD, 20));
button1_0.setSize(400,35);
button1_1.addActionListener(h);
button1_1.setFont(new Font("宋体", Font.BOLD, 20));
button1_1.setSize(400,35);
button1_2.addActionListener(h);
button1_2.setFont(new Font("宋体", Font.BOLD, 20));
button1_2.setSize(400,35);
button1_3.addActionListener(h);
button1_3.setFont(new Font("宋体", Font.BOLD, 20));
button1_3.setSize(400,35);
button1_4.addActionListener(h);
button1_4.setFont(new Font("宋体", Font.BOLD, 20));
button1_4.setSize(400,35);
JPanel p0=new JPanel();
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JPanel p3=new JPanel();
JPanel p4=new JPanel();
JPanel p5=new JPanel();
p0.setBounds(0,0,600,60);
p0.add(label1);
p1.setLayout(null);
p1.setBounds(100,60,600,40);
p1.add(button1_0);
p2.setLayout(null);
p2.setBounds(100,120,600,40);
p2.add(button1_1);
p3.setLayout(null);
p3.setBounds(100,180,600,40);
p3.add(button1_2);
p4.setLayout(null);
p4.setBounds(100,240,600,40);
p4.add(button1_3);
p5.setLayout(null);
p5.setBounds(100,300,600,40);
p5.add(button1_4);
f.add(p0);
f.add(p1);
f.add(p2);
f.add(p3);
f.add(p4);
f.add(p5);
f.setVisible(true);
}
private class BHandler implements ActionListener {
public void actionPerformed (ActionEvent event) {
if(event.getActionCommand()=="运动员信息浏览")
{Chakansuoyou a=new Chakansuoyou(); }
else if(event.getActionCommand()=="添加运动员信息")
{ Tianjia b=new Tianjia();}
else if(event.getActionCommand()=="查询修改运动员信息")
{ Chagai b=new Chagai();}
else if(event.getActionCommand()=="删除运动员信息")
{ Shanchu b=new Shanchu();}
else if(event.getActionCommand()=="退 出 系 统")
{ f.dispose();}
}
}
}
3.运动员信息浏览:
public class Chakansuoyou extends JFrame{
JFrame f=new JFrame("查看全部运动员信息");
public static Object[][] data=new Object[30][5];
JTable table;
String[] lieming={"学 号","姓 名","班 级","项目名","成绩"};
public Chakansuoyou(){
f.setBounds(400,150,600,450);
//f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//f.setResizable(false);
f.setLayout(null);
table=new JTable(data,lieming);
table.setEnabled(false); //表格不可编辑
JButton button4_0=new JButton("刷新");
JButton button4_1=new JButton("返回主页");
BHandler h=new BHandler();
button4_0.addActionListener(h);
button4_1.addActionListener(h);
JPanel p1=new JPanel();
JPanel p2=new JPanel();
p1.setBounds(0,0,600,40);
p1.add(button4_0);
p1.add(button4_1);
p2.setBounds(0,44,600,410);
p2.add(new JScrollPane(table));
f.add(p1);
f.add(p2);
f.setVisible(true);
}
private class BHandler implements ActionListener {
public void actionPerformed (ActionEvent event) {
if(event.getActionCommand()=="刷新")
{
int h=0,l=0;
//data=new Object[30][5];
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/yangyun","root","");
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from tablename");
while(rs.next()){
System.out.println(rs.getString("Uname"));
data[h][l++]=rs.getString("ID");
data[h][l++]=rs.getString("Uname");
data[h][l++]=rs.getString("Ubanji");
data[h][l++]=rs.getString("Uxiangmuming");
data[h][l++]=rs.getString("Uchengji");
h++;l=0;
}
rs.close();
stmt.close();
conn.close();
table=new JTable(data,lieming);
f.setVisible(true);
} catch(Exception sqle){
System.err.println(sqle);
JOptionPane.showMessageDialog(Chakansuoyou.this,"系统故障,请稍后在试!");
}
}
else
f.dispose();
}
}
}
4运动员信息添加:
public class Tianjia extends JFrame{
JFrame f=new JFrame("添加运动员");
TextField num=new TextField(20);
TextField name=new TextField(20);
TextField banji=new TextField(20);
TextField xiangmuming=new TextField(20);
TextField chengji=new TextField(20);
public Tianjia(){ //添加运动员
JLabel label1_0,label1_1,label1_2,label1_3,label1_4,label1_5;
JPanel p1,p2,p3,p4,p1_0,p1_1,p1_2,p1_3,p1_4,p1_5,p1_6;
f.setBounds(400,150,600,450);
//f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setResizable(false);
f.setLayout(null);
JButton button1_0=new JButton("添加");
JButton button1_1=new JButton("取消");
BHandler h=new BHandler();
button1_0.addActionListener(h);
button1_1.addActionListener(h);
label1_0=new JLabel("请输入要添加运动员信息",SwingConstants.CENTER);
label1_0.setFont(new Font("Serif",Font.BOLD,25));
label1_1=new JLabel("学 号:",SwingConstants.CENTER);
label1_1.setFont(new Font("Serif",Font.BOLD,15));
label1_2=new JLabel("姓 名:",SwingConstants.CENTER);
label1_2.setFont(new Font("Serif",Font.BOLD,15));
label1_3=new JLabel("班 级:",SwingConstants.CENTER);
label1_3.setFont(new Font("Serif",Font.BOLD,15));
label1_4=new JLabel("项目名:",SwingConstants.CENTER);
label1_4.setFont(new Font("Serif",Font.BOLD,15));
label1_5=new JLabel("成 绩:",SwingConstants.CENTER);
label1_5.setFont(new Font("Serif",Font.BOLD,15));
p1_0=new JPanel();
p1_0.setBounds(0,0,400,80);
p1_0.add(label1_0);
p1_1=new JPanel();
p1_1.setBounds(0,80,550,50);
p1_1.add(label1_1);
p1_1.add(num);
p1_2=new JPanel();
p1_2.setBounds(0,130,550,50);
p1_2.add(label1_2);
p1_2.add(name);
p1_3=new JPanel();
p1_3.setBounds(0,180,550,50);
//p1_3.setBackground(Color.blue);
p1_3.add(label1_3);
p1_3.add(banji);
p1_4=new JPanel();
p1_4.setBounds(0,230,550,50);
p1_4.add(label1_4);
p1_4.add(xiangmuming);
p1_5=new JPanel();
p1_5.setBounds(0,280,550,50);
p1_5.add(label1_5);
p1_5.add(chengji);
p1_6=new JPanel();
p1_6.setBounds(0,330,600,50);
p1_6.add(button1_0);
p1_6.add(button1_1);
f.add(p1_0);
f.add(p1_1);
f.add(p1_2);
f.add(p1_3);
f.add(p1_4);
f.add(p1_5);
f.add(p1_6);
f.setVisible(true);
}
private class BHandler implements ActionListener {
public void actionPerformed (ActionEvent event) {
if(event.getActionCommand()=="添加")
{int q;
q=Lianjie.zhucezh(num.getText(),name.getText(),banji.getText(),xiangmuming.getText(),chengji.getText());
if(q==1)
JOptionPane.showMessageDialog(Tianjia.this,"添加成功!");
else
JOptionPane.showMessageDialog(Tianjia.this,"系统故障,请稍后在试!");
}
else
{
f.dispose();
}
}
}
}
5.运动员信息查询和修改:
public class Chagai extends JFrame{
JFrame f=new JFrame("修改运动员信息");
TextField num=new TextField(20);
TextField name=new TextField(20);
TextField banji=new TextField(20);
TextField xiangmuming=new TextField(20);
TextField chengji=new TextField(20);
public Chagai(){
JLabel label1_0,label1_1,label1_2,label1_3,label1_4,label1_5;
JPanel p1,p2,p3,p4,p1_0,p1_1,p1_2,p1_3,p1_4,p1_5,p1_6;
f.setBounds(400,150,600,450);
//f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setResizable(false);
f.setLayout(null);
JButton button1_0=new JButton("修改");
JButton button1_1=new JButton("取消");
JButton button1_2=new JButton("查询");
BHandler h=new BHandler();
button1_0.addActionListener(h);
button1_1.addActionListener(h);
button1_2.addActionListener(h);
l
展开阅读全文