培训第三周 (本周的内容非常实用、后续项目开发中可能会用的很多)
由于疫情影响不能开多人会议,本周不进行培训讲座、培训采用资料自学+练习题的形式。
资料自学的要求与上周相同:
1. 自学需要记笔记(Word,Excel,PowerPoint… 都可以)
(注意笔记会在下周一进行检查。)
2. 大家应该都对 Java 非常熟悉了,在自学 C# 资料时注意与 Java 进行对比,
找异同点并记在笔记中。
3. 资料不能光看,一定要动手敲代码。
4. 不只是看指定的资料,不懂、不清楚、想了解更多的地方自己去查其他资料
资料:
[A] 集合及基础的 foreach 迭代器:
集合的概念和基本操作与Java非常类似,注意找与Java的区别
https://docs.microsoft.com/zh-cn/dotnet/standard/collections/commonly-used-collection-types
https://docs.microsoft.com/zh-cn/dotnet/standard/collections/selecting-a-collection-class
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/iterators#using-iterators-with-a-generic-list
[B] LINQ入门
我们平时写业务代码,其实很大部分都是针对集合的各种操作,比如搜索、排序、多集合关联查询、集合合并、集合成员变换、List to Map、Count、按条件取最大最小。。。
传统 Java 中,这些操作都要手动写各种循环来做;在 C# 中用我们使用简洁易懂、灵活优雅的 LINQ 语句来实现
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/linq/introduction-to-linq-queries
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/linq/basic-linq-query-operations
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/linq/data-transformations-with-linq
https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/linq/walkthrough-writing-queries-linq
[C] WinForm开发(第一部分)
本次培训的直接目的是为了今年的项目做技术准备,预计该项目中用到C#的领域集中在客户端画面开发,有很大可能会使用Windows Forms框架。
故本次培训从本周开始侧重WinForm开发。
这里提供一个教程文件:WinForm 实践开发教程.pdf (时间仓促找的这个书比较老是面向 .NET Framework 2 的,不过 WinForm 基础的那些东西应该是不会变的)
本周学习第一章的二三节:
再次强调不要光看书,要敲代码!
练习题:
| 培训第三周 | |||||||||||||||
| 编程练习 | |||||||||||||||
| 编程练习1 —— LINQ查询练习 | |||||||||||||||
| 现在已知三个数据源(在练习时可用手动创建填充数据的 List<Xxx>来代表,实际项目中可能来自于DAO、Service) | |||||||||||||||
| A. 部门 | |||||||||||||||
| DEPTNO | DNAME | LOC | |||||||||||||
| 10 | ACCOUNTING | NEW YORK | |||||||||||||
| 20 | RESEARCH | DALLAS | |||||||||||||
| 30 | SALES | CHICAGO | |||||||||||||
| 40 | OPERATIONS | BOSTON | |||||||||||||
| B. 职员 | |||||||||||||||
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO | ||||||||
| 1000 | KEVIN | CLEANER | 1001 | 6000 | 200 | 10 | |||||||||
| 7369 | SMITH | CLERK | 7902 | 1980/12/17 | 800.9 | 20 | |||||||||
| 7499 | ALLEN | SALESMAN | 7698 | 1981/2/20 | 1600 | 300 | 30 | ||||||||
| 7521 | WARD | SALESMAN | 7698 | 1981/2/22 | 1250 | 500 | 30 | ||||||||
| 7566 | JONES | MANAGER | 7839 | 1981/4/2 | 2975 | 20 | |||||||||
| 7654 | MARTIN | SALESMAN | 7698 | 1981/9/28 | 1250 | 1400 | 30 | ||||||||
| 7698 | BLAKE | MANAGER | 7839 | 1981/5/1 | 2850 | 30 | |||||||||
| 7782 | CLARK | MANAGER | 7839 | 1981/6/9 | 2450 | 10 | |||||||||
| 7788 | SCOTT | ANALYST | 7566 | 1987/4/19 | 3000 | 20 | |||||||||
| 7839 | KING | PRESIDENT | 1981/11/17 | 5000.123 | 10 | ||||||||||
| 7844 | TURNER | SALESMAN | 7698 | 1981/9/8 | 1500 | 0 | 30 | ||||||||
| 7876 | ADAMS | CLERK | 7788 | 1987/5/23 | 1100 | 20 | |||||||||
| 7900 | JAMES | CLERK | 7698 | 1981/12/3 | 950 | 30 | |||||||||
| 7902 | FORD | ANALYST | 7566 | 1981/12/3 | 3000 | 20 | |||||||||
| 7934 | MILLER | CLERK | 7782 | 1982/1/23 | 1300 | 10 | |||||||||
| C. 工资等级标准 | |||||||||||||||
| GRADE | LOSAL | HISAL | |||||||||||||
| 1 | 700 | 1200 | |||||||||||||
| 2 | 1201 | 1400 | |||||||||||||
| 3 | 1401 | 2000 | |||||||||||||
| 4 | 2001 | 3000 | |||||||||||||
| 5 | 3001 | 9999 | |||||||||||||
| 现在要求写 LINQ 查询,实现如下效果: | |||||||||||||||
| LINQ 练习 1 | |||||||||||||||
| 查询数据,得到如下形式的结果,并通过字符串形式输出给用户: | |||||||||||||||
| 部门名 | 员工 | ||||||||||||||
| ACCOUNTING | XXX | ||||||||||||||
| ACCOUNTING | YYY | ||||||||||||||
| … | … | ||||||||||||||
| RESEARCH | ZZZ | ||||||||||||||
| RESEARCH | LLL | ||||||||||||||
| … | … | ||||||||||||||
| SALES | KKK | ||||||||||||||
| SALES | PPP | ||||||||||||||
| … | … | ||||||||||||||
| OPERATIONS | OOO | ||||||||||||||
| OPERATIONS | PPP | ||||||||||||||
| … | … | ||||||||||||||
| LINQ 练习 2 | |||||||||||||||
| 查询数据,得到如下形式的结果,并通过字符串形式输出给用户: | |||||||||||||||
| (最好能通过一条LINQ查询就出这样的结果,当然通过多条LINQ查询实现也可以) | |||||||||||||||
|
|
|
||||||||||||||
| 编程练习2 —— WinForm练习 | |||||||||||||||
| 新建一个图形用户的项目,包含三个窗口: | |||||||||||||||
| - 登录画面 | |||||||||||||||
| - 用户信息一览画面 | |||||||||||||||
| - 用户信息录入画面 | |||||||||||||||
| 要求: | |||||||||||||||
| - 启动自动打开登陆画面,用户名/密码错误 提示用户(用户名、密码用固定的,比如 root/admin) | |||||||||||||||
| - 登录成功进入用户信息一览画面(用户信息有哪些可参考编程练习题 1) | |||||||||||||||
| - 可以从一览画面跳转到用户信息录入画面,在该画面录入的信息可以反映到一览画面 | |||||||||||||||
| - 尽量多的使用不同的 WinForm 控件 (下拉框、文本框、多选、单选。。。) | |||||||||||||||
| - 用户数据不需要持久化,直接使用内存中的集合集合(我们的主要目的是练习 WinForm) | |||||||||||||||
| - 进阶:用高级控价 DataGrid/DataTable 等来实现一览画面(你甚至可以上网去找开源的第三方库去实现!) | |||||||||||||||