面向对象程序设计双语设计报告.docx
《面向对象程序设计双语设计报告.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计双语设计报告.docx(42页珍藏版)》请在冰豆网上搜索。
![面向对象程序设计双语设计报告.docx](https://file1.bdocx.com/fileroot1/2023-2/2/0a6e407a-0c91-4d85-b7dd-2e5b1309b8ab/0a6e407a-0c91-4d85-b7dd-2e5b1309b8ab1.gif)
面向对象程序设计双语设计报告
面向对象程序设计(双语)设计报告
一、小说信息管理系统总体设计
1、系统概述
自1949年新中国成立肇始的中国当代小说已经走过了50年的历程。
当代小说可以划分为建国十七年(1949-1966)、文革十年(1966-1976)、新时期(1976-)三个阶段。
随着时间的推移,时代的发展,小说也慢慢的进入了寻常百姓之家,成为了众多的宅男宅女的精神食量。
。
目前中国最大的小说网站是起点中文网,可随着社会的进步,网络科技的升级与进化,各大小说网站也不断的如雨后春笋般冒了出来,那么小说信息管理系统便可以应着小说网站——作者——读者对小说的需求而产生,可以方便快捷的对小说进行增添改查,更好地进行关于小说的信息交流。
。
。
2、实现功能
不同等级小说信息的录入与记录,读者的信息登记,作者所写的小说的信息记录,有关读者阅读频率,阅读章节的情况,小说推荐关注度信息等各种强大的统计报表,另外还提供各类统计查询。
3、功能模块图
二、数据库设计
1、数据库表设计
2、数据库连接程序
(1)数据库(读取)代码:
//获得连接
packagedb;
importjava.sql.*;
importjavax.swing.JOptionPane;
//数据库连接类MySqlConnnection。
通过调用类的静态方法获得数据库连接。
publicabstractclassMySqlConnnection{
//私有空构造方法,保证本类不能够被实例化。
privateMySqlConnnection(){
}
//获得数据库连接
publicstaticConnectiongetConnection(){
Connectionconn=null;
try{
//加载MySQLJDBC驱动程序名称
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//数据库连接参数。
StringserverName="localhost:
1433";//数据库主机名称
Stringmydatabase="小说信息管理系统";//数据库名称
Stringurl="jdbc:
sqlserver:
//"+serverName+";DatabaseName="+mydatabase;
Stringusername="sa";//MySql用户名
Stringpassword="123456";//MySql密码
conn=DriverManager.getConnection(url,username,password);//建立连接
}catch(ClassNotFoundExceptione){
e.printStackTrace();//找不到MySql驱动程序类时,打印异常
}catch(SQLExceptione){
e.printStackTrace();//获得数据库连接发生异常
}
returnconn;
}
//关闭数据库连接
publicstaticvoidcloseConnection(Connectionconn){
if(conn!
=null){//连接是否有效
try{
if(!
conn.isClosed()){//连接是否已关闭
conn.close();//关闭连接
}
}catch(SQLExceptionex1){
ex1.printStackTrace();
}
}
}
//测试连接类
publicstaticvoidmain(String[]args)throwsException{
Connectionconn=MySqlConnnection.getConnection();
Stringresult="";
if(conn==null){
result="获得数据库连接错误.";
}else{
result="正常获得数据库连接."+conn;
}
JOptionPane.showMessageDialog(null,result);
}
}
2数据库管理员的增删改查
packagedb;
importjava.sql.*;
importjava.util.*;
importcom.microsoft.sqlserver.jdbc.SQLServerConnection;
importmybean.Admin;
//实现管理员表Admin的添、删、改、查数据库操作类DBAdmin
publicabstractclassDBAdmin{
//私有空构造方法,保证本类不能够被实例化。
privateDBAdmin(){
}
//添加管理员
publicstaticvoidaddAdmin(mybean.Admina){
Connectionconn=null;
try{
conn=MySqlConnnection.getConnection();//获得数据连接
PreparedStatementps=conn
.prepareStatement("INSERTINTOAdmin(管理员编号,管理员姓名,管理员权限)VALUES(?
?
?
)");
ps.setInt(1,a.get管理员编号());
ps.setString(2,a.get管理员姓名());//入库前进行编码转换
ps.setString(3,a.get管理员权限());//设置第2个占位符的内容
ps.executeUpdate();//执行更新操作
ps.close();
}catch(Exceptionex){
ex.printStackTrace();
}finally{
MySqlConnnection.closeConnection(conn);
}
}
//删除管理员
publicstaticvoiddeleteAdmin(intid){
Connectionconn=null;
try{
conn=MySqlConnnection.getConnection();//获得数据连接
PreparedStatementps=conn
.prepareStatement("DELETEFROMAdminWHERE管理员编号=?
");
ps.setInt(1,id);//设置第1个占位符的内容
ps.executeUpdate();//执行更新操作
ps.close();
}catch(Exceptionex){
ex.printStackTrace();
}finally{
MySqlConnnection.closeConnection(conn);
}
}
//修改管理员
publicstaticvoidupdateAdmin(mybean.Admina){
Connectionconn=null;
try{
conn=MySqlConnnection.getConnection();
StringSql="UPDATEAdminSET管理员姓名=?
管理员权限=?
WHERE管理员编号=?
";
PreparedStatementps=conn.prepareStatement(Sql);
ps.setString(1,a.get管理员姓名());//入库前进行编码转换
ps.setString(2,a.get管理员权限());
ps.setInt(3,a.get管理员编号());//设置第3个占位符的内容
ps.executeUpdate();//执行更新操作
ps.close();
}catch(Exceptionex){
ex.printStackTrace();
}finally{
MySqlConnnection.closeConnection(conn);
}
}
//根据管理员id号查询
publicstaticAdmingetAdmin(intid){
mybean.Admina=null;
Connectionconn=null;
try{
conn=MySqlConnnection.getConnection();//获得数据连接
//建立PreparedStatement用于执行SQL操作
PreparedStatementps=conn
.prepareStatement("SELECT*FROMAdminWHERE管理员编号=?
");
ps.setInt(1,id);//设置第一个占位符的内容
ResultSetrs=ps.executeQuery();//执行查询,返回结果集
if(rs.next()){//因为管理员id是惟一的,所以只返回一个结果既可
a=newmybean.Admin(rs.getInt
(1),rs.getString
(2),
rs.getString(3));
}
ps.close();
}catch(Exceptionex){
ex.printStackTrace();
}finally{
MySqlConnnection.closeConnection(conn);
}
returna;
}
//查询:
登录时,是否表中有该用户,如有,则登录成功
publicstaticbooleanisAdmin(String管理员姓名,String管理员权限){
booleanflag=false;//是否存在该用户的标志
Connectionconn=null;
try{
conn=MySqlConnnection.getConnection();//获得数据连接
PreparedStatementps=conn.prepareStatement(
"SELECT*FROMAdminWHERE管理员姓名=?
AND管理员权限=?
");
ps.setString(1,管理员姓名);
ps.setString(2,管理员权限);
ResultSetrs=ps.executeQuery();//执行查询
if(rs.next()){//若有该用户,则返回真
flag=true;
}
rs.close();
ps.close();
}catch(Exceptionex){
ex.printStackTrace();
}finally{
MySqlConnnection.closeConnection(conn);
}
returnflag;//false:
表示没有该用户;true:
表示有该用户
}
//查询Admin表中的所有记录(管理员),返回迭代器对象
publicstaticIteratorgetAllAdmin(){
Listl=newArrayList();//数组列表类对象,大小可自动增加
Connectionconn=null;
try{
conn=MySqlConnnection.getConnection();//获得数据连接
Statementstmt=conn.createStatement();//建立Statement用于执行SQL操作
ResultSetrs=stmt.executeQuery("SELECT*FROMadmin");//执行查询,返回结果集
Strings=null;//保存Admin表中的第2个字段(管理员姓名)
while(rs.next()){//循环得到所有记录,并添加到数组列表中
s=rs.getString
(2);//转换为中文"GBK"编码的字符串
l.add(newmybean.Admin(rs.getInt
(1),s,rs.getString(3)));
}
stmt.close();
}catch(Exceptionex){
ex.printStackTrace();
}finally{
MySqlConnnection.closeConnection(conn);
}
returnl.iterator();//返回迭代器对象
}
//测试DBAdmin类
publicstaticvoidmain(String[]args){
mybean.Adminadmin=newmybean.Admin(2,"张文帅","S");
DBAdmin.addAdmin(admin);
for(Iteratorit=DBAdmin.getAllAdmin();it.hasNext();){
mybean.Admina1=(mybean.Admin)it.next();
System.out.println(a1.get管理员编号()+"\t"+a1.get管理员姓名()
+"\t"+a1.get管理员权限());
}
//DBAdmin.deleteAdmin(4);
}
}
三、图形界面设计与实现
1、登陆界面
1)数据库的相关信息:
2)连接数据库的登录界面:
2、表的操作界面
3、整个程序框架
四、程序测试
1、物品添加测试添删改查
2、新建用户,测试用户权限
五、结论
经历了这次的的实训,我不仅仅编出了小说管理系统,我更深刻的加深了对java的理解,在编程过程中,老师教会了我做人要规矩,编程更要规矩,每完成一个功能都要去验证,要不然最后只会一团糟你还找不找错在哪里,世界上最可怕的不是你有错误,而是你有错误你却不知道错误,错在哪里,因此我以后会更加严格自己,规矩自己。
六、程序代码:
packagedb;
importjava.sql.*;
importjava.util.*;
importcom.microsoft.sqlserver.jdbc.SQLServerConnection;
importmybean.Admin;
//实现管理员表Admin的添、删、改、查数据库操作类DBAdmin
publicabstractclassDBAdmin{
//私有空构造方法,保证本类不能够被实例化。
privateDBAdmin(){
}
//添加管理员
publicstaticvoidaddAdmin(mybean.Admina){
Connectionconn=null;
try{
conn=MySqlConnnection.getConnection();//获得数据连接
PreparedStatementps=conn
.prepareStatement("INSERTINTOAdmin(管理员编号,管理员姓名,管理员权限)VALUES(?
?
?
)");
ps.setInt(1,a.get管理员编号());
ps.setString(2,a.get管理员姓名());//入库前进行编码转换
ps.setString(3,a.get管理员权限());//设置第2个占位符的内容
ps.executeUpdate();//执行更新操作
ps.close();
}catch(Exceptionex){
ex.printStackTrace();
}finally{
MySqlConnnection.closeConnection(conn);
}
}
//删除管理员
publicstaticvoiddeleteAdmin(intid){
Connectionconn=null;
try{
conn=MySqlConnnection.getConnection();//获得数据连接
PreparedStatementps=conn
.prepareStatement("DELETEFROMAdminWHERE管理员编号=?
");
ps.setInt(1,id);//设置第1个占位符的内容
ps.executeUpdate();//执行更新操作
ps.close();
}catch(Exceptionex){
ex.printStackTrace();
}finally{
MySqlConnnection.closeConnection(conn);
}
}
//修改管理员
publicstaticvoidupdateAdmin(mybean.Admina){
Connectionconn=null;
try{
conn=MySqlConnnection.getConnection();
StringSql="UPDATEAdminSET管理员姓名=?
管理员权限=?
WHERE管理员编号=?
";
PreparedStatementps=conn.prepareStatement(Sql);
ps.setString(1,a.get管理员姓名());//入库前进行编码转换
ps.setString(2,a.get管理员权限());
ps.setInt(3,a.get管理员编号());//设置第3个占位符的内容
ps.executeUpdate();//执行更新操作
ps.close();
}catch(Exceptionex){
ex.printStackTrace();
}finally{
MySqlConnnection.closeConnection(conn);
}
}
//根据管理员id号查询
publicstaticAdmingetAdmin(intid){
mybean.Admina=null;
Connectionconn=null;
try{
conn=MySqlConnnection.getConnection();//获得数据连接
//建立PreparedStatement用于执行SQL操作
PreparedStatementps=conn
.prepareStatement("SELECT*FROMAdminWHERE管理员编号=?
");
ps.setInt(1,id);//设置第一个占位符的内容
ResultSetrs=ps.executeQuery();//执行查询,返回结果集
if(rs.next()){//因为管理员id是惟一的,所以只返回一个结果既可
a=newmybean.Admin(rs.getInt
(1),rs.getString
(2),
rs.getString(3));
}
ps.close();
}catch(Exceptionex){
ex.printStackTrace();
}finally{
MySqlConnnection.closeConnection(conn);
}
returna;
}
//查询:
登录时,是否表中有该用户,如有,则登录成功
publicstaticbooleanisAdmin(String管理员姓名,String管理员权限){
booleanflag=false;//是否存在该用户的标志
Connectionconn=null;
try{
conn=MySqlConnnection.getConnection();//获得数据连接
PreparedStatementps=conn.prepareStatement(
"SELECT*FROMAdminWHERE管理员姓名=?
AND管理员权限=?
");
ps.setString(1,管理员姓名);
ps.setString(2,管理员权限);
ResultSetrs=ps.executeQuery();//执行查询
if(rs.next()){//若有该用户,则返回真
flag=true;
}
rs.close();
ps.close();
}catch(Exceptionex){
ex.printStackTrace();
}finally{
MySqlConnnection.closeConnection(conn);
}
returnflag;//false:
表示没有该用户;true:
表示有该用户
}
//查询Admin表中的所有记录(管理员),返回迭代器对象
publicstaticIteratorgetAllAdmin(){
Listl=newArrayList();//数组列表类对象,大小可自动增加
Connectionconn=null;
try{
conn=MySq