收藏 分销(赏)

大学生社团信息管理系统.docx

上传人:精*** 文档编号:3058699 上传时间:2024-06-14 格式:DOCX 页数:49 大小:1.32MB 下载积分:14 金币
下载 相关
大学生社团信息管理系统.docx_第1页
第1页 / 共49页
大学生社团信息管理系统.docx_第2页
第2页 / 共49页


点击查看更多>>
资源描述
郑州科技学院 java课程设计 设计(论文)题目: 大学生社团信息管理系统 所 在 院: 信息工程学院 专 业 班 级: 14通信工程2班 学 生 姓 名: 赵创 学 号: 201451050 指 导 教 师: 曾毅 2017年3月6日 郑州科技学院 Java课程设计任务书 专业 14通信工程 班级 2班 学号 201451050 姓名 赵创 一、设计题目: 大学生社团信息管理系统的设计 二、设计任务与要求 任务: 利用所学的Java知识,在图书馆查阅各种相关的书籍和个类杂志报刊以及利用互联网搜索到详尽的补充资料,来设计一个简单的大学生社团信息管理系统。 要求:了解软件eclipse和数据库的基本知识,结合自己所学的Java知识,来设计一个系统,此系统能够满足对社团人员信息的管理。 三、参考文献 [1]<<数据库系统/21世纪全国高职高专计算机应用专业规划教材>>,作者:申莉莉编,-出版社:清华大学 [2]<<管理信息系统/面向21世纪课程教材>>,作者:薛华成编,-出版社:清华大学,2004.3 [3]<< SQL SERVER 典型网站建设案例>>,宇峰编著,-北京:清华大学出版社,2006.1 [4]<<需求分析与系统设计/软件工程技术丛书>>,作者:麦沙塞克著//金芝译,-出版社:机械工业 [5]<<系统分析与设计(需求分析系列)/软件工程技术丛书>>,作者:(美)萨茨辛格等著//朱群雄等译,-出版社:机械工业 [6] <<eclipse中文版入门与提高/软件入门与提高丛书>>,作者:王成辉编,-出版社:清华大学,2002 四、设计时间 2 016 年 8 月 31 日至 2016 年 9 月 9 日 指导教师签名: 年 月 日 中 文 摘 要 利用网络和数据库技术,结合目前硬件价格普遍下跌与宽带网大力建设的有利优势,应用eclipse软件和采用MySQL数据库系统组件来构成的应用服务系统,本文开发了大学生社团管理系统这一程序。它运用方便、操作简单,效率很高。主要提供了对学生社团的管理平台。 关键词: 学生社团,eclipse,信息系统,SQL server 目 录 1项目设计思路 1 1.1功能阐述 1 1.2系统预览 1 1.3功能结构 3 1.4文件组织结构 3 2数据库设计 4 2.1数据库设计 4 2.2数据表的设计 4 3公共类设计 5 3.1连接数据库 5 3.2判断输入是否为空 6 4登录模块设计 8 4.1登录模块概述 8 4.2实现带背景的窗体 8 4.3登录模块实现过程 10 5主窗口设计 15 5.1主窗口概述 15 5.2主窗体实现过程 15 5.2.1系统维护功能 15 5.2.2人员管理功能 25 参考文献 45 1项目设计思路 1.1功能阐述 大学生社团信息管理系统是一款辅助人员信息管理的实用性项目,根据社团的日常管理需要,大学生社团信息管理系统包括系统维护、人员管理两大模块。其中,系统维护包括添加用户、修改密码、退出系统。人员管理包括人员信息的录入、人员信息的维护,在人员信息维护中,可以实现人员信息的查询与修改。 上多种功能之间相互联系,可以满足用户的基本需求。 1.2系统预览 大学生社团信息管理系统有多个窗口组成,其中包括系统不可缺少的登录窗口,项目的主窗口,功能模块的内部窗口等。系统登录窗口效果如图1.1所示: 图1.1 大学生社团信息管理系统登录窗口 当用户输入合法的用户名的密码后,单机登录按钮,即可进入系统主窗口,运行结果如图1.2所示: 图1.2 大学生社团信息管理系统主窗口 本程序的主窗口中提供了进入各功能模块的按钮,通过单击这些按钮,即可进入各子模块中。各个子功能功能模块还提供了查询、修改和添加相关信息的操作,例如添加社团人员信息窗口运行的结果如图1.3所示: 图1.3 社团人员信息录入窗体 1.3功能结构 人员信息维护 人员信息录入 退出系统 修改密码 添加用户 人员管理 系统维护 大学生社团信息管理系统 大学生社团信息管理系统是辅助人员信息管理而设计的,本系统的功能结构如图1.4所示: 图1.4 系统功能结构图 1.4文件组织结构 大学生社团信息管理系统的根目录是大学生社团管理系统,文件组织结构图如图1.5所示。 图1.5 大学生社团信息管理系统的文件组织结构图 2数据库设计 2.1数据库设计 大学生社团信息管理系统采用的是SQL Server 2005数据库,数据库命名为organization,包括的数据表为information和user,表user主要用来记录用户名和密码,用于系统的登录。表information主要用来记录大学生社团人员的信息。 2.2数据表的设计 数据表设计是一个非常重要的环节,下面对系统中的数据表的结构进行分析。 1 user(登录信息表) 登录基本信息表包括了登录人员的用户名、密码,数据字段设计如表2.1所示: 表2.1 user表 字段 类型 额外 说明 userId int 自动编号 主键 username varchar 用户名 userpassword varchar 密码 2 information(社团人员信息表) 社团人员信息表中保存了人员的姓名、性别、出生日期、家庭住址、联系电话、所在社团、职务等详细信息,数据表字段设计如表2.2所示: 表2.2 information表 字段 类型 额外 说明 Id int 自动编号 主键 name varchar 姓名 sex varchar 性别 birth varchar 出生日期 address varchar 家庭住址 tel varchar 联系电话 organization varchar 所在社团 position varchar 职务 3公共类设计 3.1连接数据库 任何系统的设计都离不开数据库,每一步数据库操作都需要与数据库建立连接,为了增加代码的重要性,可以将连接数据库的相关代码保存在一个类中,以便随时调用。创建类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:3306/organization?useUnicode=true&characterEncoding=UTF-8"; private String username="root"; private String password="123"; private Connection conn=null; static{ try { Class.forName(driverName); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public Connection getConn() { try { conn=DriverManager.getConnection(URL,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判断输入是否为空 判断文本输入框是否为空,因此在这里建立了一个公共类StringUtil,用来判断,具体代码如下: package com.zky.www.util; public class StringUtil { public static boolean isEmpty(String str) { if("".equals(str)||null==str) { return true; }else { return false; } } public static boolean isNotEmpty(String str) { if(!"".equals(str)&&null!=str) { return true; }else { return false; } } } 4登录模块设计 4.1登录模块概述 运行程序,首先进入系统登录窗口。为了使窗体中的各个组件放得更加随意美观,因此本次系统设计采用了绝对布局方式,并在窗体中添加了背景图片,运行结果可以参照图1.1. 4.2实现带背景的窗体 在创建窗体时,需要向窗体中添加面板,然后在面板中添加各种组件。Swing中代表面板组件的类为JPanel,该类是以灰色为背景,并且没有任何图片,这样就不能达到很好的美观效果。因此该登录窗口所运用的就是面板的叠加,把图片添加到了JLabel中,然后把JLabel添加到面板中,并且带背景图片的面板放在了最低层,并且该面板透明度设置为不透明,这样就可以实现带背景图片的登录窗口,具体代码如下: package com.zky.www.view; public class LoginFrame extends JFrame{ private 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=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("picture\\t019cd859698956305e.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("黑体",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, 100, 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)); 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); //可见性 } 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,首先创建与数据表对应的JaveBeen类User,该类中属性与数据表中字段一一对应,并包含了属性的get与set方法,具体代码如下: package com.zky.www.model; public class User {//javabean private 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 = password; } 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 username) { 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 user) { 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.setUserId(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=?"; try{ PreparedStatement 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(),实现如果用户名输入的用户名与密码合法将转发至系统主窗体;如果用户输入了错误的用户名与密码,则给出相应的提示。具体代码如下: private class LoginAction implements ActionListener { public 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(password)) { 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); }else{ JOptionPane.showMessageDialog(null, "用户名或密码错误!"); txtUsername.setText(""); txtPassword.setText(""); txtUsername.requestFocus(); } } } (4)在取消按钮的单击事件中,用户名文本框与密码文本框里的内容将设置为空,用空文本代替之前输入的内容。具体的代码如下: private class CancelAction implements ActionListener { public void actionPerformed(ActionEvent arg0) { txtUsername.setText(""); txtPassword.setText(""); txtUsername.requestFocus(); } } 5主窗口设计 5.1主窗口概述 成功登录系统后,即可进入程序的主窗体。在主窗口中添加了菜单栏,在菜单栏中添加菜单,菜单中有包括了二级菜单,主窗口运行结果如图5.1所示。 图5.1 程序主窗体运行结果 5.2主窗体实现过程 5.2.1系统维护功能 (1)添加用户 当单击添加用户,则系统自动跳出添加用户窗口,添加完成以后,对应的数据库中的User表中会添加相应的用户名与密码,此用户名与密码可用于登录该大学生社团信息管理系统的登录。程序运行的结果如图5.2所示,相应的代码如下: 图5.2 添加用户窗体运行结果 添加用户相应代码: package 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; private 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.setContentPane(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.setFont(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.setForeground(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); jContentPane.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.setBounds(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) { inputPassword = 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 ActionListener(){ 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; } 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,Password); int flag=new BookTypeDao().addBookType(bookType); if(flag>0) { JOptionPane.showMessageDialog(null, "添加成功!"); inputName.setText(""); inputPassword.setText(""); inputPasswordTwo.setText(""); inputName.requestFocus(); }else{ JOptionPane.showMessageDialog(null, "添加失败!"); } } else{ JOptionPane.showMessageDialog(null, "两次密码输入不一致,请重新输入!"); inputPassword.setText(""); inputPasswordTwo.setText(""); inputPassword.requestFocus(); return; } } }); } return btnAdd; } private JButton getBtnCancel() { if (btnCancel == null) { btnCancel = new JButton(); btnCan
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服