资源描述
南通大学计算机科学与技术学院
《Java 程序设计基础》项目
报告书
设计题目 题库维护系统
专业班级
学生姓名
学 号
指导教师
日 期 2014年6月
目 录
1.课程设计题目 ………………………………………………………3
2.课程设计目的 ………………………………………………………3
3.课程设计要求 ………………………………………………………3
4.课程设计报告内容 …………………………………………………4
4.1 系统主要功能 …………………………………………………4
4.2 系统数据结构清单 ……………………………………………4
4.3 系统代码实现 …………………………………………………4
4.4 系统测试 ………………………………………………………10
4.5系统存在的主要问题及注意事项 ……………………………11
4.6设计总结及体会 ………………………………………………11
5. 参考文献…………………………………………………………11
一、课程设计题目:题库维护系统
二、课程设计目的
1.掌握java面向对象的编程思想。
2.掌握java常用类的使用。
3.掌握java中I/O流的基本操作,通过本课程设计可以对本学期所学知识有一个系统全面的掌握。
三、课程设计要求
(1)系统功能要求
1):系统运行要求在控制台出现如下操作主界面
/********************************************************/
题库维护系统 今天是X月X日...........
请选择相关的操作:
1.添加题目 按键盘字符(a)
2.导入题目 按键盘字符(i)
2.删除题目 按键盘字符(d)
3.显示题目 按键盘字符(L)
/********************************************************/
2):按键a以后,显示:
***********************************************************
添加题目,题库中中已有试题xx条,当前录入第xx条
***********************************************************
请输入题目:
请输入选项A:
请输入选项B:
请输入选项C:
请输入选项D:
输入成功,是否继续输入?(y/n)
输入y,继续,输入n,返回主界面
3)按键i以后,显示:
**********************************************************
请输入需要导入题库文件路径:
按回车后如果导入成功,显示:试题导入成功,共成功导入xx条试题,如果导入失败,则显示导入失败,显示异常信息
4)按键d以后,显示
***********************************************************
删除题目
***********************************************************
请输入所需删除的题号:
删除成功,是否继续删除?(y/n)
输入y,继续,输入n,返回主界面
5)按键l以后,显示所有题目
四、课程设计报告内容
4.1 系统主要功能
4.1.1 功能描述:添加题目,导入题目,删除题目,显示题目
4.1.2 系统功能结构图:
题库维护系统
显示题目
删除题目
导入题目
添加题目
4.2 系统数据结构清单:
public static final String DRIVER_CLASS="com.mysql.jdbc.Driver";
public static final String URL="jdbc:mysql://localhost:3306/dbexercise";
public static final String DATABASE_USER="root";
public static final String DATABSE_PASSWORD="3317";
public static Connection getConnection();
private static String name;
private static Boolean x;
4.3 系统代码实现:
import java.sql.*;
public class ConnectionManager {
public static final String DRIVER_CLASS="com.mysql.jdbc.Driver";
public static final String URL="jdbc:mysql://localhost:3306/dbexercise";
public static final String DATABASE_USER="root";
public static final String DATABSE_PASSWORD="3317";
public static Connection getConnection()
{
Connection con=null;
try{
Class.forName(DRIVER_CLASS);
}catch(ClassNotFoundException e)
{
System.out.println("加载驱动程序错误");
e.printStackTrace();
}
try{
con=DriverManager.getConnection(URL,DATABASE_USER,DATABSE_PASSWORD);
}catch(SQLException e){
System.out .println("数据库连接错误");
e.printStackTrace();
}
return con;
}
public static void closeConnection(Connection con,Statement stmt,ResultSet res)
{
if(res!=null)
try{
res.close();
res=null;
}catch(SQLException e){
e.printStackTrace();
}
if(stmt!=null)
try{
stmt.close();
stmt=null;
}catch(SQLException e){
e.printStackTrace();
}
try{
if(con!=null && con.isClosed()==false)
{
con.close();
con=null;
}
}catch(SQLException e){
e.printStackTrace();
}
}
public static void closeConnection(Connection con,PreparedStatement pstmt,ResultSet res)
{
if(res!=null)
try{
res.close();
res=null;
}catch(SQLException e){
e.printStackTrace();
}
if(pstmt!=null)
try{
pstmt.close();
pstmt=null;
}catch(SQLException e){
e.printStackTrace();
}
try{
if(con!=null && con.isClosed()==false)
{
con.close();
con=null;
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
import java.sql.Date;
import java.util.*;
public class Wll {
private static String name;
private static String strPassword;
private static boolean b ;
public static boolean Start(){
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy年MM月dd日");
Scanner scn=new Scanner(System.in);
String now = sdf.format(new java.util.Date());
System.out.println("*********************************************");
System.out.println("题库维护系统TKV1.0 欢迎您 今天是:"+now);
System.out.println("请输入登录用户名:");
System.out.println("*********************************************");
name=scn.nextLine();
System.out.println("*********************************************");
System.out.println("题库维护系统TKV1.0 欢迎您 今天是:"+now);
System.out.println("请输入密码:");
System.out.println("*********************************************");
strPassword = scn.nextLine();
UserInfo user = new UserInfo(name, strPassword);
b = new UserInfoDao().Exist(user);
return b;
}
public static void main(String[] args) {
Scanner scn=new Scanner(System.in);
int logCount = new OperateLogInfoDao().Count()+1;
int exerCount = new ExerciseDao().Count()+1;
boolean j = false;
java.text.SimpleDateFormat f=new java.text.SimpleDateFormat("yyyy-MM-dd");
java.util.Date utilDate=new java.util.Date();
while(!Start()){
System.out.println("输入错误,请重新输入:");
}
while(!j){
System.out.println("*********************************************");
System.out.println("请选择相关的操作:");
System.out.println("1.添加题目 按键盘字符(a)");
System.out.println("2.删除题目 按键盘字符(b)");
System.out.println("3.显示题目 按键盘字符(c)");
System.out.println("4.显示操作日志 按键盘字符(d)");
System.out.println("5.退出系统 按键盘字符(e)");
System.out.println("*********************************************");
String str = scn.nextLine();
switch((str.toCharArray())[0]){
case('a'):
System.out.println("*********************************************");
System.out.println("添加题目:");
System.out.println("*********************************************");
System.out.println("请输入题目:");
String question = scn.nextLine();
System.out.println("请输入选项x:");
String a = scn.nextLine();
System.out.println("请输入选项y:");
String b = scn.nextLine();
System.out.println("请输入选项z:");
String c = scn.nextLine();
System.out.println("请输入选项m:");
String d = scn.nextLine();
ExerciseInfo e = new ExerciseInfo(exerCount,question,a,b,c,d,"easy");
exerCount++;
if((new ExerciseDao().Add(e))>0){
new OperateLogInfoDao().Add(new OperateLogInfo(logCount,name,"insert exercise: "+question,new Date(utilDate.getTime()),"ok"));
logCount++;
System.out.println("添加成功,是否继续添加?(y/n)");
String judje1 = scn.nextLine();
if(judje1.equals("y")){
System.out.println("添加成功");
j = false;
}
}
break;
case('b'):
System.out.println("*********************************************");
System.out.println("删除题目:");
System.out.println("*********************************************");
System.out.println("请输入所需删除题目id:");
String strId = scn.nextLine();
int eId=Integer.parseInt(strId);
if((new ExerciseDao().Del(eId))>0){
new OperateLogInfoDao().Add(new OperateLogInfo(logCount,name,"delete exercise: id="+eId,new Date(utilDate.getTime()),"ok"));
logCount++;
System.out.println("删除成功,是否继续删除:(y/n)");
String judje2 = scn.nextLine();
if(judje2.equals("y")){
System.out.println("删除成功!");
j = false;
}
}
break;
case('c'):
System.out.println("*********************************************");
System.out.println("显示题目:");
System.out.println("*********************************************");
for(int i=1;i<=exerCount;i++){
ExerciseDao ed = new ExerciseDao();
ExerciseInfo e1 = ed.Show(i);
if(e1.getId()>0){
System.out.println("题目ID: "+e1.getId()+"\n"+"问题: "+e1.getQuestion()+"\n"+"答案:"+"(X):"+e1.getA()+" (Y): "+e1.getB()+" (Z):"+e1.getC()+" (M):"+e1.getD()); System.out.println("-----------------------------");
}
}
j=false;
break;
case('d'):
System.out.println("*********************************************");
System.out.println("显示操作日志:"); System.out.println("*********************************************");
for(int i=1;i<logCount;i++){
OperateLogInfoDao o = new OperateLogInfoDao();
o.showOperatingLogInfo(o.Get(i));
System.out.println("-----------------------------");
}
j=false;
break;
case('e'):
j=true;
break;
}
}
}
}
4.4 系统测试
4.4.1 主界面:
4.4.2 添加题目:
4.4.3 导入题目:
4.4.4 删除题目:
4.4.5 显示题目:
4.5 系统存在的主要问题及注意事项:
主要问题:因为能力有限,没能编写详细的登录代码使用户登录系统。没能将系统设计得更加方便用户使用。
注意事项:要先将程序设计好再连接数据库,SQL密码与程序密码不能不同。
4.6 设计总结及体会:
经过了几天的程序设计,我对Java程序设计有了全新的认识。尤其是当拿到一个不小的任务时,如何去分析,先干什么,接着干什么,最后干什么,有了比较明确的思路。
选定一个项目后,我们应该先对这个项目进行概要的分析、设计,分析出这个程序是干什么用的,应该实现什么功能,这些功能应该包含哪些函数,函数之间应该是怎样的调用关系。概要设计做好后,我们就要开始做详细设计,详细设计就是将做好的概要设计进行完善,将每个函数要实现的功能列举出来,或者是用流程图画出来,这样我们就能基本上知道每个程序应该如何实现它自身的功能,写源代码是也就不会那么盲目。
刚开始的时候,我根据书上的提示自己编写好程序输入电脑,然后编译的时候,出现了许许多多各种各样的问题,回头查看程序,自己却很难找到问题所在,于是查阅各种资料,问了身边很多同学,终于将程序顺利调试出来了。通过这个系统的实现,我从输入代码跟运行调试的整个过程中学习到了很多东西,也了解到系统出现问题的时候的各种错误应该如何解决。
这次的实验使我了解到,平时对知识的积累相当重要,同时也要注重课上老师的讲解,老师在课上的延伸是课本上所没有的,这些知识对于我们对程序的编写有很大的作用,同时,编程也要求我们有足够的耐心,细细推敲。越着急可能就越无法得到我们想要的结果,遇到不会的问题要多多请教,知识是在实践与向别人请教的过程中积累的,所以问是至关重要的,只要肯下功夫很多东西都是可以完成的。
通过本次程序设计,我觉得熟练掌握所学的知识对于编程解决实际问题非常有效。我们应该在平时多用我们所学的Java知识编写程序,尝试解决实际的问题。
最后,再次衷心感谢蒋铮铮老师在本次程序设计中对我的悉心指导!
参考书目:《JavaEE 基础教程》 ,《Effective Java中文版》,以及百度相关文献资料。
11
展开阅读全文