数据库课程设计java学生学籍信息管理系统.docx
《数据库课程设计java学生学籍信息管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计java学生学籍信息管理系统.docx(43页珍藏版)》请在冰豆网上搜索。
数据库课程设计java学生学籍信息管理系统
1引言
学生学籍信息管理系统是一个教育单位不可缺少的部分。
在现代信息技术的基础上,随着人类对各种工程研究成果的逐步推广应用,对学生信息的查询与管理不再只局限于纸质档案文件,学生管理信息化大大地提高了工作效率,给教育机构带来了极大的便利。
尤其是在学校里,要处理大量的学生数据。
作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点。
例如:
检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。
建立学生学籍信息管理系统,采用计算机对学生信息进行管理,进一步提高办学效益和现代化水平。
帮助广大教师提高工作效率,实现学生信息管理工作流程的系统化、规范化和自动化。
毋庸置疑,切实有效地把计算机管理引入学校学生成绩管理中,对于促进学校管理制度,提高学校教学质量与办学水平有着显著意义。
2需求分析
学生信息管理系统是应对学生人数增多、信息量增大的问题,实现管理的现代化、网络化,提高信息管理效率而开发的。
(1)信息要求:
用户能够查找到有关学生的所有相关信息包括学生基本信息还有相关老师的信息
(2)处理要求:
当信息发生变化时,一些信息能够自行修改而不造成插入删除错误。
(3)完整性要求:
①.各种信息记录的完整性,信息记录内容不能为空;②.各种数据间相互的联系的正确性;③相同的数据在不同记录中的一致性。
3分析和设计
3.1系统分析及设计思路
用户登录:
操作员可以分为两种,一种是管理员,一种是普通用户。
两者的权限是不一样的,所以在通过不同身份进入到系统里面会出现不同的操作界面。
其中管理员多了添加、修改、删除操作,还有就是用户管理操作;而一般的用户只有查看和修改自己密码的权限。
查看当前信息:
主要是通过对数据库的访问,查看当前数据库中的信息是否完整,然后才能进行其它操作。
这一功能是普通用户和管理员都有的权限,所以两个方法可以合二为一,而不用去分别写了。
查看的信息包括:
学生信息和班级信息。
管理员还包括一个用户信息查询。
当然也可以对个别学生通过不同的查找方式来查看对应学生的信息和班级信息。
修改密码:
管理员可能通过不同的方法对自己的密码和其它所有用户的密码进行修改。
而普通用户只能通过此功能修改自己的密码。
用户管理:
管理员特权。
其中包括:
创建用户、删除用户、修改用户密码等。
通过对已经用户的查看,如果有必要创建一个新用户的话就可以通过此方法来创建。
当然用户名相同的不能再次创建。
如果有用户不再使用此系统,为保证安全性可以尽快将其删除。
而修改密码是和上一个方法联系在一起的。
插入操作:
管理员特权!
在系统之初,数据库里面可能包含太少的学生信息和班级信息。
而管理员则可以此方法向数据库中添加数据。
其中包括添加学生信息和班级信息。
删除操作:
管理员特权!
如果系统用的时间比较长的话,那么学生信息和班级信息不可能一直不变。
如果出现了学生离校或者班级编排方式不同,则有可能出现多余的信息,此时可以通过此方法将多余的信息删除掉。
其中包括删除学生信息和班级信息。
修改操作:
管理员特权!
在管理员添加信息的时候,出错是难以避免的,而有时候一个学生的信息只是错了个班级。
如果将其删除然后再重新添加费时又费力。
相反可以通过此方法对一条记录中的个别错误进行修改。
这样可以节约很多添加和删除操作。
其中包括修改学生信息和班级信息。
主函数:
主要用于整体框架的构建。
并通过输入说明将方法分解开来,因此,用户可以完成准确的操作。
3.2主要表的设计
此系统包括三个表:
学生学籍信息表(图4-1)、班级信息表(图4-2)、用户表(图4-3)
图4-1
图4-2
图4-3
3.3学生学籍信息管理系统流程图(图4-4)
图4-4
3.4数据库关系E-R图(图4-5)
图4-5
4、详细设计
4.1主菜单设计(图5-1、5-2)
图5-1图5-2
4.2函数设计及系统功能描述
(1)publicstaticvoidlog_in(Stringname,Stringpwd):
用户登录验证。
通过传入用户输入的用户名和密码与数据库中的users表中的用户名和密码一一对照。
如果用户名和密码在users表中,则登录成功。
否则登录失败。
并且失败次数不得超过三次。
超过三次会自动退出系统。
同时,如果用户名是Administrator,将标志位flag设为true。
用于后面登录界面的用户的区别。
(2)publicstaticvoidstudent_watch():
查看当前学生信息。
直接连接数据库。
将数据库中的student表里面的内容全部输出到界面上。
(3)publicstaticvoidchange_secret():
修改密码。
用户和管理员均可使用。
中间有重复输入新密码并校对两次输入的密码是否相同。
(4)publicstaticvoidadmin_watch_users():
查看当前用户信息,管理员特权。
直接连接数据库将数据库中的users表里面的内容全部输出到界面上。
(7)publicstaticvoidadmin_create_user():
创建新用户,管理员特权。
如果有新的用户要求创建用户名,管理员可以通过此方法创建用户需要的账号。
(6)publicstaticvoidadmin_delete_user():
删除不用的用户名和密码,管理员特权。
(7)publicstaticvoidadmin_student_insert():
插入学生信息,管理员特权。
在系统之初,需要向数据库中添加许多学生信息。
管理员可以通过此方法完成相应的功能。
(8)publicstaticvoidadmin_change():
修改学生信息,管理员特权。
可以对特定学生的各样属性进行修改。
(9)publicstaticvoidadmin_student_delete()throwsException:
删除学生信息,管理员特权。
对无用的学生信息进删除。
(10)publicstaticvoidclass_watch()throwsException:
查看班级信息,公用功能。
通过连接数据库,将数据库中class表输出到界面。
(11)publicstaticvoidadmin_class_change():
修改班级,管理员特权。
可以对班级特定的属性进行修改。
(12)publicstaticvoidstudent_search():
查找学生,公用功能方法。
可以通过学生的各个属性查找特定的学生。
然后输出该学生的信息。
(13)publicstaticvoidmain(String[]args):
主方法,整个程序的入口。
完成不同方法的正常调用。
5、课程设计总结
5.1运行结果如下图所示:
(1)查看学生信息(图5-1)
图5-1
(2)插入学生信息(图5-2)
图5-2
(3)查看班级信息(图5-3)
图5-3
(4)查找特定学生信息(图5-4)
图5-4
(7)用户操作—删除用户(图5-5)
图5-5
5.2、设计总结
通过此次课程设计,掌握到了数据库系统的开发方法。
同时也加深了对刚刚学习的JAVA的印象。
整个代码在写的过程中出现了很多问题。
有的实在解决不了的问题,就去问教我们JAVA的柳小文老师,老师也非常乐意帮助我解决一些困难。
有的时候不懂的问题就去上网搜索答案,或者自己去看书。
因为那样可能用了一上午的时间还不如老师的一句话有用。
对这一点我颇有感触。
记得书上面只教会了我插入已经给出的内容,但是如果让用户输入要插入的内容,则花了我很长一段时间去搞明白。
后来实在找不到解决办法。
只能在实验课上问老师了。
结果老师花了不到十分钟的时间,不仅给我讲了如何实现插入用户输入的内容。
而且还给我讲到了连接数据库的实质以及如何设置数据库的安全性、添加数据库用户等等。
而这些之前我只是会把代码抄下来,并没能完全理解。
此次课程设计结束之后,我还意犹未尽,因为从中感觉到了写代码的趣味。
于是,我就开始想方设法找点小的应用程序去写。
因为这样的学习方法是最快也是最有效的方式。
比老师上课讲要好的多。
而且大学生也应该培养自己的动手能力。
而动手能力只能来自于自己从头到尾的去写一个不大的应用程序。
了解整个创作的一个大体思路,在写的过程中还要不断地去请教我们的老师。
因为他们对实际应用程序的把握比我们要强的多。
当看到自己写这个1000行的JAVA程序能够很顺畅的运行的时候,心里是无比的高兴。
也许其它人看到我这个只能在DOS下运行的程序,感觉非常的不美观;也许他们从网上下到的东西比我这好看的多。
但是,我想,从中得到的快乐肯定不可同日而语。
虽然现在网络很发达,很多东西都能在网上找的到,但是要从中真正学到东西,才能发挥网络的真正作用。
像有的同学把源代码下下来后,跑过来问我数据源怎么创建。
当然搞的我相当无语。
当然,学无止境,不能因为这么一点小的成就就止步不前。
前路很漫长,但我相信只要自己肯用心去学习,Nothingisimpossible!
参考文献
[1]王珊,萨师煊.数据库系统概论[M].北京:
高等教育出版社,2007.
[2]Java语言程序设计北京:
清华大学出版社,2005.
[3]SQLServer2000实验指导(第2版)北京:
清华大学出版社,2008.
[4]Oracle10g数据库基础教程北京:
电子工业出版社,2012
[5]JavaPramming北京:
清华大学出版社,2010
致谢
感谢我们的指导老师柳小文老师,谢谢她在我们的课程设计过程中提出了指导性的方案和架构,并指引我们阅读相关的资料和书籍,使我们在不熟悉的领域中仍能迅速掌握新的方法和技术。
同时也感谢校领导给我们这次难得的锻炼机会,让我们能更好的理解和实践Oracle数据库,让我们对数据库有了更深刻的认知,对已学知识有了更进一步的巩固。
总之,通过这次课程设计,我获益良多。
附源程序
importjava.util.Scanner;
importjava.sql.*;
publicclassStudent
{
staticbooleanflag;//标记是否为管理员
staticinti=0;//限制密码输入次数
staticStringpresent_name;//记录当前用户
publicstaticvoidlog_in(Stringname,Stringpwd)throwsException//用户登录验证
{
StringDBDrive="sun.jdbc.odbc.JdbcOdbcDriver";
StringconnectionStr="jdbc:
odbc:
conn";
Connectioncon=null;
Statementstmt=null;
ResultSetrs=null;
Class.forName(DBDrive);
con=DriverManager.getConnection(connectionStr,"sa","sa");
stmt=con.createStatement();
rs=stmt.executeQuery("Select*Fromuserswhereusername='"+name+"'andpassword='"+pwd+"'");
if(rs.next())
{
System.out.println("登录成功!
");
}
else
{//设置三秒后关闭程序
i++;
if(i==3)
{
intj;
System.out.println("登录错误次数已经三次。
系统将在三秒后关闭!
");
for(j=0;j<3;j++)
{
Thread.sleep(1000);
System.out.println((3-j));
}
if(j==3)
{
System.exit(0);
}
}
else
{
System.out.println("您的用户名或密码不正确!
请重新登录!
");
System.out.println("您还有"+(3-i)+"次机会");
Scannerreader=newScanner(System.in);
System.out.println("请输入您的用户名:
");
Stringusername=reader.nextLine();
System.out.println("请输入您的密码:
");
Stringpassword=reader.nextLine();
log_in(username,password);
}
}
if(name.equals("Administrator"))
{
flag=true;//设个管理员的标志位
}
else
{
flag=false;
}
}
publicstaticvoidstudent_watch()throwsException//当前学生信息
{
StringDBDrive="sun.jdbc.odbc.JdbcOdbcDriver";
StringconnectionStr="jdbc:
odbc:
conn";
Connectioncon=null;
Statementstmt=null;
ResultSetrs=null;
Class.forName(DBDrive);
con=DriverManager.getConnection(connectionStr,"sa","sa");
stmt=con.createStatement();
rs=stmt.executeQuery("Select*Fromstudent");
while(rs.next())
{
System.out.print(rs.getString("sno")+"");
System.out.print(rs.getString("sname")+"");
System.out.print(rs.getString("ssex")+"");
System.out.print(rs.getInt("sclass")+"");
System.out.print(rs.getInt("sage")+"");
System.out.println(rs.getString("sdept")+"");
}
}
publicstaticvoidchange_secret()throwsException//修改密码_通用(出现点问题。
密码修改不了!
?
?
?
)
{
StringDBDrive="sun.jdbc.odbc.JdbcOdbcDriver";
StringconnectionStr="jdbc:
odbc:
conn";
Connectioncon=null;
Statementstmt=null;
/*ResultSetrs=null;*/
Class.forName(DBDrive);
con=DriverManager.getConnection(connectionStr,"sa","sa");
stmt=con.createStatement();
System.out.println("您想把密码改为:
");
Scannerreader=newScanner(System.in);
Stringpwd1=reader.nextLine();
System.out.println("请重复新密码:
");
Stringpwd2=reader.nextLine();
if(pwd1.equals(pwd2))
{
Stringsql="updateuserssetpassword='"+pwd1+"'whereusername='"+present_name+"'";
try
{
stmt.executeQuery(sql);
}
catch(Exceptione)
{
;
}
System.out.println("密码修改成功!
下次登录请用新的密码!
");
/*Stringsql1="select*fromuserswhereusername='"+present_name+"'";
rs=stmt.executeQuery(sql1);
System.out.println(rs.getString("password"));
if(pwd1.equals(rs.getString("password")))
{
System.out.println("密码修改成功!
下次登录请用新的密码!
");
}
*/
}
else
{
System.out.println("两次密码输入不相同。
无法完成修改!
");
}
}
publicstaticvoidadmin_watch_users()throwsException//查看当前用户信息_管理员
{
StringDBDrive="sun.jdbc.odbc.JdbcOdbcDriver";
StringconnectionStr="jdbc:
odbc:
conn";
Connectioncon=null;
Statementstmt=null;
ResultSetrs=null;
Class.forName(DBDrive);
con=DriverManager.getConnection(connectionStr,"sa","sa");
stmt=con.createStatement();
rs=stmt.executeQuery("Select*Fromusers");
while(rs.next())
{
System.out.println(rs.getString("username")+"");
}
}
publicstaticvoidadmin_create_user()throwsException//创建用户_管理员
{
StringDBDrive="sun.jdbc.odbc.JdbcOdbcDriver";
StringconnectionStr="jdbc:
odbc:
conn";
Connectioncon=null;
Statementstmt=null;
ResultSetrs=null;
Class.forName(DBDrive);
con=DriverManager.getConnection(connectionStr,"sa","sa");
stmt=con.createStatement();
booleana=true;
while(a)
{
Scannerscr=newScanner(System.in);
System.out.println("请输入用户名:
");
Stringusername=scr.nextLine();
Stringstrsql=("select*fromuserswhereusername='"+username+"'");
rs=stmt.executeQuery(strsql);
if(rs.next())
{
a=false;
System.out.println("输入有误!
此用户名已经存在!
");
break;
}
System.out.println("请输入密码:
");
Scannerreader=newScanner(System.in);
Stringpwd1=reader.nextLine();
System.out.println("请重复密码:
");
Stringpwd2=reader.nextLine();
if(pwd1.equals(pwd2))
{
Stringsql="insertintousersvalues(?
?
)";
PreparedStatementpstmt=con.prepareStatement(sql);
pstmt.setString(1,username);
pstmt.setString(2,pwd1);
intintTemp=pstmt.executeUpdate();
if(intTemp!
=0)
{
a=false;
System.out.println("用户创建成功!
");
}
}
else
{
System.out.println("两次密码输入不相同。
无法完成创建!
");
}
}
}
publicstaticvoidadmin_delete_user()throwsException//删除用户_管理员
{
StringDBDrive="sun.jdbc.odbc.JdbcOdbcDriver";
StringconnectionStr="jdbc:
odbc:
conn";
Connectioncon=null;
Statementstmt=null;
Class.forName(DBDrive);
con=DriverManager.getConnection(connectionStr,"sa","sa");
stmt=con.createStatement();
System.out.println("请输入所要删除用户