c# 的实战练习
项目一:超市项目
功能分析:
商品类的实现:
1.进行父类成员定义
有编码 string ID
有商品名称string name
有价格 double price
需要定义好构造函数与属性
子类建立构造函数接受属性
仓库类的实现
1.建立货架,一个二元数组
2.在货架上放一个list有几类商品放几个
3.进货
输入: 商品名称 string name
需要进货的数量 int count
无返回: void
根据string name 的不同向 list 里面添加参数
用list【i】.add(new 子类(赋值))i表示货架号
随机货架的写法 guid。newguid()本例当中需要使用tostring
4.取货 输入购物车
将货架上的商品取走并且删除货架上的信息
输入:
商品名字 string name
商品数量 int count
返回 父类数组
根据商品名称将货架上该列的第一个商品赋值给父类数组删除
通过数量循环取出
5.显示仓库的存货
输入与输出都是空
foreach遍历每个货架
输出货架第一个商品的第一个名字,货架上的数量,货架第一个商品的价格
打折的类
1.打折的父类
构造一个函数decount 继承之后记得进行用抽象类构成多态
子类有 多态方法,构造函数,属性
超市类
1.需要建立一个仓库类;
2.建立超市类的构造函数
就是在货架上放货物 调用进货
3.询问顾客需要什么东西
string name 商品名字
int count 需要的数量
去仓库取货
计算金额
选择优惠方式
分类输入方式
计算结果
打印小票:遍历购物车中的要素
4.计算未打折的价格 (输入 购物车的数组 输出 double 价格)
遍历购物车里的数组里的元素的价格
5根据不同string name输入 选择运用什么多态折扣类(输入是string name ,double real_money原价 ,输出是优惠价格)
6.显示存货 (双 null)
直接调用仓库的方法
主函数
1、建立超市对象
调用显示库存的函数
询问用户需求
文本编辑器项目
1.外观设计
使用panel 放在一个 用panel.visibel =true 来显示是否显示面板
menuscript 用于实现上边的菜单栏
text box 设置为输入框
list box为 文件显示框
设计一个button 来做横拉 panel
SOCKET 服务器与客户机的实现
服务器的界面
首先是要建立里界面界面包括一下几个模块
- IP 地址地址的输入,端口号的输入地址
- 显示框与输入框
- 监听按钮
- 选择文件按钮,发送文件的按钮
- 目标IP 地址选择
- 文本发送按钮
监听功能的实现
1.创建一个监听的SOCKET//主要是是实现监听的初始化设置
建立一个socket 监听 socket的设置就是使用(addressfamiliy . internetwork ,sockettype.stream,protocoltype.tcp)
ipaddress ip =ipaddress.any //读取本机IP
IPEndpoint point=new ipendpoint(ip,convert.toint32(输入的文本端口号))
socketwatch.bind(point) 绑定端口与监听socket
//创建一个方法显示端口已连接成功
设置好监听队列
socketwatch.listen(10)设置好监听的数量
2.建立一个线程进行不断监听队列
线程是需要方法的所以是要建立一个循环的方法
建立object
Socket socketwatch= o as socket ; 将方法变为socket类型
基于已有的SOCKET 建立一个用于通讯的socket
Socket SocketSend = SocketWatch.Accept();
建立一个字典存储数据IP
Dictionary<string, Socket> dicsocket = new Dictionary<string, Socket>(); 在下拉菜单里面建立一个IP列表
cobip.Items.Add(SocketSend.RemoteEndPoint.ToString());
显示出监听 的IP
showmesg(SocketSend.RemoteEndPoint.ToString() + ":" + "连接成功");
显示设置一个字节数组的长度
byte[] buffer = new byte[1024 * 1024 * 2]; 实际接受的字节数 int r = SocketSend.Receive(buffer);
if (r == 0) { break; } string str = Encoding.UTF8.GetString(buffer, 0, r);
\显示的是发送的第一个字符
showmesg(SocketSend.RemoteEndPoint + ":" + str);