操作系统试题库管理软件设计.docx
- 文档编号:28977170
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:21
- 大小:150.54KB
操作系统试题库管理软件设计.docx
《操作系统试题库管理软件设计.docx》由会员分享,可在线阅读,更多相关《操作系统试题库管理软件设计.docx(21页珍藏版)》请在冰豆网上搜索。
操作系统试题库管理软件设计
沈阳航空航天大学
课程设计报告
课程设计名称:
软件综合课程设计
课程设计题目:
操作系统试题库管理软件设计
院(系):
计算机学院
专业:
计算机科学与技术
班级:
学号:
姓名:
指导教师:
完成日期:
2017年1月10日
目录
第1章概要设计1
1.1题目的内容与要求1
1.2数据库概念模型设计1
1.3总体方案设计2
第2章详细设计3
2.1数据库逻辑模型设计3
2.1.1选择题表(choice)3
2.1.2填空题表(pack)4
2.1.3名词解释表(essay)4
2.2系统功能详细设计5
2.2.1主界面系统模块5
2.2.2试题维护功能模块5
2.2.3试题查询功能模块6
2.2.4试题统计模块功能模块7
2.2.5试题打印功能模块8
第3章调试分析10
3.1Java和MySQL的连接问题10
3.2调试问题10
第4章使用说明11
4.1主系统界面11
4.2试题维护功能界面12
4.3试题查询功能界面13
4.4试题统计功能界面14
4.5试题打印功能面错误!
未定义书签。
参考文献15
附录(程序清单)16
第1章概要设计
1.1题目的内容与要求
内容:
设计一个操作系统试题库管理软件,用于存储与查询操作系统考试设计的题目。
每道试题包括试题编号、题目、答案、类别、难度级别(高、中、低)等信息。
题目分为选择题、判断题、名词解释、问答题、算法题、计算题等题型。
功能包括:
1.试题信息维护功能。
包括试题录入、修改和删除;
2.试题查询功能。
按关键词、类别、题型、难度级别等查询试题;
3.试题统计功能。
按主题类别、题型、难度级别等条件统计试题数目及比例;
4.试卷辅助生成。
按题型分值比例和难易程度等辅助生成一套试卷和相应答案。
要求:
1.图形界面,操作方便,具有一定实用性;
2.软件可以设计为CS或B/S结构;
3.独立完成系统的设计、编码和调试工作并通过指导老师的检查;
4.按课程设计规范撰写课程设计报告。
1.2数据库概念模型设计
根据操作系统试题库管理程序的要求,概念模型一共有三个个实体,分别为选择题实体、填空题实体和名词解释实体。
其中,选择题实体包括题的编号、题的名称、题的内容、题的四个答案、题的正确答案和题的难度等九个属性,题编号是选择题实体的主键;填空题实体包括题编号、题的种类、题内容、题的答案、题的难度五个属性,题编号是填空题实体的主键;名词解释实体包括题编号、题的种类、题内容、题的答案、题的难度五个属性,题编号是名词解释实体的主键。
由题目要求可以看出,这三个实体分别对应三个不同的表,而且这三个实体之间没有任何的关联。
1.3总体方案设计
根据题目要求,本系统可以分为四个功能模块:
试题维护功能模块及试题查询功能模块、试题统计模块功能模块、试题打印功能模块。
系统总体模块图如下图1.2所示:
图1.2系统总体模块图
说明:
上述模块中,试题维护系统模块实现对试题的动态增加、删除、修改功能;试题查询模块实现对试题信息信息的静态查看,试题统计模块实现动态查询试题数目及比例;试题打印模块实现对数据库中的试题进行打印并保存到文件中。
第2章详细设计
2.1数据库逻辑模型设计
教师实体与项目实体之间是没有的关系,分别转换后的关系模式有三个,分别是选择题、填空题和名词解释题,具体属性如下所示:
1)选择题(题编号,题的种类,题的内容,题的A答案,题的B答案,题的C答案,题的D答案,题的正确答案,题的难度)
此为选择题实体对应的关系模式。
2)填空题(题编号,题的种类,题的内容,题的正确答案,题的难度)
此为填空题实体对应的关系模式。
3)名词解释题(题编号,题的种类,题的内容,题的正确答案,题的难度)
此为名词解释实体对应的关系模式。
2.1.1选择题表(teacher)
选择题表如下表2.1所示:
表2.1选择题表
列名
数据类型
长度
是否允许空
说明
题编号
数字
10
No
主键
题的种类
文本
30
No
题的内容
文本
50
No
题A答案
文本
20
No
题B答案
文本
20
No
题C答案
文本
20
No
题D答案
文本
20
No
正确答案
文本
20
No
题的难度
文本
20
No
说明:
此表用于存选择题基本信息,包括题的编号、题的名称、题的内容、题的四个答案、题的正确答案和题的难度等九个属性。
其中的题编号是该表的主键,其他的属性都用于选择题信息的描述。
2.1.2填空题表(project)
填空题表如下表2.2所示:
表2.2填空题表
列名
数据类型
长度
是否允许空
说明
题编号
数字
20
No
主键
题种类
文本
20
No
题的内容
文本
50
No
题的答案
文本
50
No
题的难度
文本
20
No
说明:
用于存放填空题的基本信息,包括题编号、题的种类、题内容、题的答案、题的难度五个属性。
其中题编号是该表的主键,其他的属性都用于填空题信息的描述。
2.1.3名词解释题表(tp)
名词解释题表如下表2.3所示:
表2.3名词解释题表
列名
数据类型
长度
是否允许空
说明
题编号
数字
20
No
主键
题种类
文本
20
No
题的内容
文本
50
No
题的答案
文本
20
No
题的难度
文本
50
No
说明:
用于存放名词解释题的基本信息,包括题编号、题的种类、题内容、题的答案、题的难度五个属性。
其中题编号是该表的主键,其他的属性都用于填空题信息的描述。
2.2系统功能详细设计
整个程序的实现过程分为五个模块,主界面系统模块、试题维护功能模块、试题查询功能模块、试题统计模块功能模块、试题打印功能模块。
各模块的功能以及具体的设计情况如下所述:
2.2.1主界面系统模块
主界面系统模块的功能是:
该模块主要是提供一个整体的操作界面,通过这个界面,用户可以更好的了解这个软件的作用,也可以随意的选择不同的软件功能。
这个模块主要是为了保持软件的实用性和简洁性,使系统看起来完整统一。
2.2.2试题维护功能模块
试题维护功能模块的功能是:
提供了试题信息的相关工作,可以进行部分检索,通过这个检索来对试题的内容进行操作,包括:
增加试题,更改试题,删除试题。
还有一个返回按钮,用来返回上一界面使得整个程序操作起来更简单,容易,清晰。
试题维护功能模块实现的功能是可以将新的试题信息存入数据库中,也可以对信息进行修改后再将其存入数据库和能够将数据库中的信息删除。
基本信息与MySQL数据库相连,能从数据库“spfchoice”,“spfpack”“spfessay”这三个个表中提取试题的基本信息,且这些信息都能被增加、修改、删除。
此模块界面主要实现增加信息、修改信息、删除信息的功能,进而实现对试题信息的管理,运行时选择正确按钮便可实现相应操作。
流程图如图2.2.2:
图2.2.2
2.2.3试题查询功能模块
试题查询功能模块的功能是:
能够查看不同的类别,不同难度的试题的信息。
基本信息与MySQL数据库相连,能从数据库“spfchoice”,“spfpack”“spfessay”这三个个表中提取试题的基本信息,并通过界面显示出来。
流程图如图2.2.3:
图2.2.3
2.2.4试题统计模块功能
试题统计模块功能模块的功能是:
能查统计不同的种类,不同难度的试题的数目,并且还有在所有试题中所占比例。
基本信息与MySQL数据库相连,能从数据库“spfchoice”,“spfpack”“spfessay”这三个个表中提取试题的基本信息,并将数量信息显示在窗体上面。
流程图如图2.2.4:
图2.2.4
2.2.5试题打印功能模块
试题打印功能模块的功能是:
这个模块的主要功能是将数据库里面相关试题进行选择并且将试题输出到一个文件中。
基本信息与MySQL数据库相连,能从数据库“spfchoice”,“spfpack”“spfessay”这三个个表中提取试题的基本信息,
流程图如图2.2.5:
图2.2.5
第3章调试分析
3.1Java和MySQL数据库的连接问题
因为整个程序的实现需要与数据库相连接,所以我遇到的问题是连接数据库。
由于以前没有用过数据库跟Java进行相连,对怎么操作不熟悉,运用起来也不是很灵活。
一开始连接出错,通过查阅资料以及在老师的帮助下,顺利解决问题,在以后的程序中反复练习加以巩固。
首先将连接与界面操作进行分离,最底层使用com.spf.db进行与数据库的进本操作,然后在com.spf.dao中实现不同的表的增删改查功能,然后在com.spf.model中定义与数据库相关的不同表的类,这样就讲数据的连接简单分开,实现了界面与数据库的分离。
让复杂的操作变得有条理而且简单。
3.2调试问题
在编写代码过程中遇到了一些问题,但是因为我是写完一部分就进行调试,而且是一个功能一个功能进行编写的,所以大的问题并不多,编写过程中遇到了一些小问题:
1、在编写com.spf.db的过程就遇到了一个问题,就是连接不上数据库,总是报错,最后将出现的错误上网查询了一下,发现是我的数据库驱动包不对,跟数据库的版本不一致。
2、在编写界面的时候,遇到了一个问题,当下拉框的内容是一个特定值时,我想隐藏一个控件,但是发现隐藏不了,最后想到了一个办法,就是将这个控件放到一个画布中,当下拉框是这个特定值时,就隐藏这个控件,否则就显示这个控件。
3、再有就是不知道怎么编写返回按钮,在网上搜索了一下,发现dispose()方法,这个方法可以删除一JFram个画面,所以当点击返回按钮时,就调用这个方法将该画面删除,显示的就是主画面了。
第4章使用说明
4.1主系统界面
图4.1进入主系统界面
图4.1说明:
在该画面可以选择不同的不同的按钮进行点击,点解不同的画面可以进入不同的操作页面。
4.2试题维护功能界面
图4.2试题维护功能界面
图4.2说明:
在试题维护界面里,您可以选择不同的试题类型进行选择然后进行检索,这样就会出现你所要操作的试题信息,这样你就可以在右面填写你所要进行操作试题的内容,然后点击不同的按钮,进行不同的操作,单击图中“返回”按钮返回到图4.1所示界面。
4.3试题查询功能界面
图4.3教师信息查看及管理界面
图4.3说明:
在此界面中,您可以查看试题的基本信息,单击图中“返回”键返回到图4.1所示界面。
4.4试题统计功能界面
图4.4科研项目信息查看界面
图4.4说明:
在此界面中,您可以查看不同类型不同难度试题的数量,包括个数和百分比,单击图中“返回”键返回图4.2所示界面。
参考文献
[1]王珊,王珊.数据库原理[M].北京:
高等教育出版社,2005
[2]梁芳,VisualBasic程序设计案例教程[M],北京:
清华大学出版社,2006
[3]苏长龄,VisualBasic程序设计[M],北京:
中国铁道出版社,2006
[4]郭胜等,VisualBasic数据库开发入门与范例解析[M],北京:
机械工业出版社,2004
[5]张海藩,软件工程导论[M],北京:
清华大学出版社,2003
附录(部分程序清单)
packagecom.spf.action;
importjava.awt.*;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.ActionEvent;
publicclassWin{
publicFramef;
privatefinalPanelpanel;
privateButtonbtMaintenance,btQuery,btCensus,btCreate;
//privatefinalLabellabel;
publicWin(){
//窗体设置
f=newFrame("试题管理系统");
f.setLayout(null);
f.setBounds(50,50,600,500);
//画布设置
panel=newPanel();
panel.setBounds(10,30,580,460);
f.add(panel);
panel.setLayout(null);
//欢迎label设置
Labellabel=newLabel("欢迎使用数据库试题管理系统");
label.setAlignment(label.CENTER);
label.setFont(newFont("宋体",Font.HANGING_BASELINE,30));
label.setBounds(36,21,508,84);
panel.add(label);
//试题维护按钮
btMaintenance=newButton("\u8BD5\u9898\u7EF4\u62A4");
btMaintenance.setBounds(103,174,128,52);
panel.add(btMaintenance);
//试题查询按钮
btQuery=newButton("\u8BD5\u9898\u67E5\u8BE2");
btQuery.setBounds(361,174,128,52);
panel.add(btQuery);
//试题统计按钮
btCensus=newButton("\u8BD5\u9898\u7EDF\u8BA1");
btCensus.setBounds(103,309,128,52);
panel.add(btCensus);
//试卷生成按钮
btCreate=newButton("\u8BD5\u5377\u751F\u6210");
btCreate.setBounds(361,309,128,52);
panel.add(btCreate);
myEvent();
f.setVisible(true);
}
privatevoidmyEvent(){
f.addWindowListener(newWindowAdapter()//mywindow的×按钮
{
publicvoidwindowClosing(WindowEvente)
{
System.exit(0);
}
});
//试题维护功能
btMaintenance.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
WinMaintenwm=newWinMainten();
}
});
//试题查询功能
btQuery.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
WinQuerywq=newWinQuery();
}
});
//试题统计功能
btCensus.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
WinCensuswq=newWinCensus();
}
});
//试卷打印
btCreate.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
MakeTestmt=newMakeTest();
try{
mt.printChoice();
mt.printPack();
mt.printPack();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
});
}
}
课程设计总结:
通过最近一段时间的学习,让我对Java语言的熟悉增深了一步,也让我更加熟悉了Java语言的运用。
在这次的课程设计中,我也学到了很多东西。
在Java语言中,面向对象的核心思想将数据及处理数据的操作就你行封装在一起,基本思想是把客观世界中联系紧密的元素及相关操作组织在一起,使其相互关系隐藏在内部,而对外仅仅表现为与其他封装体间的接口,从而构造出具有独立含义的软件实现,在Java语言中,是利用“包”来组织和管理的类,在这次的课程设计中就涉及到了这个问题,包的创建与使用,是Java语言中重要的一部分,因此,对于我所做的课设,只要努力的了解其中的关系,并且去运用这个关系来进行包的运用。
就可以收获很多,在使用图形用户界面的基础知识时,常用的包括文本框,选择框,按钮等多个控件的使用,以及触发事件的编写,都更加的印象深刻了。
Java语言是一门很重要的语言,面向对象与封装都很重要,这次的课程设计对我在学习Java的道路上帮助很大,在这次的课程设计中感谢老师的帮助与指导。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 试题库 管理 软件设计