C# 练手项目

417 阅读3分钟

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);