大学生社团信息管理系统.docx
《大学生社团信息管理系统.docx》由会员分享,可在线阅读,更多相关《大学生社团信息管理系统.docx(44页珍藏版)》请在冰豆网上搜索。
![大学生社团信息管理系统.docx](https://file1.bdocx.com/fileroot1/2023-1/5/0f7e4180-39db-4e08-9017-2f853ad2df19/0f7e4180-39db-4e08-9017-2f853ad2df191.gif)
大学生社团信息管理系统
郑州科技学院
java课程设计
设计(论文)题目:
大学生社团信息管理系统
所在院:
信息工程学院
专业班级:
14通信工程2班
学生姓名:
赵创
学号:
201451050
指导教师:
曾毅
2017年3月6日
郑州科技学院
Java课程设计任务书
专业14通信工程班级2班学号201451050姓名赵创
一、设计题目:
大学生社团信息管理系统的设计
二、设计任务与要求
任务:
利用所学的Java知识,在图书馆查阅各种相关的书籍和个类杂志报刊以及利用互联网搜索到详尽的补充资料,来设计一个简单的大学生社团信息管理系统。
要求:
了解软件eclipse和数据库的基本知识,结合自己所学的Java知识,来设计一个系统,此系统能够满足对社团人员信息的管理。
三、参考文献
[1]<<数据库系统/21世纪全国高职高专计算机应用专业规划教材>>,作者:
申莉莉编,-出版社:
清华大学
[2]<<管理信息系统/面向21世纪课程教材>>,作者:
薛华成编,-出版社:
清华大学,2004.3
[3]<>,宇峰编著,-北京:
清华大学出版社,2006.1
[4]<<需求分析与系统设计/软件工程技术丛书>>,作者:
麦沙塞克著//金芝译,-出版社:
机械工业
[5]<<系统分析与设计(需求分析系列)/软件工程技术丛书>>,作者:
(美)萨茨辛格等著//朱群雄等译,-出版社:
机械工业
[6]<>,作者:
王成辉编,-出版社:
清华大学,2002
四、设计时间
2016年8月31日至2016年9月9日
指导教师签名:
年月日
中文摘要
利用网络和数据库技术,结合目前硬件价格普遍下跌与宽带网大力建设的有利优势,应用eclipse软件和采用MySQL数据库系统组件来构成的应用服务系统,本文开发了大学生社团管理系统这一程序。
它运用方便、操作简单,效率很高。
主要提供了对学生社团的管理平台。
关键词:
学生社团,eclipse,信息系统,SQLserver
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数据库设计
大学生社团信息管理系统采用的是SQLServer2005数据库,数据库命名为organization,包括的数据表为information和user,表user主要用来记录用户名和密码,用于系统的登录。
表information主要用来记录大学生社团人员的信息。
2.2数据表的设计
数据表设计是一个非常重要的环节,下面对系统中的数据表的结构进行分析。
1user(登录信息表)
登录基本信息表包括了登录人员的用户名、密码,数据字段设计如表2.1所示:
表2.1user表
userId
int
自动编号
主键
username
varchar
用户名
userpassword
varchar
密码
2information(社团人员信息表)
社团人员信息表中保存了人员的姓名、性别、出生日期、家庭住址、联系电话、所在社团、职务等详细信息,数据表字段设计如表2.2所示:
表2.2information表
Id
int
自动编号
主键
name
varchar
姓名
sex
varchar
性别
birth
varchar
出生日期
address
varchar
家庭住址
tel
varchar
联系电话
organization
varchar
所在社团
position
varchar
职务
3公共类设计
3.1连接数据库
任何系统的设计都离不开数据库,每一步数据库操作都需要与数据库建立连接,为了增加代码的重要性,可以将连接数据库的相关代码保存在一个类中,以便随时调用。
创建类DBUtil,在该类中加载数据库驱动。
在该类中定义了获取数据库连接方法getcCon(),该方法返回值为Connecttion对象。
具体代码如下:
packagecom.zky.www.util;
importjava.sql.*;
publicclassDBUtil{
privatestaticStringdriverName="com.mysql.jdbc.Driver";
privateStringURL="jdbc:
mysql:
//localhost:
3306/organization?
useUnicode=true&characterEncoding=UTF-8";
privateStringusername="root";
privateStringpassword="123";
privateConnectionconn=null;
static{
try{
Class.forName(driverName);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
}
publicConnectiongetConn()
{
try{
conn=DriverManager.getConnection(URL,username,password);
}catch(SQLExceptione){
e.printStackTrace();
}
returnconn;
}
publicvoidcloseConn(Connectionconn)
{
if(conn!
=null)
{
try{
conn.close();
conn=null;
}catch(SQLExceptione){
e.printStackTrace();
}
}
}
publicstaticvoidmain(String[]args){
newDBUtil().getConn();
System.out.println("链接成功");
}
}
3.2判断输入是否为空
判断文本输入框是否为空,因此在这里建立了一个公共类StringUtil,用来判断,具体代码如下:
packagecom.zky.www.util;
publicclassStringUtil{
publicstaticbooleanisEmpty(Stringstr)
{if("".equals(str)||null==str)
{
returntrue;
}else
{
returnfalse;
}
}
publicstaticbooleanisNotEmpty(Stringstr)
{
if(!
"".equals(str)&&null!
=str)
{
returntrue;
}else
{
returnfalse;
}
}
}
4登录模块设计
4.1登录模块概述
运行程序,首先进入系统登录窗口。
为了使窗体中的各个组件放得更加随意美观,因此本次系统设计采用了绝对布局方式,并在窗体中添加了背景图片,运行结果可以参照图1.1.
4.2实现带背景的窗体
在创建窗体时,需要向窗体中添加面板,然后在面板中添加各种组件。
Swing中代表面板组件的类为JPanel,该类是以灰色为背景,并且没有任何图片,这样就不能达到很好的美观效果。
因此该登录窗口所运用的就是面板的叠加,把图片添加到了JLabel中,然后把JLabel添加到面板中,并且带背景图片的面板放在了最低层,并且该面板透明度设置为不透明,这样就可以实现带背景图片的登录窗口,具体代码如下:
packagecom.zky.www.view;
publicclassLoginFrameextendsJFrame{
privateJLabellbUsername=newJLabel("用户名:
",JLabel.CENTER);//实例变量
privateJTextFieldtxtUsername=newJTextField();
privateJLabellbPassword=newJLabel("密码:
",JLabel.CENTER);
privateJPasswordFieldtxtPassword=newJPasswordField();
privateJButtonbtnLogin=newJButton("登录");
privateJButtonbtnCancel=newJButton("取消");
privateJLabellbTip=newJLabel("大学生社团信息管理系统登录",JLabel.CENTER);
privateDBUtildbUtil=newDBUtil();
privateUserDaouserDao=newUserDao();
privatestaticUsermainUser=null;
LoginFrame()
{
ImageIconbackground=newImageIcon("picture\\t019cd859698956305e.jpg");
JLabelimagLabel=newJLabel(background);
this.setSize(800,600);//设置大小
this.setLocationRelativeTo(null);//放在屏幕中间
this.setResizable(false);//不可改变大小
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭属性
Containercont=this.getContentPane();
cont.setLayout(null);//自定义布局
lbTip.setFont(newFont("黑体",Font.PLAIN,28));
lbTip.setForeground(Color.BLUE);
lbTip.setBounds(0,30,800,100);
cont.add(lbTip);
lbUsername.setBounds(150,200,100,25);
lbUsername.setFont(newFont("宋体",Font.PLAIN,24));
txtUsername.setBounds(280,200,250,28);
cont.add(lbUsername);
cont.add(txtUsername);
lbPassword.setBounds(150,290,100,25);
lbPassword.setFont(newFont("宋体",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(newLoginAction());
btnLogin.setFont(newFont("宋体",Font.PLAIN,20));
btnCancel.addActionListener(newCancelAction());
btnCancel.setFont(newFont("宋体",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);//可见性
}
publicstaticUsergetMainUser(){
returnmainUser;
}
publicstaticvoidsetMainUser(UsermainUser){
LoginFrame.mainUser=mainUser;
}
publicstaticvoidmain(String[]args){
newLoginFrame();
}
}
4.3登录模块实现过程
登录窗口设计十分简单,有一个用户名文本框,一个密码文本框,一个登录按钮和一个取消按钮组成。
下面将实现介绍登录模块的实现过程。
(1)实现用户登录操作的数据表是user,首先创建与数据表对应的JaveBeen类User,该类中属性与数据表中字段一一对应,并包含了属性的get与set方法,具体代码如下:
packagecom.zky.www.model;
publicclassUser{//javabean
privateintuserId;
privateStringusername;
privateStringpassword;
publicUser(intuserId,Stringusername,Stringpassword){
super();
this.userId=userId;
this.username=username;
this.password=password;
}
publicUser(Stringusername,Stringpassword){
super();
this.username=username;
this.password=password;
}
publicUser(){
super();
}
publicintgetUserId(){
returnuserId;
}
publicvoidsetUserId(intuserId){
this.userId=userId;
}
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
}
(2)定义类UserDao,在该类中实现按用户名与密码查询用户的方法getUser(),该方法的返回值为User对象。
具体代码如下:
packagecom.zky.www.dao;
publicclassUserDao{
publicUsercheckLogin(Connectionconn,Useruser)
{
UserresultUser=null;
Stringsql="select*fromuserwhereusername=?
andpassword=?
";
try{
PreparedStatementpstmt=conn.prepareStatement(sql);
pstmt.setString(1,user.getUsername());
pstmt.setString(2,user.getPassword());
ResultSetrs=pstmt.executeQuery();
if(rs.next()){
resultUser=newUser();
resultUser.setUserId(rs.getInt("userId"));
resultUser.setUsername(rs.getString("username"));
resultUser.setPassword(rs.getString("password"));
}
}catch(SQLExceptione){
e.printStackTrace();
}
returnresultUser;
}
publicintmodifyPassword(Connectionconn,UserpassUser){
intflag=-1;
Stringsql="updateusersetpassword=?
whereuserId=?
";
try{
PreparedStatementpstmt=conn.prepareStatement(sql);
pstmt.setString(1,passUser.getPassword());
pstmt.setInt(2,passUser.getUserId());
flag=pstmt.executeUpdate();
}catch(Exceptione)
{
e.printStackTrace();
}
returnflag;
}
}
(3)在登录按钮的单击事件中,调用判断用户是否合法的方法getUser(),实现如果用户名输入的用户名与密码合法将转发至系统主窗体;如果用户输入了错误的用户名与密码,则给出相应的提示。
具体代码如下:
privateclassLoginActionimplementsActionListener
{
publicvoidactionPerformed(ActionEvente){
Stringusername=txtUsername.getText().trim();
Stringpassword=txtPassword.getText().trim();
if(StringUtil.isEmpty(username))
{
JOptionPane.showMessageDialog(null,"用户名不能为空!
");
return;
}
if(StringUtil.isEmpty(password))
{
JOptionPane.showMessageDialog(null,"密码不能为空!
");
return;
}
Useruser=newUser(username,password);
Connectionconn=dbUtil.getConn();
mainUser=userDao.checkLogin(conn,user);
dbUtil.closeConn(conn);//关闭连接
if(mainUser!
=null)
{
MainFramemainFrame=newMainFrame();
LoginFrame.this.setVisible(false);
}else{
JOptionPane.showMessageDialog(null,"用户名或密码错误!
");
txtUsername.setText("");
txtPassword.setText("");
txtUsername.requestFocus();
}
}
}
(4)在取消按钮的单击事件中,用户名文本框与密码文本框里的内容将设置为空,用空文本代替之前输入的内容。
具体的代码如下:
privateclassCancelActionimplementsActionListener
{
publicvoidactionPerformed(ActionEventarg0){
txtUsername.setText("");
txtPassword.setText("");
txtUsername.requestFocus();
}
}
5主窗口设计
5.1主窗口概述
成功登录系统后,即可进入程序的主窗体。
在主窗口中添加了菜单栏,在菜单栏中添加菜单,菜单中有包括了二级菜单,主窗口运行结果如图5.1所示。
图5.1程序主窗体运行结果
5.2主窗体实现过程
5.2.1系统维护功能
(1)添加用户
当单击