C#出题库项目的总结(1)

前记:

截止18点05分(4月9号),完成了代码部分的编写,明天争取把文档完成,毕竟在这个上面花的时间太多了,还有单词和书需要背,好吧,不说废话啦,下面进入正题。

 (PS:因为学院的模拟招聘笔试出题和安排耽误了这么几天没上来写,我忏悔)

 

正文:

我使用的开发环境是Vs 2013和Sql server 2012,以下先说窗体设计部分:

1、(mainForm.cs)截图如下

(1)左边为查询题目的条件选择:

  a)上面部分:四个label和四个comboBox。label分别设置其Text对应指示comboBox的意义;comboBox设置其DropDownStyle为DropDownList也就是我们常说的下拉菜单(Ps:该属性一共有三个属性,另外两个为Simple设置之后的功能类似TextBox,DropDown设置之后的功能为DropDownList+Simple)

  b)下面部分:一个Text为“查询”的Button,该控件关联一个click事件,用于连接数据库查询符合对应条件的题目。(Ps:关于事件的绑定有两种常用的快捷方式:1、直接双击对应控件,如此处的Button则会自动绑定click事件;2、右键,打开“属性”,点击“事件”按钮(那个闪电的符号),找到对应的事件,双击则自动绑定对应事件。两者的区别:第一种方法只会绑定最常用的默认的事件,如button对应click,下拉菜单对应change,而第二种方法则可以绑定所有事件)

(2)右边为题目展示部分:

  a)上面部分:一个label和一个RichTextBox。label的Text赋值为"here",文本没有特殊意义,只是方便设计的时候查看label位置;该label用于指示符合条件的题目的总数和用户当前查看的是第几题(输出的格式如:"查询题目总数为【3】个/当前为第【2】个")。因为此处RichTextBox只用于展示信息,即“只读”,故设置其ReadOnly属性值为True;其输出值为四种形式:1、初始化:“请选择搜索的条件...” 2、任一Combobox的值改变后,“请点击查询按钮进行搜索...” 3、查询成功,将相应的题目显示 4、查询失败,提示用户“没有找到对应题目”

  b)下面部分:两个Button,一个Text值为“上一题”,一个Text值为“下一题”。两个控件的功能想必也是清楚明了的,就是在查询成功后,题目数目大于1的情况下,向前或向后调转展示题目。两者在设计的时的条件设置和边界判断,这点在之后的代码部分再详述。

2、登录窗体(loginForm.cs)截图如下:

(Ps:吐个槽,其实并没有登录功能,只是任性想做窗体的调转,结果因为花样作死,还出现个问题弄好久。。。)

(1)上面部分:三个label,展示我们的设计理念,我们的设计理念就是没有理念,对的,就是这样,喵~

(2)下面部分:一个Button绑定click事件,将本窗体隐藏,将mainForm显示出来。因为这个窗体的控件设计简单,就直接把代码和我遇到的那个蛋疼的问题在这里讲述,之后专门讲代码的部分就只涉及mainForm的代码了。

(3)loginForm的代码部分:

代码部分就简单的两句,就是这两句折腾了好半天:

this.hide();

new mainForm().show();

遇到的问题是一旦改动代码,再次运行就报错

ho no,妈妈我做错了什么,调了半天,不晓得咋子弄,只有求助外援,大神,求指教~

大神就说了一句,看看任务管理器。好的呢~

查看任务管理器,可以很清楚的看到,虽然关闭了窗体但是程序依然在运行中:

问题是这个问题,但显然这里还有一个更需要问的问题,到底是因为什么会在窗体关闭的时候,程序还在运行呢?

this.hide();//<-妈妈就是它欺负我

loginForm窗体还在运行,因为是设置的为入口的窗体,即为主窗体,所以如果在调转的时候用close()代替hide()会出现闪现然后关闭的效果,而没法将mainForm展示出来

Application.Run(new loginForm());

改正的方法网上有挺多的,我采用的是给mainForm加一个FormClosed事件,语句很简单而且关闭得很彻底

System.Environment.Exit(0);//当关闭mainForm窗体时,退出整个程序

 

总结:

  设计的部分就大概这些,用到的知识基本是原来学习过的内容,这个部分算是一个准备阶段,帮助我回忆知识,也回顾了一些书本上的知识,算是为代码阶段做个热身活动吧,最后就用大神给我说的话做个结尾,调试模式要用好,不然出Bug的锅自己背:p

转载于:https://www.cnblogs.com/zllwebstudy/p/5377658.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
总结: 1、关于C#的知识 (1)、文件输入输—数据流 1、FileStream类 例子: SqlDataReader reader = job.WriteFileToTxt(); FileStream jobStream = new FileStream(@fileName,FileMode.Open,FileAccess.ReadWrite);//覆盖 //FileStream jobStream = new FileStream(@fileName, FileMode.Append, FileAccess.Write);//追加 StreamWriter streamw = new StreamWriter(jobStream); string outfiles = null; streamw.WriteLine("此次任务信息如下:"); streamw.WriteLine("outfiles");//读取完毕后换行 reader.Close(); streamw.Close(); jobStream.Close(); 数据流一定要用try/catch语句块包起来,同时,例子中的fileName是文件路径,如果是*.txt之类的则默认存储在程序 的文件夹下 FileMode有很多枚举成员,其中 1)Append是打开现有文件或者创建新文件,其只能和FileAccess.Write一起使用; 2)Create是如果文件不存在,则使用CreateNew,否则使用Truncate,其要求FileIOPermissionAccess.Write; 3)CreateNew创建新文件,要求FileIOPermissionAccess.Write,如果文件存在则异常; 4)Open打开现有文件,能力取决于FileAccess的值(Read,Write,ReadWrite),如果文件存在则异常; 5)OpenOrCreate打开或创建,FileAccess.Read--FileIOPermissionAccess.Read,FileAccess.Write/ReadWrite-- FileIOPermissionAccess.Write,FileAccess.Append--FileIOPermissionAccess.Append; 6)Truncate打开现有文件,文件一旦打开将被截断为零字节,试图从使用Truncate打开的文件中进行读取将异常 注:SqlDataReader使用后一定要关闭 2、写文本文件 string text = Console.ReadLine(); StreamWriter streamw = File.CreateText(@"E:\test3.txt"); streamw.WriteLine(text); streamw.Close(); 读取文本文件 string txt = ""; StreamReader sr = new StreamReader(@"E:\test.txt"); while (!sr.EndOfStream) { string str = sr.ReadLine(); txt += str + "\n"; } sr.Close(); Console.Write(txt); Console.Read(); (2)、产品的框架 1)Model类:对象层,制定对象的属性和方法; 2)IDAL类:接口层,定义在SQLDAL中需要使用的方法; 3)SQLDAL类:数据持久层,实现接口中的方法,用DBUtility类中包装的SQL方法操作数据库; 4)BLL类:业务逻辑层,定义调用SQLDAL类中的方法,被WEB类中的事件调用,联系数据持久层和WEB表示层,中间桥梁 ; 5)DALFactory类:创建接口类型的CREATE方法,在SQLDAL中创建接口对象; 6)DBUtility类:创建各种SQL方法,实现数据的调用; 7)WEB类:表示层,设计页面格式(HTML)和实现各种事件(JavaScript) (3)c#中执行sql语句时传递参数的小经验 1> 直接写入法: 例如: int Id =1; string Name="lui"; cmd.CommandText="insert into TUserLogin values("+Id+",'"+Name+"')"; 因为Id是数值,所以在传递的时候只需要在sql字符串中用"+Id+"即可实现,而Name是字符串,所以在传递的时候还需 要在"+Name+"两边各加一个单引号(')来 实现; 2>给命令对象添加参数法: 例如: int Id =1; string Name="lui"; cmd.CommandText="insert into TUserLogin values(@Id,@Name)"; //上条语句中直接在sql语句中写添加的参数名,不论参数类型都是如此. SqlParameter para=new SqlParameter("@Id",SqlDbType.int,4);//生成一个名字为@Id的参数,必须以@开头表 示是添加的参数,并设置其类型长度,类型长度与数据库中对应字段相同 para.Value=Id;//给参数赋值 cmd.Parameters.Add(para);//必须把参数变量添加到命令对象中去。 //以下类似 para=new SqlParameter("@Name",SqlDbType.VarChar,16); para.Value=Name; com.Parameters.Add(para); 然后就可以执行数据库操作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值