Java课程设计.docx
《Java课程设计.docx》由会员分享,可在线阅读,更多相关《Java课程设计.docx(34页珍藏版)》请在冰豆网上搜索。
Java课程设计
《Java程序设计》课程设计报告
设计名称:
Java课程设计
设计题目:
学生成绩管理系统
学生学号:
1018130226
专业班级:
10软件工程一班
学生姓名:
张琪
指导教师:
刘亚欣
大连交大软件学院
2011年12月26日——2011年12月28日
学生成绩管理系统
组长:
廖耀吉
学号
姓名
分工
1018130638
廖耀吉
撰写报告,数据库的创建与连接,程序调试
1018130607
张琪
公共类的定义以及输入、查询模块的定义
1018130606
向华邓
删除模块以及成绩输入、查询模块的定义
1018130603
杜振枝
菜单栏的设计,查找相关资料
设计题目
学生成绩管理系统
内容概要:
具体要求如下:
1)创建学生信息(学生信息的输入、删除、查询);
2)课程成绩维护(成绩的输入、查询、修改);
3)按学号查询学生信息,学生成绩
备注:
每个学生信息包括:
学号、姓名、性别、年龄。
学生成绩信息包括:
学号,成绩.
目录
一、课程设计目的与任务
二、项目介绍
三、系统设计
1.概要设计
1.1系统功能结构设计
1.2数据库的连接
2.总体设计
2.1系统体系结构
四、详细设计及实现
1.公共类的定义
2.输入模块的定义
3.查询模块的定义
4.删除模块的定义
5.成绩输入模块的定义
6.成绩查询模块的定义
7.菜单栏的设计
五、总结
六、个人心得体会
一、课程设计目的与任务
课程设计旨在在完成本课程的学习后,能接受面向对象的概念和设计方法,可以利用Java语言开发工具迅速地编写有一定实用价值的应用程序。
课程设计中的问题比平时的习题复杂得多,也更接近实际。
课程设计着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养学生的动手能力;另一方面,使书上的知识变活,起到深化理解和灵活应用教学内容的目的。
平时的习题局限于一个和二个知识点,而课程设计题是程序设计的综合训练,包括问题分析,总体结构设计,用户界面设计、程序设计、基本技能和技巧。
本次课程设计要求学生能熟练运用JButton、JTextArea、JTextField、JLable等java容器与组件,掌握各种布局方式、异常处理、事件监听与相应等基本知识点,并且尝试运用JDBCAPI连接java程序与数据库,实现对数据的添加、删除、修改、查询等基本功能的实现。
最后能将自己的设计理念以及设计过程在文档中作出阐述与说明。
二、项目介绍
本项目组设计的是学生的成绩管理系统,用户可以通过该系统对学生的成绩信息进行增、删、改、查。
用户通过登陆界面登陆进入学生成绩管理系统,用户初次登陆密码与学号相同,进入后,用户可以选择添加成绩、删除信息、修改信息、查询信息。
通过添加信息选项,用户可以录入学生成绩;通过删除信息,用户可以删除某个学生的成绩记录;通过修改学生信息选项,进入后输入该学生学号后即可对学生的信息进行修改;通过查询信息选项,用户可以选择查询某个学生的成绩,也可以显示全部同学的信息。
用户使用完毕后,点击退出,即可以退出该系统。
三、系统设计
1.概要设计
1.1系统功能结构设计
模块功能大概可以分为如下4个方面:
1学生信息
学生信息的输入,查询,删除。
2成绩
根据学生的学号查询学生的成绩
1.2数据库的连接
1.2.1新建数据库
根据需要构建一个名为student的学生数据库
SQL的代码如下:
Createdatabasestudent
1.2.2新建表格
根据需要构建两个表格用来存储学生的信息,和学生的成绩
创建学生信息表
Createtablestudent(stuNochar(10)primarykey,namechar(10),gendernamechar(10),ageint)
创建学生成绩表
Createtablescore(stuNochar(10)primarykey,scoreint)
1.2.3新建名为student的数据源
打开控制面板,找到数据源新建一个student的数据源,
单击添加,选择SQL,并在服务器内添加(local)
注意修改默认的数据库,选中自己的数据库student
进行数据库的链接测试
在数据源管理器中会看到自己添加的数据源student。
2.总体设计
2.1系统体系结构
学生成绩管理系统结构分析
四、详细设计及实现
1.公共类的定义
学生类的定义
代码如下:
importjava.sql.Connection;
importjava.sql.ResultSet;
importjava.sql.Statement;
importjavax.swing.JOptionPane;
publicclassStudent
{
StringstuNo;
Stringname;
Stringgender;
intage;
publicStudent()
{}
publicStudent(StringstuNo,Stringname,Stringgender,intage)
{
this.stuNo=stuNo;
this.name=name;
this.gender=gender;
this.age=age;
}
publicStringgetStuNo()
{
returnstuNo;
}
publicvoidsetStuNo(StringstuNo)
{
this.stuNo=stuNo;
}
publicStringgetName()
{
returnname;
}
publicvoidsetName(Stringname)
{
this.name=name;
}
publicStringgetGender()
{
returngender;
}
publicvoidsetGender(Stringgender)
{
this.gender=gender;
}
publicintgetAge()
{
returnage;
}
publicvoidsetAge(intage)
{
this.age=age;
}
//向数据库中插入学生基本信息,若插入成功返回true
publicbooleaninsertStudent()
{
booleanb=true;
try
{
Connectioncon=SQLConnection.getCon();
Statementstatement=con.createStatement();
Stringsql="insertintostudentvalues('"+stuNo+"','"+name
+"','"+gender+"',"+age+")";
sql=newString(sql.getBytes("GBK"),"ISO-8859-1");//处理汉字乱码
statement.executeUpdate(sql);
statement.close();
con.close();
}
catch(Exceptione)
{
b=false;
System.out.println("插数据遇到异常!
");
}
returnb;
}
//根据学号查询学生基本信息,若查询成功返回true
publicbooleanselectByStuNo(StringstuNo)throwsException
{
booleanb=false;
Connectioncon=SQLConnection.getCon();
Statementstatement=con.createStatement();
Stringsql="select*fromstudentwherestuNo='"+stuNo+"'";
ResultSetrs=statement.executeQuery(sql);
if(rs.next())
{
Stringno=rs.getString
(1);
this.setStuNo(no);
Stringn=rs.getString
(2);
n=newString(n.getBytes("ISO-8859-1"),"GBK");//处理汉字乱码
this.setName(n);
Stringg=rs.getString(3);
g=newString(g.getBytes("ISO-8859-1"),"GBK");//处理汉字乱码
this.setGender(g);
this.setAge(rs.getInt(4));
b=true;
}
rs.close();
statement.close();
con.close();
returnb;
}
publicbooleandeleteStudent()
{
booleanb=true;
try
{
Connectioncon=SQLConnection.getCon();
Statementstatement=con.createStatement();
Stringsql="deletefromstudentwherestuNo='"+stuNo+"'";
statement.executeUpdate(sql);
statement.close();
con.close();
}
catch(Exceptione)
{
b=false;
System.out.println("插数据遇到异常!
");
}
returnb;
}
}
成绩类的定义
代码如下:
importjava.sql.Connection;
importjava.sql.ResultSet;
importjava.sql.Statement;
publicclassScore
{
StringstuNo;
intscore;
publicScore()
{}
publicScore(StringstuNo,intscore)
{
this.stuNo=stuNo;
this.score=score;
}
publicStringgetStuNo()
{
returnstuNo;
}
publicvoidsetStuNo(StringstuNo)
{
this.stuNo=stuNo;
}
publicintgetScore()
{
returnscore;
}
publicvoidsetscore(intscore)
{
this.score=score;
}
//向数据库中插入学生成绩基本信息,若插入成功返回true
publicbooleaninsertScore()
{
booleanb=true;
try
{
Connectioncon=SQLConnection.getCon();
Statementstatement=con.createStatement();
Stringsql="insertintoscorevalues('"+stuNo+"',"+score+")";
statement.executeUpdate(sql);
statement.close();
con.close();
}
catch(Exceptione)
{
b=false;
System.out.println("插入数据遇到异常!
");
}
returnb;
}
//根据学号查询学生成绩基本信息,若查询成功返回true
publicbooleanselectByStuNo(StringstuNo)throwsException
{
booleanb=false;
Connectioncon=SQLConnection.getCon();
Statementstatement=con.createStatement();
Stringsql="select*fromscorewherestuNo='"+stuNo+"'";
ResultSetrs=statement.executeQuery(sql);
if(rs.next())
{
Stringno=rs.getString
(1);
this.setStuNo(no);
this.setscore(rs.getInt
(2));
b=true;
}
rs.close();
statement.close();
con.close();
returnb;
}
}
链接数据库的代码如下:
importjava.sql.Connection;
importjava.sql.DriverManager;
publicclassSQLConnection
{
staticConnectiongetCon()
{
Connectioncon=null;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//安装驱动器类
con=DriverManager.getConnection("jdbc:
odbc:
student","jhb","jhb");//建立连接
}
catch(Exceptione)
{
System.out.println("建立数据库连接遇到异常!
");
}
returncon;
}
}
2.输入模块的定义
实现代码如下:
importjava.awt.BorderLayout;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.SwingConstants;
publicclassInsertPanelextendsJPanelimplementsActionListener
{
JButtonjb;
JTextFieldjt1,jt2,jt3,jt4;
InsertPanel()
{
this.setLayout(newBorderLayout());
JLabelj1,j2,j3,j4;
j1=newJLabel("学号:
",SwingConstants.CENTER);
j2=newJLabel("姓名:
",SwingConstants.CENTER);
j3=newJLabel("性别:
",SwingConstants.CENTER);
j4=newJLabel("年龄:
",SwingConstants.CENTER);
jt1=newJTextField(6);
jt2=newJTextField(6);
jt3=newJTextField(6);
jt4=newJTextField(6);
JPaneljp=newJPanel(newGridLayout(4,2));
jp.add(j1);
jp.add(jt1);
jp.add(j2);
jp.add(jt2);
jp.add(j3);
jp.add(jt3);
jp.add(j4);
jp.add(jt4);
add(jp);
jb=newJButton("确定");
add(jb,BorderLayout.SOUTH);
jb.addActionListener(this);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==jb)
{
//获取图形界面输入的数据
StringstuNo=jt1.getText().trim();
Stringname=jt2.getText().trim();
Stringgender=jt3.getText().trim();
Stringsage=jt4.getText().trim();
intage=0;
//把年龄从String转化成int
try
{
Integeriage=newInteger(sage);
age=iage;
}
catch(Exceptionex)
{
System.out.println("年龄数据格式异常!
");
}
booleanb=false;
if(age>0)
{
Students=newStudent(stuNo,name,gender,age);//以图形界面输入的数据创建对象
b=s.insertStudent();//保存数据
}
if(b)//b为true表示保存成功
JOptionPane.showMessageDialog(null,"插入记录成功!
");
else
JOptionPane.showMessageDialog(null,"insertfailed!
");
}
}
3.查询模块的定义
实现代码如下:
importjava.awt.BorderLayout;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.SwingConstants;
publicclassSelectPanelextendsJPanelimplementsActionListener
{
JButtonjb;
JTextFieldjt;
JTextFieldjt1,jt2,jt3,jt4;
SelectPanel()
{
JLabeljl=newJLabel("请输入学号:
",SwingConstants.CENTER);
jt=newJTextField();
jb=newJButton("确定");
JPaneljp1=newJPanel(newGridLayout(1,3));
jp1.add(jl);
jp1.add(jt);
jp1.add(jb);
JLabelj1,j2,j3,j4;
j1=newJLabel("学号:
",SwingConstants.CENTER);
j2=newJLabel("姓名:
",SwingConstants.CENTER);
j3=newJLabel("性别:
",SwingConstants.CENTER);
j4=newJLabel("年龄:
",SwingConstants.CENTER);
jt1=newJTextField(6);
jt1.setEditable(false);
jt2=newJTextField(6);
jt2.setEditable(false);
jt3=newJTextField(6);
jt3.setEditable(false);
jt4=newJTextField(6);
jt4.setEditable(false);
JPaneljp2=newJPanel(newBorderLayout());
JPaneljp3=newJPanel(newGridLayout(4,2));
jp2.add(newJLabel(""),BorderLayout.NORTH);
jp3.add(j1);
jp3.add(jt1);
jp3.add(j2);
jp3.add(jt2);
jp3.add(j3);
jp3.add(jt3);
jp3.add(j4);
jp3.add(jt4);
jp2.add(jp3);
setLayout(newBorderLayout(20,20));
add(jp1,BorderLayout.NORTH);
add(jp2);
jb.addActionListener(thi