Java课程设计学生通讯录管理系统.docx
《Java课程设计学生通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《Java课程设计学生通讯录管理系统.docx(48页珍藏版)》请在冰点文库上搜索。
Java课程设计学生通讯录管理系统
苏州科技学院电子信息实验中心
面向对象技术课程设计 报告
--学生通讯录管理系统
专业年级
计算机科学与技术2014
班 级
计算机1421
学 号
1430107132
姓 名
胡耀文
成 绩
指导教师
张宗杰
2016年4月
一
1.引言
1.1项目的名称
学生通讯录管理系统
1.2项目背景和目标
学生通讯录管理系统主要对在校学生的基本信息进行管理,对教师用户提供查询信息、增添信息、删除信息等操作功能;对学生用户提供基本信息查询功能。
我们的目标就是为该系统提供后台连接数据库程序设计以及前台用户界面设
1.3项目的可行性研究
设计此系统需要java面向对象编程基础,数据库应用知识以及功能分析。
根据目前所开设的课程,学生已经具备这样的知识,有能力综合java编程知识和数据库应用知识做出一个这样的学生通讯录管理系统
二、需求分析
2.1系统概述
此系统提供给教师用户和学生用户。
教师登陆后可以对学生基本信息表进行查看、增添新记录、删除记录等操作。
学生登陆后能查询自己的信息。
2.2系统运行环境
Java运行在eclipse软件上,数据库用mysql数据库
2.3功能需求描述
学生通讯录管理系统要面对教师和学生用户。
对于教师,需要查询全部学生的基本信息,并且可以对其进行修改。
对于学生,需要查询自己的基本信息。
为了保护学生基本信息隐私,每位学生登录系统后只能查询自己的信息,而无法看到别人的信息。
三、系统设计
3.1开发与设计的总体思想
教师方面:
教师通过自己的用户名和密码登录后,进入教师主界面,在这个主界面里,可以选择要操作的类别,即查询功能还是修改功能。
在查询功能里面,可以选择是查询学生基本信息。
在修改功能里面,包括对学生基本信息表进行增加、删除记录。
学生方面:
学生通过自己的用户名和密码登录此系统后,可以查询自己的信息。
3.2系统模块结构图
学生通讯录管理系统
学生登录
教师登录
教师操作界面
查询
查询
修改
学生基本信息
添加信息
删除信息
3.3数据库结构设计
为了支持此学生通讯录管理系统,创建数据库studencontacts。
在这个数据库中包含四个表:
student表,teacher表,information表。
截图如下:
在student表中,有两个属性列,分别为:
sname(学生姓名姓名),password(登录密码)其基本数据类型分别为:
char,char。
当学生登录时,从此表中获取数据。
截图如下:
在teacher(教师登陆)表中,有两个属性列,分别为:
tname(教师姓名),password(登录密码)。
其基本数据类型分别为:
char,char。
当教师用户登陆此系统时,从该表获取数据。
截图如下:
在information(学生信息)表中,有五个属性列,分别为:
snum(学号),sname(学生姓名),phonumber(手机号码),sex(性别),dept(系别)。
其基本数据类型分别为:
int,char,char,char,char。
当查询学生信息时,从此表获取数据。
截图如下:
3.4模块设计
总主界面登陆后,可以选择用户,是学生用户或者教师用户。
如果选择学生用户,则进入学生登录界面,在这个界面上输入学生姓名和用户密码。
输入后单击“查询”按钮,若密码正确,这显示该学生本人信息,若密码不正确,这提示密码错误。
输入后单击“修改”按钮,跳转到用户修改密码界面进行修改,单击“注册”按钮,跳到用户注册页面进行注册。
如果选择教师用户,则进入教师登陆界面,在这个界面上输入教师姓名和用户密码,输入后单击“登录”按钮,则进入教师主界面。
在教师主界面可以选择进行查询操作还是修改操作。
在查询操作中包含查询学生基本信息。
若要查询学生基本信息,点击菜单项则进入学生基本信息检索界面,在此界面的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索“姓名”字段时,要键入某个学生姓名。
输入后,单击“查询该生信息”按钮,则开始数据库查询。
单击“浏览学生信息”按钮,则查看所有学生的信息。
如果数据库检索到所需信息,这生成列表显示检索结构,如果没有所需信息,则列表中的内容为空。
如果教师要进行修改操作,则在教师主界面上选择修改菜单项,在此项中,选择要修改的具体内容,总共有两项修改操作:
增加新生信息,删除毕业生信息(这两个是对学生基本信息表的操作)。
在增加信息操作中,按照标签提示依次输入要增添的记录值,输入完毕后,单击“添加”按钮,若输入成功,则提示成功,若输入失败,则提示失败。
在删除信息操作中,输入要删除信息的学生姓名,单击“删除”按钮,若删除成功,则提示成功,若删除失败则提示失败。
以上就是该学生通讯录管理系统的操作步骤。
3.5系统流程描述
开始
登录
学生登录界面
教师登录
否否
提示密码错误
提示密码错误
是
是
查询学生信息
教师主界面
修改
查询
学生信息
添加信息
删除信息
四、系统实现
本系统保存在studentcontacts包里
其中包含四个包:
connection包,dao包,model包,ui包
1.Connection包中的类:
(1)DBconnection类:
此类设置程序与数据库的连接,通过设置驱动类型和数据源来确定要连接的数据库。
若连接成功,提示:
connectionsuccess,若连接失败,提示:
connectionfailure
DBconnection类源代码:
packageconnection;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
publicclassDBconnection{
publicstaticConnectioncon=null;
publicstaticConnectiongetConnection()
{
try{
StringdbDriver="com.mysql.jdbc.Driver";
Class.forName(dbDriver);
System.out.println("DriverSuceess");
}catch(ClassNotFoundExceptione){
System.out.println("Drivernotfound");
e.printStackTrace();
}
try{
con=DriverManager.getConnection("jdbc:
mysql:
//localhost/studentcontacts","root","12345");
System.out.println("ConnectionSuceess");
}catch(SQLExceptione){
System.out.println("Connetionfailure");
e.printStackTrace();
}
returncon;
}
publicstaticvoidcloseConnection()
{
if(con!
=null)
try{
con.close();
System.out.println("databaseclosesuccess");
}catch(SQLExceptione){
System.out.println("closefailure");
e.printStackTrace();
}
}
}
2.Dao包中的类:
(1)StudentDao类:
此类中有一个方法,student,作用分别是控制学生登陆。
Studentlogin()方法中,有两个参数,分别传给select语句中的sname(学生姓名)和password(登录密码),利用select语句在student表中检索学生登录信息。
若存在此信息,返回true,否则返回false
StudentDao类源代码:
packageDao;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
importconnection.DBconnection;
publicclassStudentDao{
publicbooleanstudent(Stringsname,Stringpassword){
DBconnectiondb=newDBconnection();
Connectioncon=db.getConnection();
booleanisfound=false;
PreparedStatementpst;
try{
pst=con.prepareStatement("select*fromstudentwheresname=?
andpassword=?
");
pst.setString(1,sname);
pst.setString(2,password);
ResultSetrs=pst.executeQuery();
if(rs.next())
isfound=true;
}catch(SQLExceptione){
e.printStackTrace();
}
System.out.println(isfound);
returnisfound;
}
publicstaticvoidmain(String[]args){
newStudentDao();
}
}
}
(2)TeacherDao类:
此类中有一个方法:
queryTeacher,作用是控制教师登陆
queryTeacher()方法中,有两个参数,分别传给select语句中的tname(教师姓名)和password(登陆密码),利用select语句在teacher表中检索教师登陆信息。
若存在此信息,返回true,否则返回false
TeacherDao类源代码:
packageDao;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importconnection.DBconnection;
publicclassTeacherDao{
publicbooleanTeacherlogin(Stringtname,Stringpassword){
DBconnectiondb=newDBconnection();
Connectioncon=db.getConnection();
booleanisfound=false;
PreparedStatementpst;
try{
pst=con.prepareStatement("select*fromteacherwheretname=?
andpassword=?
");
pst.setString(1,tname);
pst.setString(2,password);
ResultSetrs=pst.executeQuery();
if(rs.next())
isfound=true;
}catch(SQLExceptione){
e.printStackTrace();
}
System.out.println(isfound);
returnisfound;
}
}
(3)InformationDao类:
此类中有四个方法,queryInformation,addInformation,deleteInformation,updateInformation,queryInformation1,
作用分别是为教师用户提供查询学生信息,添加信息,删除信息,更新信息;为学生用户提供查询本人信息功能,。
queryInformation()方法中,有一个参数,传给select语句中的sname(学生姓名),利用select语句,查询学生信息表中的内容。
若查询成功,则返回一个ArrayList类的对象lis(表格),否则,异常处理。
addInformation()方法中,有五个参数,分别传给insert语句中的snum(学号),sname(学生姓名),phonumber(手机号码),sex(性别),dept(系别)。
利用insert语句,将这些记录写入information表中。
若插入成功返回true,否则返回false。
updateInformation()方法中,有五个参数,分别传给insert语句中的snum(学号),sname(学生姓名),phonumber(手机号码),sex(性别),dept(系别)。
利用insert语句,将这些记录写入information表中。
若插入成功返回true,否则返回false。
deleteInformation()方法中,有一个参数,传给delete语句中的snum(学生学号),利用delete语句,把information表中相关学生信息删除。
若删除成功,返回true,否则返回false。
queryInformation1()方法中,有一个参数,传给传给select语句中的sname(学生姓名),这个sname的学生用户登录时输入的姓名。
即此类的作用是每个学生登陆只能查看本人信息。
若查询成功,则返回一个ArrayList类的对象lis(表格),否则,异常处理
InformationDao类源代码:
packageDao;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
importui.StudentLoginUI;
importModel.Information;
importconnection.DBconnection;
publicclassInformationDao{
publicArrayListqueryInformation(Stringkey){
ArrayListlis=newArrayList();
Connectioncon=DBconnection.getConnection();
Statementstm;
try{
stm=con.createStatement();
Stringsql="select*frominformationwheresnamelike'%"+key
+"%'";
System.out.println(sql);
ResultSetrs=stm.executeQuery(sql);
while(rs.next()){
Informationinformation=newInformation(rs.getInt
(1),rs.getString
(2),rs
.getString(3),rs.getString(4),rs.getString(5));
lis.add(information);
}
}catch(SQLExceptione){
e.printStackTrace();
}
returnlis;
}
publicArrayListqueryInformation1(Stringkey){
ArrayListlis=newArrayList();
Connectioncon=DBconnection.getConnection();
Statementstm;
try{
stm=con.createStatement();
Stringsql="select*frominformationwheresnamelike'%"+StudentLoginUI.st1
+"%'";
System.out.println(sql);
ResultSetrs=stm.executeQuery(sql);
while(rs.next()){
Informationinformation=newInformation(rs.getInt
(1),rs.getString
(2),rs
.getString(3),rs.getString(4),rs.getString(5));
lis.add(information);
}
}catch(SQLExceptione){
e.printStackTrace();
}
returnlis;
}
publicbooleanaddInformation(intsnum,Stringsname,Stringphonumber,Stringsex,
Stringdept){
Connectioncon=DBconnection.getConnection();
PreparedStatementpst;
try{
pst=con.prepareStatement("insertintoinformationvalues(?
?
?
?
?
)");
pst.setInt(1,snum);
pst.setString(2,sname);
pst.setString(3,phonumber);
pst.setString(4,sex);
pst.setString(5,dept);
intcount=pst.executeUpdate();//返回修改的记录数
if(count==1)
returntrue;
else
returnfalse;
}catch(SQLExceptione){
e.printStackTrace();
}
returnfalse;
}
publicbooleandeleteInformation(Stringkey){
Connectioncon=DBconnection.getConnection();
Statementstm;
try{
stm=con.createStatement();
Stringsql="deletefrominformationwheresnumlike'%"+key+"%'";
System.out.println(sql);
intcount=stm.executeUpdate(sql);
if(count==1)
returntrue;
else
returnfalse;
}catch(SQLExceptione){
e.printStackTrace();
}
returnfalse;
}
publicArrayListupdateInformation(Stringkey){
ArrayListlis=newArrayList();
Connectioncon=DBconnection.getConnection();
Statementstm;
try{
stm=con.createStatement();
Stringsql="select*frominformationwheresnamelike'%"+key+"%'";
System.out.println(sql);
ResultSetrs=stm.executeQuery(sql);
while(rs.next()){
Informationinformation=newInformation(rs.getInt
(1),rs.getString
(2),rs
.getString(3),rs.getString(4),rs.getString(5));
lis.add(information);
}
}catch(SQLExceptione){
e.printStackTrace();
}
returnlis;
}
}
3.model包中的类:
(1)Information类:
此类中有五个成员变量intsnum;Stringsname;Stringphonumber;Stringsex;Stringdept;十个成员方法,分别获取和设置这五个变量,即为information表中五个属性的记录值,均为getXXX()setXXX()方法,还有一个构造方法,用于调用其对象时对成员变量赋值
Information类源代码:
packageModel;
publicclassInformation{
intsnum;
Stringsname;
Stringphonumber;
Stringsex;
Stringd