【前言】
求职之路不容易,实力弱的渣渣倍感压力,.net方向学习主要还是在一家IT培训机构系统学习的,说不上在那学的多好,但是基础的东西都有了一定的了解,算是稍微入了门了吧,培训结束就是各种网投,各种找工作,最近一家单位面试说要带上作品,无奈培训期间做的东西要么没保存,要么没完成好,算了自己用以前学的东西,写点简单的玩意吧,算是复习下之前学的东西,不过这个过程中还是碰到问题,学到了点东西。今天总结下这个东西吧。
【东西简介】
1 登录界面
之前培训期间,用三层架构写过一个网络教育平台(表示现在三层架构都不知道啥了),软件主要分三种用户角色,管理员主要是对老师的一些管理,增删查改吧(简单的数据操作)。
这里主要处理代码就是,用户名密码的验证。
1: private bool isExist(string sql,string uname,string upwd)
2: {
3: DataTable dt = new DataTable();
4: dt = SqlHelper.SqlHelperService.ExecuteQueryToTable(sql);
5: if (dt.Rows.Count > 0)
6: {
7: string pwd = dt.Rows[0][0].ToString();
8: if (pwd == upwd)
9: {
10: return true;
11: }
12: else
13: {
14: return false;
15: }
16: }
17: else
18: {
19: return false;
20: }
21: }
DataTable 用惯了,就知道啥表格读取都用这个来完成,以至于今天笔试题中的DataSet数据读取都写不来,真心Orz..
对了,这里还有一个问题就是,登录后转到一个新的winform(),管理员/教师/学生窗口,要关掉当前的登录窗口。直接用this.Close(),结果都关掉了,然后网上建议那么用this.Hide(),把登录窗口给隐藏掉的方法,这样虽然在效果上是关掉了登录窗口,但是实际上Login这个窗口没有关掉,可以在资源管理器中看出,这样的话,下一次运行之前,总是得去资源管理器中结束掉Login.exe然后再运行,不是很好。
后来看到网上指导,可以为新窗口重新开一个线程,然后关掉登录窗口,线程进程这东西听起来就略高端,以后必须得学,今天就先拿来用了。
Thread th = new Thread(func => { Application.Run(new Manager()); });
th.Start();
this.Close();
2 管理员模块
简单的数据库设计,简单的信息反馈,主要的话就是初始化时把数据库中数据填充上去,管理员操作主要是 查看教师列表和添加教师用户。这些信息是通过id来查询得到的,这个id就是登陆窗口中的用户名。
这边涉及到的一个知识点是,winform窗体与窗体之间的传值,网上了解到两种方法。
方法一:定义全局变量,我这里就是在static void Main(){}中 定义了一个全局变量 public static string userName = string.Empty; 然后其他form也可以用这个变量。
方法二:在form的构造函数中传值实现,我认为这个好一点吧。当修改信息时,需要调出一些信息就是通过这么来写的
…
【添加教师用户】,又是弹出一个对话框,填完相关信息,点保存,保存到数据库就行了。
年级班级联动那块内容,主要是通过comboBox控件的TextChange()来进行对应的数据查询及绑定的一个联动效果,但好像第一次展示时候一年级对应的几个班级没有展现出来,可能是第一次打开一年级没有变动,没触发到TextChange(),这个问题以后看看怎么弄好一点,Mark一下。
1: private void cmbGrade_TextChanged(object sender, EventArgs e)
2: {
3: string value = cmbGrade.SelectedValue.ToString();
4: string sql = string.Format("select Cname from Class where Gradeid='{0}'", value);
5: DataTable dt = new DataTable();
6: dt = SqlHelper.SqlHelperService.ExecuteQueryToTable(sql);
7: cmbClass.DataSource = dt;
8: if (dt.Rows.Count > 0)
9: {
10: cmbClass.DisplayMember = "Cname";
11: }
12: }
感觉好多控件的数据绑定都是XXX.DataSourse = dt; 还是学的太少太不够了,ADO.NET的几个对象都掌握不够啊,还有就是对comboBox等控件了解不够吧。
【查看教师列表】,教师列表用的datagridview来展示教师数据的,以及简单的查找。
这里主要学到一个知识点是,对datagridview中数据选中后弹出一个选择框,选择执行操作。
用到的控件是contextMenuScript,把该控件绑定到datagridview上去,然后增加几个选项,就和button一样实现相应功能就行了。
修改操作,重新调用之前新增老师的窗口来用只是要在选中行中获取到Teacherid,然后通过id在初始化时候把数据库中相应的值填充到form窗体上,这里用的是通过构造函数传值。
哎,估计是代码没写对,两个comboBox上面的值没有填充上去,找个时间专门看看comboBox的用法,然后写篇博文吧,Mark一下。
给该窗体的构造函数传个值,如果是点击新增按钮弹出来的,那么该值为空,不去填充数据,如果是修改弹出来的,那么把获取到id值传过去,然后填充数据。Web项目中好像也是这么做的。
修改:
1: private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
2: {
3: string id = dataGridView1.SelectedCells[0].Value.ToString();
4: AddTeacher tec = new AddTeacher(id);
5: tec.Show();
6:
7: }
传值
1: public AddTeacher(string id)
2: {
3: InitializeComponent();
4:
5: //如果传入的id非空 就是代表修改操作,此时根据id加载数据
6: if (id != null)
7: {
8: ChaXun(id);
9: }
10: else
11: {
12: GetData();
13: }
14:
15:
16: }
如果是新增弹出来的话,将id设为empty就可以了。
接下来还有一个教师模块和学生模块就没什么新东西了,老师模块主要是对学生的管理增删查改,以及学生成绩的录入,学生模块主要是登录上去看看自己的信息和成绩之类的。
【小结】 一开始总是想写的好点的,想有哪些哪些功能,但是写着写着才发现就这么点水平,哎,不管怎么样,写点这样的小玩意复习知识点比看书什么的要好一点,中间碰到一些问题,解决了又学习到了新的东西。 最近几天,接二连三的面试,还是看看面试题,洗洗睡吧。