西南交通大学网络教育毕业设计(论文) 第 8 页 进行测试,并给出标准答案供考生参考。
2.2 数据库设计
一级考试系统的规模较小,故只建立一个数据库(DZJS.mdb).在此数据库基础上,建立考生登录情况表、操作题题库、选择题题库、数据库题库,Word题题库、在数据库连接方面,采用了Delphi6.0附带的Borland数据库引擎ADO.使用ADO的ADO管道连接用MSAccess设计的后台数据库,建立一个名为DZJS的数据源.在系统的OLEcontainer中放入访问数据库的控件,将其ADOconnction指向DZJS。 系统中主要的数据文件如下:
1. 试题库:用于存放课程的试题,试题库的结构由试题的属性即科目、编号、类型、难度、分值、内容、答案和文本形式等字段组成。 2. 考生库 用于存放考生的信息包括用户名、密码。 2.3 界面设计
为了验证考生身份,设计了一个登录界面,考生登录以后,直接到试卷编辑界面。这样的好处是方便简捷。
2.4 数据文件结构
2.4.1 考试模板基本表 试卷模板表用来记录一份试卷的基本信息,包括所选课程、难度、试题类型等。如表2-1 表2-1 考试模板基本表 字段名 ID SCORE TYPE_1 DIFLEVEL SUBJECT BLOBDATA EXT 类 型 Int Int Char Char Char OLE Char 长 度 4 50 8 8 1 20 3 说 明 自增型 分值设置 题型 难度 考试类型(课程) 数据流 文本形式
西南交通大学网络教育毕业设计(论文) 第 9 页 2.4.2 学生模板基本表
该表由系统动态产生,主要存储考生的基本信息,包括用户名、用户密码等。如表2-2
表2-2 学生模板基本表
字段名 ID PASSWD QUES KEY_1 类 型 int Char Char Char 4 16 4 6 长 度 说 明 用户名 用户密码 提示问题 提示答案
西南交通大学网络教育毕业设计(论文) 第 10 页
第3章 系统实现
3.1 功能模块
1.注册模块. 注册账号和密码自动存入数据库中。
2.登录模块 用户验证即正确输入用户名和密码如果输入的数据与数据库中数据一直,系统将提供登录成功。
3.数据库操作模块.自动从数据库题题库中抽取题目,供考生完成建立数据库文件、编辑等一系列操作。
4.Word字表处理模块.从Word题题库中抽取题目,使用OLE技术自动打开Word,让考生在Word环境中完成操作。
3.2 注册功能的实现
procedure TForm3.Button1Click(Sender: TObject); var
ID,MA :string ; s : string; begin
if trim(edit1.Text) <> '' then ID := Trim(Edit1.Text) else
showmessage('请输入您的帐号!'); if trim(edit2.text) <> '' then MA := Trim(edit2.text) else begin showmessage('请输入您的密码!'); exit; end;
if trim(edit2.text) <> trim(edit3.text) then begin
showmessage('密码和确认密码不一致!');
西南交通大学网络教育毕业设计(论文) 第 11 页 exit; end; try
s:='select * from use where id ='+''''+ Trim(edit1.text)+'''' ; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(s); ADOQuery1.Open; except end;
if not(ADOQuery1.IsEmpty) then begin
showmessage('该帐号已经存在!') end else begin ID:=edit1.Text; MA:=edit2.Text;
adocommand1.CommandText:='inserT into
use(id,passwd) values('+''''+ID+''''+','+''''+MA+''''+')'; adocommand1.Execute; showmessage('添加成功'); end;
3.3 登录功能的实现
procedure TForm1.Button3Click(Sender: TObject); var ID,MA :string ; s : string; begin
if trim(edit1.Text) <> '' then ID := Trim(Edit1.Text) else
西南交通大学网络教育毕业设计(论文) 第 12 页 showmessage('请输入您的帐号!'); if trim(edit2.text) <> '' then MA := Trim(edit2.text) else begin
showmessage('请输入您的密码!'); exit; end; try
s:='select * from use where id='+''''+ Trim(edit1.text)+'''' ; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(s); ADOQuery1.Open; except end;
if ADOQuery1.IsEmpty then begin
showmessage('您输的帐号不存在!') end else begin
if MA = Trim(ADOQuery1.FieldByName('passwd').AsString) then
begin form2.Show; form1.Hide; end else begin
showmessage('您输入的密码不正确!') end; end;