c#教程:题库系统可排版学生端
【1】作品介绍:
题库系统是为西安市某个高考辅导班制作的。共有两个独立的程序,这里要介绍的是其中的学生使用那个程序。该部分主要用来显示题库内容,判断对错等功能。
【2】运行效果:
下面只是该系统显示题目的画面,因为篇幅有限,没有列出加载、出错、结束等画面。


【3】程序亮点:
①显示图片,网络上的一类似软件,只能显示文字,不能显示图象,有图形的几何题。
②排版功能,比较上面两幅图,很明显地发现同一道题目有“纵向”和“横向”两种排版方式。事实上你可以把元素(文字、图片、多选框、单选框、NEXT按钮)放置到任意位置,包括显示区外面。这不同于一些类似出题的软件,不能排版,选项框是固定的。
③动态显示的情况下,“多选框和单选框”应有的逻辑仍然正确。该系统可以实现常见的四选一单选题、多选题、多选单选混合选等题目。也就是说:可以实现N选M的任何题目(N≥1,M≤N)。在任何情况下,统计测试者的答案,和存储的正确答案比较,来判断学生是否做对,这一应用逻辑是正确的。
④程序和题库分离。启动程序之后你可以选择加载任何一个题库。
⑤巧妙的设计思路。引入“场景”概念,这是我非常津津乐道之处。事件触发场景的转换。

它有什么好处呢?请往下看,下面是scene成员变量的注释:
/*
* scene = 0:开始画面,欢迎词,请求加载题库
* scene = 1:加载题库成功提示画面。
* scene = 2:显示题目。
* scene = 3:结束画面。
* scene = 4:出错画面。
* scene = 5:未定义。
*/
private int scene;
//下面是框口重绘函数的部分代码:
if (scene == 0)
……
if (scene == 1)
{
this.theNextButton.Text = "开始";
Brush br = Brushes.Black;
Font fnt = new Font("黑体",30,FontStyle.Regular);
g.DrawString("加载题库成功!点击“开始”按钮!",fnt,br,20,210);
}
if (scene == 2)
……
总之,窗口根据scene进行重绘动作。scene也表示了当前程序所处的状态。相应地我又引入了图解的办法设计类似的程序。请看:

为了整洁,没有在图中弧线上标出事件。从一个场景转化到另一个场景是由事件触发的。一般是按钮单击事件,当然还有诸如流结束事件等。当有一个事件发生时,响应该事件的函数就会改变scene的值,然后强行刷新窗口,就进入下一个场景了。
⑥由于引入“场景”概念,所以该程序在逻辑上容易做得严谨、而且可扩展性非常的好。
⑦各种异常使程序进入出错画面,任何破坏严重的题库信息,都不会使程序停滞或者崩溃。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/310.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
