滨江学院
《Java程序设计》实习报告
题 目 会议记录管理系统
专 业 计算机系
年级班级 12级软件工程 1班
学 号 20122305047
学生姓名 何俊杰
学 期 20##-2014(2)
任课教师 方忠进
会议记录管理系统
1.引言
本系统是运用面向对象Java语言编写的小型会议记录管理系统,拥有个性化界面,专为个人设计。本系统启动后进入主界,在这个界面我们可以选择所需要的功能模块来完成所要执行的功能。
系统共有4个功能模块:会议查询、会议新增、会议删除、会议概览。支持一系列关于会议记录管理方面的简单操作,诸如查询、删除、添加等。
通过会议记录管理系统课程设计实习过程,进一步巩固《Java程序设计》课程所学的理论知识,增强学生利用所学内容获取相关知识,以解决实习过程中所面临的如何设计图形用户界面、怎样对数据进行各项操作与和技术难点import javax.swing.*、import java.net.*、import java.sql.*、import java.awt.*、import java.awt.event.*import 各项功能的编译操作,以提高利用Java语言实际动手进行程序设计的能力。独立设计和编制一个具有一定难度的、解决实际应用问题的应用程序。
2.系统设计
(1).需求分析
系统说明:运行程序后即进入主界面,用户要选择所需执行的功能,进行数据操作时已连入数据库创建相应的数据库表,通过鼠标点击相应项,来完成所需操作。
(2)总体设计方案
系统流程图
在图书管理系统中,共设计2张表。本系统使用MySQL来创建数据表。数据库的名称为mydb_meeting.sql。
表meeting
3.系统实现
程序代码
(1)会议概览:程序名MeetingBrower.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.sql.*;
class MeetingBrower implements ActionListener{
JFrame f;
Container cp;
JPanel jp;
JButton jbt1,jbt2;//按钮,查询、取消
JLabel label,L; //标签
//定义文本框
JTable table; //用来接收数据库中返回的信息
Object columnName[]={"参与人","主题","内容","起止时间"};
Object ar[][] =new Object[80][4];
String count="xx";
MeetingBrower(){
f=new JFrame();
cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框
jp=new JPanel();
jbt1=new JButton("确定");
jbt2=new JButton("返回");
label=new JLabel("<html><font color=#FF0000 size='4'>会议概况</font>",SwingConstants.CENTER);
L=new JLabel("待进行的会议还有"+count+"个");
table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名
JScrollPane scrollpane = new JScrollPane(table);
//布局,添加控件
jp.add(jbt1);
jp.add(jbt2);
JPanel jpanel=new JPanel();
jpanel.add(label);
JPanel jp1=new JPanel();
cp.add(jpanel,"North");
JPanel p=new JPanel();//用来放两个表
p.setLayout(new BorderLayout());
p.add(L,"North");
p.add(scrollpane);
cp.add(jp1,"West");
cp.add(p,"Center");
cp.add(jp,"South");
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
f.setSize(400,330);
int xcenter=(x-350)/2;
int ycenter=(y-330)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f.setVisible(true);
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/* f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
int i=0;
public void showRecord(){
while(i>=0){
ar[i][0]="";
ar[i][1]="";
ar[i][2]="";
ar[i][3]="";
i--;
}
i=0;
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:mysql://127.0.0.1:3306/mydb";//直接使用当前类目录下的数据库文件
String user="root";
String pwd="123456";
Connection con=DriverManager.getConnection(url,user,pwd);//直接使用当前类目录下的数据库文件
String s="select * from Meeting ";
Statement sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
while(rs.next()){
String canyurenyuan=rs.getString(1);
String zhuti=rs.getString(2);
String neirong=rs.getString(3);
String qizhishijian=rs.getString(4);
ar[i][0]=canyurenyuan;
ar[i][1]=zhuti;
ar[i][2]=neirong;
ar[i][3]=qizhishijian;
i++;
}
count=""+i+"";
L.setText("待进行的会议还有"+count+"个");
f.repaint();
con.close();
}catch(SQLException g){
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void actionPerformed(ActionEvent e){
String cmd=e.getActionCommand();
if(cmd.equals("确定")){
f.hide();
}
if(cmd.equals("返回"))
f.hide();
}
public static void main(String []arg){
MeetingBrower a=new MeetingBrower();
a.showRecord();
}
}
(2)会议查询:程序名QueryMeeting.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.sql.*;
class QueryMeeting implements ActionListener
{
JFrame f;
Container cp;
JPanel jp1;
JButton jbt1,jbt2;//按钮,确定、取消
JLabel label; //标签:请输主题
JTextField tf,tf1,tf2,tf3,tf4; //定义文本框
QueryMeeting(){
f=new JFrame();
cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框
jp1=new JPanel();
jbt1=new JButton("确定");
jbt2=new JButton("取消");
label=new JLabel("<html><font color=#FF0000 size='4'>请输入会议主题:</font>",SwingConstants.CENTER);
tf=new JTextField(20);
tf1=new JTextField(20);
tf2=new JTextField(20);
tf3=new JTextField(20);
tf4=new JTextField(20);
//布局,添加控件
JPanel jpanel1=new JPanel();
jpanel1.add(label);
jpanel1.add(tf);
JPanel jp2=new JPanel();
JPanel jpane2=new JPanel();
cp.add(jpanel1,"North");
JPanel jp3=new JPanel(new GridLayout(6,1));
JPanel jp4=new JPanel();
jp2.setLayout(new GridLayout(6,1));
jp2.add(new JLabel("参与人",SwingConstants.CENTER));
jp3.add(tf1);
jp2.add(new JLabel("主 题",SwingConstants.CENTER));
jp3.add(tf2);
jp2.add(new JLabel("内 容",SwingConstants.CENTER));
jp3.add(tf3);
jp2.add(new JLabel("起止时间",SwingConstants.CENTER));
jp3.add(tf4);
jp4.add(jbt1);
jp4.add(jbt2);
cp.add(jp2,"West");
cp.add(jp3,"Center");
cp.add(jp4,"South");
cp.add(jpane2,"East");
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
f.setSize(380,300);
int xcenter=(x-380)/2;
int ycenter=(y-300)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f.setVisible(true);
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/*f3.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
public void showRecord(){
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:mysql://127.0.0.1:3306/mydb";//直接使用当前类目录下的数据库文件
String user="root";
String pwd="123456";
Connection con=DriverManager.getConnection(url,user,pwd);
Statement sql;
String ql=tf.getText().trim();
String s="select * from Meeting where 主题 ='"+ql +"'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
if(rs.next())
{
String canyurenyuan=rs.getString(1);
String zhuti=rs.getString(2);
String neirong=rs.getString(3);
String qizhishijian=rs.getString(4);
tf1.setText(canyurenyuan);
tf2.setText(zhuti);
tf3.setText(neirong);
tf4.setText(qizhishijian);
}
else{
JOptionPane.showMessageDialog(null,"您输入的会议不存在,请重新输入", "输入错误", JOptionPane.YES_NO_OPTION);
}
con.close();
}catch(SQLException g){
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
tf1.setEditable(false);
tf2.setEditable(false);
tf3.setEditable(false);
tf4.setEditable(false);
}
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
if(cmd.equals("确定")){
showRecord();
tf.setText("");
}
else if(cmd.equals("取消"))
f.hide();
}
public static void main(String []arg){
QueryMeeting a=new QueryMeeting();
}
}
(3)会议删除:程序名RemoveMeeting.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.sql.*;
class RemoveMeeting implements ActionListener
{
JFrame f;
Container cp;
JPanel jp1;
JButton jbt1,jbt2,jbt3;//按钮,查询、取消
JLabel label,L; //标签:请输入学号
JTextField tf; //定义文本框
JTable table;//用来接收数据库中返回的信息
Object columnName[]={"参与人","主题","内容","起止时间"};
Object ar[][] =new Object[80][4];
String zhuti;
String count="xx";
RemoveMeeting(){
f=new JFrame();
cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框
jp1=new JPanel();
jbt1=new JButton("查询");
jbt2=new JButton("取消");
jbt3=new JButton("删除");
label=new JLabel("<html><font color=#FF0000 size='4'>请输入要删除的会议(主题):</font>",SwingConstants.CENTER);
L=new JLabel("待进行的会议还有"+count+"个");
table=new JTable(ar,columnName);//ar存放表中的数据,columnname表示列名
JScrollPane scrollpane = new JScrollPane(table);
tf=new JTextField(20);
//布局,添加控件
jp1.add(jbt1);
jp1.add(jbt2);
jp1.add(jbt3);
JPanel jpanel=new JPanel();
jpanel.add(label);
jpanel.add(tf);
JPanel jp2=new JPanel();
cp.add(jpanel,"North");
JPanel p=new JPanel();//用来放两个表
p.setLayout(new BorderLayout());
p.add(L,"North");
p.add(scrollpane);
cp.add(jp2,"West");
cp.add(p,"Center");
cp.add(jp1,"South");
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
f.setSize(440,330);
int xcenter=(x-440)/2;
int ycenter=(y-330)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f.setVisible(true);
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
jbt3.addActionListener(this);
/*f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
int i=0;
public void showRecord(String ql){
while(i>=0){
ar[i][0]="";
ar[i][1]="";
ar[i][2]="";
ar[i][3]="";
i--;
}
i=0;
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:mysql://127.0.0.1:3306/mydb";//直接使用当前类目录下的数据库文件
String user="root";
String pwd="123456";
Connection con=DriverManager.getConnection(url,user,pwd);
Statement sql;
String s="select * from Meeting where 主题 ='"+ql +"'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(s);
while(rs.next()){
String canyurenyuan=rs.getString(1);
String zhuti=rs.getString(2);
String neirong=rs.getString(3);
String qizhishijian=rs.getString(4);
ar[i][0]=canyurenyuan;
ar[i][1]=zhuti;
ar[i][2]=neirong;
ar[i][3]=qizhishijian;
i++;
}
count=""+i+"";
L.setText("待进行的会议"+count+"个");
f.repaint();
con.close();System.out.println(ar[0][1]);
}catch(SQLException g){
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void deleteRecord(int index){
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:mysql://127.0.0.1:3306/mydb";//直接使用当前类目录下的数据库文件
String user="root";
String pwd="123456";
Connection con=DriverManager.getConnection(url,user,pwd);
Statement sql;
String ql=(String)(ar[index][1]);
String s="delete from Meeting where 主题 ='"+ql +"'";
sql=con.createStatement();
int del=sql.executeUpdate(s);
if(del==1)
{JOptionPane.showMessageDialog(null,"删除成功!",
"信息", JOptionPane.YES_NO_OPTION);
}
con.close();
f.repaint();
}catch(SQLException g){
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void actionPerformed(ActionEvent e){
String remember="";
String ql="";
String cmd=e.getActionCommand();
if(cmd.equals("查询")){
ql=tf.getText().trim();
remember=ql;
showRecord(ql);
}
if(cmd.equals("删除")){
int index=table.getSelectedRow();
if( index==-1)
JOptionPane.showMessageDialog(null,"请选定要删除的表格行",
"输入错误", JOptionPane.YES_NO_OPTION);
else{
deleteRecord(index);
//showRecord(remember);
}
}
if(cmd.equals("取消"))
f.hide();
}
public static void main(String []arg){
RemoveMeeting a=new RemoveMeeting();
}
}
(4)会议新增:程序名MeetingIn.java
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Container;
import java.sql.*;
//extends JFrame
class MeetingIn implements ActionListener
{
JFrame f;
Container cp;
JPanel jp1;
JButton jbt1,jbt2;//按钮:确定、取消
JLabel label; //标签
JTextField tf1,tf2,tf3,tf4; //定义文本框
MeetingIn(){
f=new JFrame();
cp=f.getContentPane(); // 初始化面板、按钮、标签、文本框
jp1=new JPanel();
jbt1=new JButton("确定");
jbt2=new JButton("取消");
label=new JLabel("<html><font color=#FF0000 size='4'>会议增加</font>",SwingConstants.CENTER);
label.setForeground(Color.blue);
tf1=new JTextField(20);
tf2=new JTextField(20);
tf3=new JTextField(20);
tf4=new JTextField(20);
//布局,添加控件
jp1.add(jbt1);
jp1.add(jbt2);
JPanel jpanel1=new JPanel();
jpanel1.add(label);
JPanel jp2=new JPanel();
JPanel jpane2=new JPanel();
cp.add(jpanel1,"North");
JPanel jp3=new JPanel(new GridLayout(6,1));
JPanel jp4=new JPanel();
jp2.setLayout(new GridLayout(6,1));
jp2.add(new JLabel("参与人",SwingConstants.CENTER));
jp3.add(tf1);
jp2.add(new JLabel("主 题",SwingConstants.CENTER));
jp3.add(tf2);
jp2.add(new JLabel("内 容",SwingConstants.CENTER));
jp3.add(tf3);
jp2.add(new JLabel("起止时间",SwingConstants.CENTER));
jp3.add(tf4);
jp4.add(jbt1);
jp4.add(jbt2);
cp.add(jp2,"West");
cp.add(jp3,"Center");
cp.add(jp4,"South");
cp.add(jpane2,"East");
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
f.setSize(350,330);
int xcenter=(x-350)/2;
int ycenter=(y-330)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f.setVisible(true);
jbt1.addActionListener(this);//注册监听器
jbt2.addActionListener(this);
/*f3.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);*/
}
public void insertRecord(){
if(tf1.getText().equals("")||tf2.getText().equals("")||tf3.getText().equals("")||tf4.getText().equals(""))
{
JOptionPane.showMessageDialog(f,"请填写会议资料");
return;
}
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){System.out.println("加载驱动程序失败!");}
try{
String url = "jdbc:mysql://127.0.0.1:3306/mydb";//直接使用当前类目录下的数据库文件
String user="root";
String pwd="123456";
Connection con=DriverManager.getConnection(url,user,pwd);
Statement sql;
String s="insert into Meeting values('"+tf1.getText()+"','"+tf2.getText()+"','"+tf3.getText()+"','"+tf4.getText()+"')";
//查询输入的主题是否在数据库中存在
String query="select * from Meeting where 主题='"+tf2.getText()+"'";
sql=con.createStatement();
ResultSet rs=sql.executeQuery(query);//返回查询结果集
boolean moreRecords=rs.next();//判断结果集是否有数据
if(moreRecords){
JOptionPane.showMessageDialog(f,"会议已存在,请重新输入");
con.close();
tf2.setText("");
return;
}
int insert=sql.executeUpdate(s);
if(insert==1){
JOptionPane.showMessageDialog(null,"会议信息增加成功!");
tf1.setText("");
tf2.setText("");
tf3.setText("");
tf4.setText("");
}
}catch(SQLException g){
System.out.println("E Code"+g.getErrorCode());
System.out.println("E M"+g.getMessage());
}
}
public void actionPerformed(ActionEvent e){
String cmd=e.getActionCommand();
if(cmd.equals("确定")){
insertRecord();
}
else if(cmd.equals("取消"))
f.hide();
}
public static void main(String []arg){
MeetingIn a=new MeetingIn();
}
}
(5)主界面:程序名Book.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Meeting extends JFrame implements ActionListener {
JButton chaxun=new JButton("会议查询");
JButton zengjia=new JButton("会议新增");
JButton shanchu=new JButton("会议删除");
JButton gailan=new JButton("会议概览");
JMenuBar mb = new JMenuBar();//菜单栏
JPanel jp=new JPanel();//用来填放子模块
Container cp=getContentPane();
Meeting(){
mb.add(chaxun);
mb.add(zengjia);
mb.add(shanchu);
mb.add(gailan);
cp.add(mb,"North");
JLabel label = new JLabel("<html><font color=#FF0000 size='6'><body>专业:12级软件工程1班 <br>姓名:何俊杰<br>学号:20122305047</body></font>",SwingConstants.CENTER);
jp.add(label);
cp.add(jp);
setTitle("欢迎登陆会议管理系统");
Toolkit kit=Toolkit.getDefaultToolkit();
Dimension screen=kit.getScreenSize();
int x=screen.width; /*取得显示器窗口的宽度*/
int y=screen.height; /*取得显示器窗口的高度*/
//setSize(x,y); /*让系统窗口平铺整个显示器窗口*/
setSize(360,200);
int xcenter=(x-360)/2;
int ycenter=(y-200)/2;
setLocation(xcenter,ycenter);/*显示在窗口中央*/
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//注册临听器
chaxun.addActionListener(this);
zengjia.addActionListener(this);
shanchu.addActionListener(this);
gailan.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
String cmd=e.getActionCommand();
if (cmd.equals("会议查询")){
new QueryMeeting();
}
if (cmd.equals("会议新增")){
new MeetingIn();
}
if (cmd.equals("会议删除")){
new RemoveMeeting();
}
if (cmd.equals("会议概览")){
new MeetingBrower().showRecord();
}
}
public static void main(String[]args){
new Meeting();
}
}
程序运行结果(图)
4.结束语
此程序虽然构思简单,但是实际编程量过大,在拥有MySQL的电脑上多次运行,BUG并不是很多,可以说是达到了预期的目的,此程序Frame界面预想还可以减少,甚至只需要两个按钮弹窗界面,但可能涉及更多定义类,加大编程者的负担,但是个人可以认为私下有能力可以在进行修改。
参考文献:
[1]《Java语言程序设计(第二版)清华大学出版社》
[2]《Java语言程序设计基础(第三版)清华大学出版社》
题目4会议记录管理系统内容及要求定义会议信息类classConference会议信息包括会议编号会议名称部门名称会议地点会议日期会…
理工大学课程设计题目会议记录管理系统院系计算机科学与技术学院网络工程系班级网络班学号080402姓名同组成员指导教师成绩20年0月…
滨江学院Java程序设计实习报告题目会议记录管理系统专业计算机系年级班级12级软件工程1班学号20xx2305047学生姓名何俊杰…
沈阳理工大学课程设计专用纸Noi沈阳理工大学课程设计专用纸No1沈阳理工大学课程设计专用纸No222类的设计说明定义类为struc…
includeltiostreamhgtincludeltfstreamhgtincludeltstdlibhgtincludeltstringhgt…
课程设计大作业报告课程名称程序设计基础课程设计设计题目某小型会议参会人员管理系统院系班级级计算机科学与技术班设计者学号指导教师设计…
最好用的无纸化会议管理系统你知道千亿以上的大公司一年要开多少视频或电话会议吗说出来一定会让你大吃一惊据不完全统计平安集团每年召开大…
视频会议管理系统一系统设计原则Android手机视频会议系统功能涵盖会议控制音视频传输录像播放以及会议终端几个方面总体实现会议多媒…
沈阳理工大学课程设计专用纸Noi沈阳理工大学课程设计专用纸No1沈阳理工大学课程设计专用纸No222类的设计说明定义类为struc…
万科房地产的会议管理系统20xx0824213051标签分类地产精髓召集人参会人员议程会议管理系统万科房地产东京房产会议是人们为了…
共青团广东金融学院委员会组织部十一、十二月份系统例会暨工作总结会议议程一:各团总支组织部做工作汇报议程二:团委组织部做工作汇报(一…