培训第三周 (本周的内容非常实用、后续项目开发中可能会用的很多)
由于疫情影响不能开多人会议,本周不进行培训讲座、培训采用资料自学+练习题的形式。
资料自学的要求与上周相同:
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 等来实现一览画面(你甚至可以上网去找开源的第三方库去实现!) | |||||||||||||||