简单题库管理系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单题库管理系统设计一
1. 数据库dxjsj.mdb 结构(由9张表组成
)
2. 表结构(这里列出选择题、填充题、知识点3张表
)
3. 数据存放目录结构
4.管理程序菜单功能
标准答案文件夹
存放数据库的文件夹
设计操作题素材文件夹
OS 操作题素材文件夹
操作结果样例文件夹
试题维护包括不同题型的处理界面
知识点、OS操作类型、设计操作类型处理界面
(1)设计涉及到多个窗体,需要通过下图所示操作加入新窗体,结果如右图所示。
添加新窗体结果(需要修改窗体文件名)
其中,testm为主窗体(设计时第一个建立的窗体),应用程序的主入口,提供菜单功能,菜单建立使用menuStrip控件。
(2) 窗体的打开(以单选题为例)
Form fdxt = new fdxt();
fdxt.MdiParent = this; //作为主窗体testm的子窗体
fdxt.Show();
窗体的关闭使用命令:this.Close();
注意:应用程序的关闭退出使用命令:Application.Exit();
(3) 窗体之间共用的变量
先定义一个private/public的类,然后在类中声明一个static public属性的变量,可以在类中初始化或第一次使用之前初始化。使用“类名.变量名”形式引用。
根据本例的数据存放目录结构,需要获得程序的运行路径,可在主窗体testm的外面定义一个类,本例的类名为mv,如下所示。
namespace jsjtest
{
public partial class testm : Form
{
主窗体testm中的代码
}
定义一个窗体之间共用的变量mpath
public class mv
{
public static string mpath = Application.StartupPath; //获得程序的运行路径
}
}
在其他窗体内使用变量mpath的方法:
string connStr = "Provider = Microsoft.Jet.OleDB.4.0;Data Source=" + mv.mpath + "\\db\\dxjsj.mdb";
5. 具体设计:
(1)新建一个解决方案jsjtest.sln,将Form1窗体命名为testm,使用menuStrip控件建立菜单。需要引用using System.Data.OleDb;
(2)添加新窗体,命名为zsd,用于知识点的数据管理。设置窗体标题为“知识点设置”。
按图所示,在知识点窗体添加网格控件,文本框,命令按钮、标签等,其中
用于导航,label4显示记录号。设置网格的AutoSizeColumnMode属性为Fill,可调整列宽。
在知识点窗体也需要引用using System.Data.OleDb;
声明全局变量:
string connStr = "Provider = Microsoft.Jet.OleDB.4.0;Data Source=" + mv.mpath +
"\\db\\dxjsj.mdb";
OleDbConnection conn; // 连接对象
OleDbDataAdapter da ; // 适配器对象
DataSet ds = new DataSet(); // 数据集对象
BindingManagerBase bind; // 绑定管理对象
string strSql = "Select 题号,章号,章,标志From 知识点";
int sp;
编写一个显示当前页面的子过程:
private void getPage() // 获取当前页码
{
label4.Text = (bind.Position + 1) + "/" + bind.Count;
dataGridView1.Rows[bind.Position].Selected = true;
dataGridView1.CurrentCell = dataGridView1.Rows[bind.Position].Cells[0];//行头的小三角 dataGridView1.FirstDisplayedScrollingRowIndex = bind.Position;
}
在private void zsd_Load(object sender, EventArgs e)中完成数据连接和绑定:
conn = new OleDbConnection(connStr); // 创建一个数据连接
conn.Open();
da = new OleDbDataAdapter(strSql, conn); // 配置适配器
da.Fill(ds, "知识点"); // 填充ds对象
conn.Close();
bind = this.BindingContext[ds, "知识点"]; //导航绑定
dataGridView1.DataSource = ds.Tables["知识点"];; //网格绑定
dataGridView1.Columns[0].FillWeight = 10; //第1列的相对宽度为%
dataGridView1.Columns[1].FillWeight =15; //第2列的相对宽度为%
dataGridView1.Columns[2].FillWeight = 60; //第3列的相对宽度为%
dataGridView1.Columns[3].FillWeight = 15; //第4列的相对宽度为%
dataGridView1.Columns[0].HeaderText = "序号"; //给每列设置标头
dataGridView1.Columns[1].HeaderText = "章节编号";
dataGridView1.Columns[2].HeaderText = "章节标题";
dataGridView1.Columns[3].HeaderText = "章节标志";
dataGridView1.Rows[0].Selected=true ;
textBox1.DataBindings.Add(new Binding("Text", ds, "知识点.章号")); //文本框绑定
textBox2.DataBindings.Add(new Binding("Text", ds, "知识点.章"));
textBox3.DataBindings.Add(new Binding("Text", ds, "知识点.标志"));
if (ds.Tables["知识点"].Rows.Count == 0)
button5_Click(sender, e);
else
button1_Click(sender, e);
为导航添加代码:
private void button1_Click(object sender, EventArgs e)
{
bind.Position = 0; getPage();
}
private void button2_Click(object sender, EventArgs e)