# 2022-软件构造基础-作业 **Repository Path**: leecharon/ruanjiangouzao ## Basic Information - **Project Name**: 2022-软件构造基础-作业 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-02-28 - **Last Updated**: 2022-05-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 2022-软件构造基础-作业 ## 第一次作业 a1. 写一个控制台程序,实现计算器功能。输入两个数字和一个运算符,打印出计算结果。 a2. 写一个Windows窗体应用,实现计算器功能。在两个文本框中输入数字,在组合框中选择运算符,点计算按钮后显示出计算结果。 a3. 根据教程学习Git和Github/Gitee的使用方法。 Git教程:https://www.liaoxuefeng.com/wiki/896043488029600 通过一个游戏学习git: https://learngitbranching.js.org/?locale=zh_CN 在VS中使用Github: https://zhuanlan.zhihu.com/p/31031838 在VS中使用Gitee: https://www.jianshu.com/p/5d7655e10576 a4. 创建一个Gitee账号,并在Gitee上创建一个库(如CSharpWork),将两个计算器程序代码提交到这个库里面,并将Gitee的库地址(备注学号+姓名)发至wsm@whu.edu.cn。 ## 第二次作业 b1. 编写程序输出用户指定数据的所有素数因子。 b2. 编程求一个整数数组的最大值、最小值、平均值和所有数组元素的和。 b3. 用“埃氏筛法”求2~ 100以内的素数。2~ 100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉4的倍数,以此类推...最后剩下的就是素数。 b4. 编写面向对象程序实现长方形、正方形、三角形等形状的类。每个形状类都能计算面积、判断形状是否合法。请尝试合理使用接口/抽象类、属性来实现。 b5. 随机创建10个形状对象,计算这些对象的面积之和。请尝试使用简单工厂设计模式来创建对象。 ## 第三次作业 c1. 为示例(参见第4章课件第9页)中的泛型链表类添加类似于List类的ForEach(Action action)方法。通过调用这个方法打印链表元素,求最大值、最小值和求和(使用lambda表达式实现)。 c2. 使用事件机制,模拟实现一个闹钟功能。闹钟可以有嘀嗒(Tick)事件和响铃(Alarm)两个事件。在闹钟嘀嗒运行时或者响铃时,在控制台显示提示信息。 ## 第四次作业 d1. 写一个订单管理的控制台程序,能够实现添加订单、删除订单、修改订单、查询订单(按照订单号、商品名称、客户、订单金额等进行查询)功能。 提示:主要的类有Order(订单)、OrderDetails(订单明细),OrderService(订单服务),订单数据可以保存在OrderService中一个List中。在Program里面可以调用OrderService的方法完成各种订单操作。 要求: (1)使用LINQ实现各种查询功能,查询结果按照订单总金额排序返回。 (2)在订单删除、修改失败时,能够产生异常并显示给客户错误信息。 (3)作业的订单和订单明细类需要重写Equals方法,确保添加的订单不重复,每个订单的订单明细不重复。 (4)订单、订单明细、客户、货物等类添加ToString方法,用来显示订单信息。 (5)OrderService提供排序方法对保存的订单进行排序。默认按照订单号排序,也可以使用Lambda表达式进行自定义排序。 d2. 随机生成100个0~1000间的整数,使用LINQ语句对这些整数从大到小排序,并求和与平均数。 ## 第五次作业 e1. 在OrderService中添加一个Export方法,可以将所有的订单序列化为XML文件;添加一个Import方法可以从XML文件中载入订单。 e2. 对订单程序中OrderService的各个Public方法添加测试用例。 e3. 编写一个Winform程序,从界面上选择两个文件,将两个文件的内容读取出来,合并写入到一个新创建的文件中,新文件存放于可执行程序目录中的Data子目录里。 ## 第六次作业 f1. 为订单管理的程序添加一个WinForm的界面。通过这个界面,调用OrderService的各个方法,实现创建订单、删除订单、修改订单、查询订单、导出订单、导入订单等功能。 要求: (1)WinForm的界面部分单独写一个项目,依赖于原来的项目。 (2)可以使用两个窗口:主窗口实现查询展示功能,以及放置各种功能按钮;新建/修改订单功能使用弹出窗口。 (3)注意窗口的布局,在窗口尺寸变化时,不出现错位挤压等情况。 (4)尽量通过数据绑定来实现功能。订单和订单明细各使用一个bindingsource,通过DataMember实现主从对象绑定。 f2. 编写程序,界面包含一个标签、一个文本框和一个按钮,当用户单击按钮时,程序把文本框中的内容复制到标签中。 ## 第七次作业 g1. 改进教材p412例9-10的爬虫程序,要求如下: (1)只爬取起始网站上的网页。 (2)只有当爬取的是HTML文本时,才解析并爬取下一级URL。 (3)相对地址转成绝对地址进行爬取。 (4)尝试使用Winform来配置初始URL,启动爬虫,显示已经爬取的URL和错误的URL信息。 g2. 对输入框中输入的身份证是否合法进行验证: (1)使用正则表达式对格式进行验证(共18位,前17位为数字,最后1位是数字或字母,其中年月日部分也可以进行验证); (2)对身份证的最后一位的有效性进行验证。 ## 第八次作业 h1. 做一个窗体应用程序,接收用户输入的关键字,用户点击搜索时使用baidu搜索引擎搜索关键字,从搜索结果中,摘抄文字部分的前200个字,分别显示到两个多行文本框内。请使用多线程方式、并行编程或者异步编程方式完成任务。 ## 第九次作业 i1.做一个背单词程序,使用数据库存储英文单词和中文词义。在Winform界面上依次显示英文单词的中文词义,用户可在编辑框中输入对应的英文单词,输入完毕后回车可与对应的英文单词进行比较,一致则显示"正确”,否则显示“错误”。 ## 第十次作业 j1. 对订单程序进行改造,发布Web API,实现对订单等增删改查操作。(不要求写前端代码,能够使用postman测试通过即可)