C#_工程实践笔记_用刚学的C#语言做一个随机抽题的小程序

本文记录了作者使用C#语言制作一个随机抽题程序的工程实践过程,涉及面向对象编程、文件操作和UI设计。程序功能包括从题库中随机抽取题目并显示,同时提供错误提示和解决方案,以及自定义字体大小等功能。
摘要由CSDN通过智能技术生成

C#_工程实践笔记_用刚学的C#语言做一个随机抽题的小程序

在暑期用了将近两周的时间学了C#语言,也对面向对象的思想有了一定的了解,但不能光说不练,从我学习C语言的过程我就深刻地体会过实践的经验积累对于掌握一门计算机语言多么重要。

历史遗留问题

之前学校的一个学生工作部门需要做一个程序用来随取题目,因为时间紧张,我先用C语言写了一个命令行的程序
C语言程序

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main(void) 
{
   
//	1------11,41------51 大问题 
//	12-----40,小问题 

	int Big_Ques,Small_Ques_1,Small_Ques_2;
	char choose;
	
Lable:	
	Big_Ques = 0;
	Small_Ques_1 = 0;
	Small_Ques_2 = 0;
	choose = '\n';
	
	srand((unsigned)time(NULL));
	Big_Ques = rand()%21+1;	
	if(Big_Ques>11)
	{
   
		Big_Ques+=30;
	}
	
	while(Small_Ques_1 < 12)
	{
   
		Small_Ques_1 = rand()%31;
		Small_Ques_1+=10;		
	}
	
	while(Small_Ques_2 < 12 || Small_Ques_1 == Small_Ques_2)
	{
   
		Small_Ques_2 = rand()%31;	
		Small_Ques_2+=10;		
	}
	printf("****************************************************\n");
	printf("	答辩题目随机抽选\n");
	printf("****************************************************\n");
	printf("	第一道小问题是		%d\n",Small_Ques_1);
	printf("	第二道小问题是		%d\n",Small_Ques_2);	
	printf("----------------------------------------------------\n");
	printf("	大问题是		%d\n",Big_Ques);
	printf("****************************************************\n");	
		
	printf("\n\n是否再次抽取问题?\n");
	printf("<1  再次抽取>\n");
	printf("<2  退出程序>\n");
	
	while(choose == '\n')
	{
   	
		choose = getchar();
		getchar();
		if(choose == '1')
		{
   
			system("cls");
			goto Lable;
		}
	}	
}

十分简陋,没有界面,就只是cmd黑黑的一块,而且也只是显示一个范围内随机数字,具体题目还需要人来对照数字查找,其实就是做了骰子,用到的也就是生成随机数字的函数。虽然满足了对方的需求,但也差强人意。这个程序还需更加完善。

新的工程

正好,有了目标,也完整地学了一下C#,用的是VisualStudio2017这个强大的IDE,设计窗体也十分方便,这样就开始工作。
先分析一下,描述一下基本功能,需要满足一个用户在窗口内通过按键来随机抽取题库中的题目的需要,这个题库用户可以自己添加或删减,再抽取题目后窗口上同时显示出题目内容。因为对方需要哈,窗口内会把题干和答案同时显示。

接下来再分析一下,需要什么样的基本配置呢,一个窗体,上面有按键和文本显示窗口,需要一个方便用户打开和修改内容的题库。窗体和控件就是用窗体设计器的工具箱里的控件就好了。题库我用了两个txt文本,比较简单粗暴哈,一个用来存放小题题目,一个用来存放大题题目,这也是甲方需要。

还需要程序有什么样的模块呢,首先窗体设计器,然后是文件模块用来读取文本里的题目,随机数字模块用来选择抽哪道题目。大概就这些。

可是我在这的时候犯难了,如果用户用的时候忘了带上题库,或者抽到的数字题库里没有怎么办,程序怎么知道在用户的操作后,题库里有多少题。因为我经常会用到调试单片机的一些上位机,也深刻的意识到有一个类似输出窗口那样给出提示信息的面板多么方便,所以可以也设计一个文本框来显示程序的运行状态,可以提醒用户发生什么异常以及给出推荐的解决办法,让程序更友好。

需要再设计一个清空按键,清空当前所有文本框内的内容,避免信息窗口信息累积过多。

最好再留一个按键用来提供帮助信息,使用户用起来更清晰更方便,同时也能标注一下程序的当前版本。

因为这个程序是要用在大屏幕上对下面的观众展示,要求上面的题目的字体要足够清楚,也就是足够大,而且内容显示完整,具体需要多少我打算再设计两个按键可以用来调整字体大小,怎么样的字号合适还是由用户来决定吧,我只是提供一个初始值和调整办法。

这样最终的窗口布局就明确了,其实也是陆陆续续后期反复修改得到的:
主页面窗口

初步设想的程序的流程,就是运行程序,然后程序自检题库时候存在,同时检查题库内的题目个数,如果出现任何异常,报告异常,并给出可能有效的解决方案,然后就是用户按下按键抽题,如果操作成功,报告成功和题目序号可方便用户管理,如果操作失败也给出解决方案。

背后代码

列好需求就可以着手准备了,先写好底层的组件,设计了两个类,一个是非静态的File类封装操作题库文件的一些方法,同

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本软件是为广大需要自动命题系统的学校提供方便。用户在使用时首先要将我们为您准备好的数据库连接到SQL上,然后才能使用。 由于用户是首次使用,所有要先进行用户注册。本软件只允许一个用户注册,注册完后请记住密码,以便以后使用。 为了让您能够检验我们的产品的实用性,我们预先在数据库中存放了一些相关试题。在您真正使用的时候,您可以通过SQL想数据库中输入试题,也可以通过我们软件为您提供的“添加”功能进行试题输入。为了避免试题抽取时可能会出现的试题重复现象,检验您输入适当多的试题。 下面介绍一下我们本软件的结构以及相关功能: 1.用户登录窗口 包括:用户名、用户密码、登录及用户信息修改。 2.用户信息修改窗口 包括:用户名修改、用户密码修改。 3.用户注册窗口 包括:用户名注册、用户密码注册。 4.自动命题系统窗口 包括:系统(返回系统登录、推出系统)、试题更新(C#试题更新、.net 试题更新、高数试题更新)、试题检索(C# 试题检索、.net 试题检索、高数试题检索)、自动命题(C# 自动命题、.net 自动命题、高数自动命题)、帮助(关于软件、联系我们)。 5.试题检索及更新窗口(两者共用) 对检索包括:基本的菜单栏、工具栏、试题栏(题型、题号、搜索)。 对更新包括:基本的菜单栏、工具栏、试题栏(题型、题号、搜索、添加、删除、更新)。 6.自动命题窗口 包括:基本的菜单栏、工具栏、命题栏(题型、题数、难度系数、总分、命题) 以上为本软的概述,在使用中遇到问题时,请按F1寻求帮助。 感谢使用!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值