大学生社团信息管理系统
《大学生社团信息管理系统》由会员分享,可在线阅读,更多相关《大学生社团信息管理系统(49页珍藏版)》请在装配图网上搜索。
1、郑州科技学院java课程设计 设计(论文)题目: 大学生社团信息管理系统所 在 院: 信息工程学院 专 业 班 级: 14通信工程2班学 生 姓 名: 赵创 学 号: 201451050指 导 教 师: 曾毅 2017年3月6日郑州科技学院Java课程设计任务书专业 14通信工程 班级 2班 学号 201451050 姓名 赵创 一、设计题目: 大学生社团信息管理系统的设计 二、设计任务与要求任务:利用所学的Java知识,在图书馆查阅各种相关的书籍和个类杂志报刊以及利用互联网搜索到详尽的补充资料,来设计一个简单的大学生社团信息管理系统。要求:了解软件eclipse和数据库的基本知识,结合自己所
2、学的Java知识,来设计一个系统,此系统能够满足对社团人员信息的管理。三、参考文献1,作者:申莉莉编,-出版社:清华大学 2,作者:薛华成编,-出版社:清华大学,2004.33,宇峰编著,-北京:清华大学出版社,2006.14,作者:麦沙塞克著/金芝译,-出版社:机械工业5,作者:(美)萨茨辛格等著/朱群雄等译,-出版社:机械工业6 ,作者:王成辉编,-出版社:清华大学,2002四、设计时间2 016 年 8 月 31 日至 2016 年 9 月 9 日指导教师签名:年 月 日中 文 摘 要利用网络和数据库技术,结合目前硬件价格普遍下跌与宽带网大力建设的有利优势,应用eclipse软件和采用M
3、ySQL数据库系统组件来构成的应用服务系统,本文开发了大学生社团管理系统这一程序。它运用方便、操作简单,效率很高。主要提供了对学生社团的管理平台。关键词: 学生社团,eclipse,信息系统,SQL server目 录1项目设计思路11.1功能阐述11.2系统预览11.3功能结构31.4文件组织结构32数据库设计42.1数据库设计42.2数据表的设计43公共类设计53.1连接数据库53.2判断输入是否为空64登录模块设计84.1登录模块概述84.2实现带背景的窗体84.3登录模块实现过程105主窗口设计155.1主窗口概述155.2主窗体实现过程155.2.1系统维护功能155.2.2人员管理
4、功能25参考文献451项目设计思路1.1功能阐述大学生社团信息管理系统是一款辅助人员信息管理的实用性项目,根据社团的日常管理需要,大学生社团信息管理系统包括系统维护、人员管理两大模块。其中,系统维护包括添加用户、修改密码、退出系统。人员管理包括人员信息的录入、人员信息的维护,在人员信息维护中,可以实现人员信息的查询与修改。 上多种功能之间相互联系,可以满足用户的基本需求。1.2系统预览大学生社团信息管理系统有多个窗口组成,其中包括系统不可缺少的登录窗口,项目的主窗口,功能模块的内部窗口等。系统登录窗口效果如图1.1所示:图1.1 大学生社团信息管理系统登录窗口当用户输入合法的用户名的密码后,单
5、机登录按钮,即可进入系统主窗口,运行结果如图1.2所示:图1.2 大学生社团信息管理系统主窗口本程序的主窗口中提供了进入各功能模块的按钮,通过单击这些按钮,即可进入各子模块中。各个子功能功能模块还提供了查询、修改和添加相关信息的操作,例如添加社团人员信息窗口运行的结果如图1.3所示:图1.3 社团人员信息录入窗体1.3功能结构人员信息维护人员信息录入退出系统修改密码添加用户人员管理系统维护大学生社团信息管理系统大学生社团信息管理系统是辅助人员信息管理而设计的,本系统的功能结构如图1.4所示:图1.4 系统功能结构图1.4文件组织结构大学生社团信息管理系统的根目录是大学生社团管理系统,文件组织结
6、构图如图1.5所示。图1.5 大学生社团信息管理系统的文件组织结构图2数据库设计2.1数据库设计大学生社团信息管理系统采用的是SQL Server 2005数据库,数据库命名为organization,包括的数据表为information和user,表user主要用来记录用户名和密码,用于系统的登录。表information主要用来记录大学生社团人员的信息。2.2数据表的设计数据表设计是一个非常重要的环节,下面对系统中的数据表的结构进行分析。1 user(登录信息表)登录基本信息表包括了登录人员的用户名、密码,数据字段设计如表2.1所示:表2.1 user表字段类型额外说明userIdint自
7、动编号主键usernamevarchar用户名userpasswordvarchar密码2 information(社团人员信息表)社团人员信息表中保存了人员的姓名、性别、出生日期、家庭住址、联系电话、所在社团、职务等详细信息,数据表字段设计如表2.2所示:表2.2 information表字段类型额外说明Idint自动编号主键namevarchar姓名sexvarchar性别birthvarchar出生日期addressvarchar家庭住址telvarchar联系电话organizationvarchar所在社团positionvarchar职务3公共类设计3.1连接数据库任何系统的设计都
8、离不开数据库,每一步数据库操作都需要与数据库建立连接,为了增加代码的重要性,可以将连接数据库的相关代码保存在一个类中,以便随时调用。创建类DBUtil,在该类中加载数据库驱动。在该类中定义了获取数据库连接方法getcCon(),该方法返回值为Connecttion对象。具体代码如下:package com.zky.www.util;import java.sql.*;public class DBUtil private static String driverName=com.mysql.jdbc.Driver;private String URL=jdbc:mysql:/localhost
9、:3306/organization?useUnicode=true&characterEncoding=UTF-8;private String username=root;private String password=123;private Connection conn=null;statictry Class.forName(driverName); catch (ClassNotFoundException e) e.printStackTrace();public Connection getConn()try conn=DriverManager.getConnection(U
10、RL,username,password); catch (SQLException e) e.printStackTrace();return conn;public void closeConn(Connection conn)if(conn!=null)try conn.close();conn=null; catch (SQLException e) e.printStackTrace();public static void main(String args) new DBUtil().getConn();System.out.println(链接成功);3.2判断输入是否为空判断文
11、本输入框是否为空,因此在这里建立了一个公共类StringUtil,用来判断,具体代码如下:package com.zky.www.util;public class StringUtil public static boolean isEmpty(String str)if(.equals(str)|null=str)return true;elsereturn false;public static boolean isNotEmpty(String str)if(!.equals(str)&null!=str)return true;elsereturn false;4登录模块设计4.1登
12、录模块概述运行程序,首先进入系统登录窗口。为了使窗体中的各个组件放得更加随意美观,因此本次系统设计采用了绝对布局方式,并在窗体中添加了背景图片,运行结果可以参照图1.1.4.2实现带背景的窗体在创建窗体时,需要向窗体中添加面板,然后在面板中添加各种组件。Swing中代表面板组件的类为JPanel,该类是以灰色为背景,并且没有任何图片,这样就不能达到很好的美观效果。因此该登录窗口所运用的就是面板的叠加,把图片添加到了JLabel中,然后把JLabel添加到面板中,并且带背景图片的面板放在了最低层,并且该面板透明度设置为不透明,这样就可以实现带背景图片的登录窗口,具体代码如下:package co
13、m.zky.www.view;public class LoginFrame extends JFrameprivate JLabel lbUsername=new JLabel(用户名:,JLabel.CENTER);/实例变量private JTextField txtUsername=new JTextField();private JLabel lbPassword=new JLabel(密 码:,JLabel.CENTER);private JPasswordField txtPassword=new JPasswordField();private JButton btnLogin
14、=new JButton(登录); private JButton btnCancel=new JButton(取消); private JLabel lbTip=new JLabel(大学生社团信息管理系统登录,JLabel.CENTER); private DBUtil dbUtil=new DBUtil(); private UserDao userDao=new UserDao();private static User mainUser=null; LoginFrame() ImageIcon background=new ImageIcon(picturet019cd8596989
15、56305e.jpg);JLabel imagLabel=new JLabel(background);this.setSize(800, 600);/设置大小this.setLocationRelativeTo(null);/放在屏幕中间this.setResizable(false);/不可改变大小this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置关闭属性Container cont=this.getContentPane();cont.setLayout(null);/自定义布局lbTip.setFont(new Font(黑体
16、,Font.PLAIN,28);lbTip.setForeground(Color.BLUE);lbTip.setBounds(0, 30, 800, 100);cont.add(lbTip);lbUsername.setBounds(150, 200, 100, 25);lbUsername.setFont(new Font(宋体,Font.PLAIN,24);txtUsername.setBounds(280, 200, 250, 28);cont.add(lbUsername);cont.add(txtUsername);lbPassword.setBounds(150, 290, 10
17、0, 25);lbPassword.setFont(new Font(宋体,Font.PLAIN,24);txtPassword.setBounds(280, 290, 250, 28);cont.add(lbPassword);cont.add(txtPassword);btnLogin.setBounds(210, 380, 80, 25);btnCancel.setBounds(400, 380, 80, 25);btnLogin.addActionListener(new LoginAction();btnLogin.setFont(new Font(宋体,Font.PLAIN,20)
18、;btnCancel.addActionListener(new CancelAction();btnCancel.setFont(new Font(宋体,Font.PLAIN,20);cont.add(btnLogin);cont.add(btnCancel);this.getLayeredPane().add(imagLabel,newInteger(Integer.MIN_VALUE); imagLabel.setBounds(0, 0, this.getWidth(), this.getHeight(); cont.add(imagLabel);this.setVisible(true
19、); /可见性public static User getMainUser() return mainUser;public static void setMainUser(User mainUser) LoginFrame.mainUser = mainUser;public static void main(String args) new LoginFrame(); 4.3登录模块实现过程登录窗口设计十分简单,有一个用户名文本框,一个密码文本框,一个登录按钮和一个取消按钮组成。下面将实现介绍登录模块的实现过程。(1)实现用户登录操作的数据表是user,首先创建与数据表对应的JaveBee
20、n类User,该类中属性与数据表中字段一一对应,并包含了属性的get与set方法,具体代码如下:package com.zky.www.model;public class User /javabeanprivate int userId;private String username;private String password;public User(int userId, String username, String password) super();this.userId = userId;this.username = username;this.password = pass
21、word;public User(String username, String password) super();this.username = username;this.password = password;public User() super();public int getUserId() return userId;public void setUserId(int userId) this.userId = userId;public String getUsername() return username;public void setUsername(String us
22、ername) this.username = username;public String getPassword() return password;public void setPassword(String password) this.password = password;(2)定义类UserDao,在该类中实现按用户名与密码查询用户的方法getUser(),该方法的返回值为User对象。具体代码如下:package com.zky.www.dao;public class UserDao public User checkLogin(Connection conn,User us
23、er)User resultUser=null;String sql=select * from user where username=? and password=?;try PreparedStatement pstmt=conn.prepareStatement(sql);pstmt.setString(1, user.getUsername();pstmt.setString(2,user.getPassword();ResultSet rs=pstmt.executeQuery();if(rs.next()resultUser=new User();resultUser.setUs
24、erId(rs.getInt(userId);resultUser.setUsername(rs.getString(username);resultUser.setPassword(rs.getString(password); catch (SQLException e) e.printStackTrace();return resultUser;public int modifyPassword(Connection conn, User passUser) int flag=-1;String sql=update user set password=? where userId=?;
25、tryPreparedStatement pstmt=conn.prepareStatement(sql);pstmt.setString(1, passUser.getPassword();pstmt.setInt(2, passUser.getUserId();flag=pstmt.executeUpdate();catch(Exception e)e.printStackTrace();return flag;(3)在登录按钮的单击事件中,调用判断用户是否合法的方法getUser(),实现如果用户名输入的用户名与密码合法将转发至系统主窗体;如果用户输入了错误的用户名与密码,则给出相应的提
26、示。具体代码如下:private class LoginAction implements ActionListenerpublic void actionPerformed(ActionEvent e) String username=txtUsername.getText().trim();String password=txtPassword.getText().trim();if(StringUtil.isEmpty(username)JOptionPane.showMessageDialog(null,用户名不能为空!);return ;if(StringUtil.isEmpty(p
27、assword)JOptionPane.showMessageDialog(null,密码不能为空!);return;User user=new User(username,password);Connection conn=dbUtil.getConn(); mainUser=userDao.checkLogin(conn, user);dbUtil.closeConn(conn);/关闭连接if(mainUser!=null)MainFrame mainFrame=new MainFrame();LoginFrame.this.setVisible(false);elseJOptionPa
28、ne.showMessageDialog(null, 用户名或密码错误!);txtUsername.setText();txtPassword.setText();txtUsername.requestFocus();(4)在取消按钮的单击事件中,用户名文本框与密码文本框里的内容将设置为空,用空文本代替之前输入的内容。具体的代码如下:private class CancelAction implements ActionListenerpublic void actionPerformed(ActionEvent arg0) txtUsername.setText();txtPassword.
29、setText();txtUsername.requestFocus();5主窗口设计5.1主窗口概述成功登录系统后,即可进入程序的主窗体。在主窗口中添加了菜单栏,在菜单栏中添加菜单,菜单中有包括了二级菜单,主窗口运行结果如图5.1所示。图5.1 程序主窗体运行结果5.2主窗体实现过程5.2.1系统维护功能(1)添加用户当单击添加用户,则系统自动跳出添加用户窗口,添加完成以后,对应的数据库中的User表中会添加相应的用户名与密码,此用户名与密码可用于登录该大学生社团信息管理系统的登录。程序运行的结果如图5.2所示,相应的代码如下:图5.2 添加用户窗体运行结果添加用户相应代码:package
30、com.zky.www.view;public class addUser extends JInternalFrame private JPanel jContentPane = null;private JLabel lbTip = null;private JLabel name = null;private JTextField inputName = null;private JLabel password = null;private JPasswordField inputPassword = null;private JLabel passwordTwo=null;privat
31、e JPasswordField inputPasswordTwo=null;private JButton btnAdd = null;private JButton btnCancel = null;public addUser() super();initialize();private void initialize() this.setBounds(new Rectangle(150, 150, 500, 400);this.setIconifiable(true);this.setClosable(true);this.setTitle(添加新用户);this.setContent
32、Pane(getJContentPane();this.setVisible(true);private JPanel getJContentPane() if (jContentPane = null) password = new JLabel(密码:,JLabel.CENTER);password.setFont(new Font(宋体,Font.PLAIN,18);password.setBounds(new Rectangle(45, 130, 93, 34);passwordTwo=new JLabel(再次确认:,JLabel.CENTER);passwordTwo.setFon
33、t(new Font(宋体,Font.PLAIN,18);passwordTwo.setBounds(new Rectangle(36, 177, 150, 34);name = new JLabel(姓名:,JLabel.CENTER);name.setFont(new Font(宋体,Font.PLAIN,18);name.setBounds(new Rectangle(44, 83, 90, 29);lbTip = new JLabel(添加新用户,JLabel.CENTER);lbTip.setBounds(new Rectangle(0, 0, 500, 80);lbTip.setF
34、oreground(Color.blue);lbTip.setFont(new Font(黑体, Font.PLAIN, 26);jContentPane = new JPanel();jContentPane.setLayout(null);jContentPane.add(lbTip, null);jContentPane.add(name, null);jContentPane.add(passwordTwo, null);jContentPane.add(getTxtBookTypeName(), null);jContentPane.add(password, null);jCont
35、entPane.add(getTxtBookTypeDesc(), null);jContentPane.add(getPasswordTwo(), null);jContentPane.add(getBtnAdd(), null);jContentPane.add(getBtnCancel(), null);return jContentPane;private JTextField getPasswordTwo() if (inputPasswordTwo = null) inputPasswordTwo = new JPasswordField();inputPasswordTwo.se
36、tBounds(new Rectangle(170, 177, 170, 25);return inputPasswordTwo;private JTextField getTxtBookTypeName() if (inputName = null) inputName = new JTextField();inputName.setBounds(new Rectangle(170, 83, 170, 25);return inputName;private JTextField getTxtBookTypeDesc() if (inputPassword = null) inputPass
37、word = new JPasswordField();inputPassword.setBounds(new Rectangle(170, 130, 170, 25);return inputPassword;private JButton getBtnAdd() if (btnAdd = null) btnAdd = new JButton(添加);btnAdd.setFont(new Font(宋体,Font.PLAIN,17);btnAdd.setBounds(new Rectangle(120, 240,70, 30);btnAdd.addActionListener(new Act
38、ionListener()public void actionPerformed(ActionEvent arg0) String Name=inputName.getText().trim();String Password=inputPassword.getText().trim();String PasswordTwo=inputPasswordTwo.getText().trim();if(StringUtil.isEmpty(Name)JOptionPane.showMessageDialog(null,姓名不能为空!);inputName.requestFocus();return
39、;if(StringUtil.isEmpty(Password)JOptionPane.showMessageDialog(null,密码不能为空!);inputPassword.requestFocus();return;if(StringUtil.isEmpty(PasswordTwo)JOptionPane.showMessageDialog(null,请再次输入密码!);inputPasswordTwo.requestFocus();return;if(Password.equals(PasswordTwo)BookType bookType=new BookType(Name,Pas
40、sword);int flag=new BookTypeDao().addBookType(bookType);if(flag0)JOptionPane.showMessageDialog(null, 添加成功!);inputName.setText();inputPassword.setText();inputPasswordTwo.setText();inputName.requestFocus();elseJOptionPane.showMessageDialog(null, 添加失败!);elseJOptionPane.showMessageDialog(null, 两次密码输入不一致
41、,请重新输入!);inputPassword.setText();inputPasswordTwo.setText();inputPassword.requestFocus();return;);return btnAdd;private JButton getBtnCancel() if (btnCancel = null) btnCancel = new JButton();btnCancel.setBounds(new Rectangle(250, 240, 70, 30);btnCancel.setText(取消);btnCancel.setFont(new Font(宋体,Font.
42、PLAIN,17);return btnCancel;(2)修改密码当单击修改密码,则系统会运行相应的代码,出现修改密码窗口,原密码就是登录系统的密码,新密码是重新定义的密码,修改密码之后,旧密码不能登录系统,应该用新密码登录该系统,在修改密码过程中,两次新密码必须一致,否则不能修改密码。系统运行结果如图5.3所示,相应的代码如下。图5.3 修改密码窗体运行结果修改密码相应代码:package com.zky.www.view;public class ModifyPassIFrame extends JInternalFrameprivate JLabel lboldPassword=new
43、 JLabel(旧密码:);private JPasswordField txtoldPassword=new JPasswordField();private JLabel lbnewPassword=new JLabel(新密码:);private JPasswordField txtnewPassword=new JPasswordField();private JLabel lbconfirmPassword=new JLabel(确认密码:);private JPasswordField txtconfirmPassword=new JPasswordField();private
44、JButton btnModify=new JButton(修改); private JButton btnCancel=new JButton(取消); private User user=LoginFrame.getMainUser();/从LoginFrame中获取mainUser的值 private DBUtil dbUtil=new DBUtil(); ModifyPassIFrame() this.setSize(320, 300); this.setLocation(240, 150); this.setClosable(true); this.setIconifiable(tr
45、ue); this.setTitle(修改密码); Container cont=this.getContentPane(); cont.setLayout(null); lboldPassword.setBounds(50, 50, 60, 25); txtoldPassword.setBounds(120, 50, 120, 25); cont.add(lboldPassword); cont.add(txtoldPassword); lbnewPassword.setBounds(50, 85, 60, 25); txtnewPassword.setBounds(120, 85, 120
46、, 25); cont.add(lbnewPassword); cont.add(txtnewPassword); lbconfirmPassword.setBounds(50, 120, 60, 25); txtconfirmPassword.setBounds(120, 120, 120, 25); cont.add(lbconfirmPassword); cont.add(txtconfirmPassword); btnModify.setBounds(85, 190, 60, 25);btnCancel.setBounds(180, 190, 60, 25);btnModify.add
47、ActionListener(new ModifyPasswordAction();cont.add(btnModify);cont.add(btnCancel); this.setVisible(true); private class ModifyPasswordAction implements ActionListenerpublic void actionPerformed(ActionEvent e) String oldPassword=txtoldPassword.getText().trim();String newPassword=txtnewPassword.getTex
48、t().trim();String confirmPassword=txtconfirmPassword.getText().trim();if(StringUtil.isEmpty(oldPassword)JOptionPane.showMessageDialog(null,旧密码不能为空!);txtoldPassword.requestFocus();return ;if(StringUtil.isEmpty(newPassword)JOptionPane.showMessageDialog(null,新密码不能为空!);txtnewPassword.requestFocus();retu
49、rn ;if(StringUtil.isEmpty(confirmPassword)JOptionPane.showMessageDialog(null,确认密码不能为空!);txtconfirmPassword.requestFocus();return ;if(oldPassword.equals(user.getPassword()if(newPassword.equals(confirmPassword)Connection conn=dbUtil.getConn();User passUser=new User();passUser.setUserId(user.getUserId(
50、);passUser.setPassword(newPassword);int i=new UserDao().modifyPassword(conn,passUser);if(i0)JOptionPane.showMessageDialog(null,密码修改成功!);txtoldPassword.setText();txtnewPassword.setText();txtconfirmPassword.setText();user.setPassword(newPassword);elseJOptionPane.showMessageDialog(null,两次密码输入不一致!);txtn
51、ewPassword.setText();txtconfirmPassword.setText();txtnewPassword.requestFocus();elseJOptionPane.showMessageDialog(null,旧密码输入不正确!);txtoldPassword.setText();txtoldPassword.requestFocus(); (3)退出系统当单击退出系统,该系统就会直接退出,相应的代码如下:private class ExitSystemAction implements ActionListener public void actionPerfor
52、med(ActionEvent arg0) System.exit(0); 5.2.2人员管理功能(1)人员信息录入单击人员信息录入,系统会跳出人员信息录入窗口,程序运行结果如图5.4所示:图5.4 人员信息录入窗体运行结果当用户单击录入按钮,则信息则会添加到数据库的nformation表中,当单击取消按钮,则文本框中的内容全部为空,可以重新输入。相应的代码如下:人员信息录入代码:package com.zky.www.view;public class Addpeople extends JInternalFrame private JLabel lbTip = new JLabel(社团人
53、员信息录入,JLabel.CENTER);private JLabel name = new JLabel(姓名:);private JTextField inputName = new JTextField();private JLabel sex = new JLabel(性别:);private ButtonGroup group=new ButtonGroup();private JRadioButton JRB1=new JRadioButton(男, false);private JRadioButton JRB2=new JRadioButton(女, false);privat
54、e JLabel brithday=new JLabel(出生日期:);private Choice choiceOne=new Choice();private Choice choiceTwo=new Choice();private Choice choiceThree=new Choice();private JLabel address=new JLabel(家庭住址:);private JTextField inputAdress=new JTextField();private JLabel year=new JLabel(年);private JLabel month=new
55、JLabel(月);private JLabel day=new JLabel(日);private JLabel tel=new JLabel(联系电话:);private JTextField inputTel=new JTextField();private JLabel organization=new JLabel(所在社团:);private Choice choiceFour=new Choice();private JLabel position=new JLabel(担任职务:);private Choice choiceFive=new Choice();private Button btnAdd=new Bu
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。