前言:写这个小型系统之前呢,我们应该要猜测可能要用到哪些知识点。

那么对于这个小型系统:主要用到了如下的知识:

 封装,集合(ArrayList和HashTable)和泛型和非泛型集合(泛型:List<>和非泛型:Dictioanry<>),

构造函数,方法重载,多态(继承,抽象:抽象类和抽象方法),怎么动态绑定数据到ListView上-----------

效果图:

第一步.

创建几个类

01:工具类(vehicle)(父类,超类,基类),此类为抽象类

有方法重载,构造函数

该类主要负责提供车类的属性

属性:

  public string Color { get; set; }
        public double DailyRent { get; set; }
        public string LicenseNO { get; set; }
        public string Name { get; set; }
        public int RentDate { get; set; }
        public string RentUser { get; set; }
        public int YearsOfService { get; set; }

02:创建一个汽车类(Car)(子类)

构造函数,方法重载。

03:创建一个卡车 类(Truck)(子类)

构造函数,方法重载

属性:

  public int Load

        {

            get { return load; }

            set { load = value; }

        }

04:创建一个工具(工厂)类(VehicleUtil)

第二步.

代码实现思路:

01:工具,父类(vehicle):

代码如下:

 public Vehicle()
        {
        }
        public Vehicle(string color, double dailyrent, string licenseno, string name, int yearsofservice)
        {
            Color = color;
            DailyRent = dailyrent;
            LicenseNO = licenseno;
            Name = name;
            YearsOfService = yearsofservice;
        }
        public abstract double CalcPrice();

02:汽车类(Car)

代码如下:

public Car()
        {
      }
        public Car(string licenseno, string name, string color, int yearsofservice, double dailyrent)
        {
           Color = color;
            DailyRent = dailyrent;
            LicenseNO = licenseno;
            Name = name;
            YearsOfService = yearsofservice;
        }
        public override double CalcPrice()
        {
            ;
            totalPrice = RentDate * DailyRent;
            return totalPrice;
        }

03:卡车 类(Truck)

代码如下:

  public Truck(string licenseno, string name, string color, int yearsofservice, double dailyrent, int load)
        {
           Color = color;
            DailyRent = dailyrent;
            LicenseNO = licenseno;
            Name = name;
            YearsOfService = yearsofservice;
            Load = load;
        }
        public override double CalcPrice()
        {
            ;
            totalPrice = RentDate * DailyRent;
           return totalPrice;
}

04:工具(工厂)类(VehicleUtil

代码如下:

 public static Vehicle CreateVehicle(string licenseno, string name, string color, int yearsofservice, double dailyrent, int load, string type)
        {
            Vehicle vehicle = null;
            switch (type)
            {
                case "Car":
                    vehicle = new Car(licenseno, name, color, yearsofservice, dailyrent);
                    break;
                case "Truck":
                    vehicle = new Truck(licenseno, name, color, yearsofservice, dailyrent, load);
                    break;
                default:
                    break;
            }
            return vehicle;
        }

第三步.

出租事件:(btnRent_Click(object sender, EventArgs e))

关键代码如下:

 )
            {
                MessageBox.Show("请选择一行");
                return;
            }
            if (txtUser.Text == "")
            {
                MessageBox.Show("请输入客户名字!");
                return;
            }
            ].Text;
            Vehicle vehicle = vehicles[key];
            vehicles.Remove(key);
            rentvehicles.Add(key, vehicle);
            PrintVehicles(vehicles, lvlist);
            MessageBox.Show("出租成功!!");
//PrintVehicles绑定数据到listview上
        public void PrintVehicles(Dictionary<string, Vehicle> listprirnt, ListView lvinfo)
        {
            ListViewItem lv=null;
            lvinfo.Items.Clear();
            foreach (Vehicle item in listprirnt.Values)
            {
                if (item is Car)
                {
                    lv = new ListViewItem(item.LicenseNO);
                    lv.SubItems.Add(item.Name);
                    lv.SubItems.Add(item.Color.ToString());
                    lv.SubItems.Add(item.YearsOfService.ToString());
                    lv.SubItems.Add(item.DailyRent.ToString());
                    lvinfo.Items.Add(lv);
                }
               else if(item is Truck)
                {
                    lv = new ListViewItem(item.LicenseNO);
                    lv.SubItems.Add(item.Name);
                    lv.SubItems.Add(item.Color.ToString());
                    lv.SubItems.Add(item.YearsOfService.ToString());
                    lv.SubItems.Add(item.DailyRent.ToString());
                    lv.SubItems.Add(((Truck)item).Load.ToString());
                    lvinfo.Items.Add(lv);
                }

  第四步

还车.在btnGiveMoney_Click事件中写   

  if (txtDayNum.Text == string.Empty)
            {
                MessageBox.Show("请输入天数!");
                return;
            }
            ].Text;
            Vehicle vechile = rentvehicles[addNum];
            rentvehicles.Remove(addNum);
            vechile.RentDate = Convert.ToInt32(txtDayNum.Text);
            ;
            //调用计算价格方法
            money = vechile.CalcPrice();
            MessageBox.Show("你一共要福le" + money);
            vehicles.Add(addNum, vechile);
             //刷新
            PrintVehicles(rentvehicles, lvlistGive);
            MessageBox.Show("成功!!");

第五步.

添加车辆在 btnIncAR_Click事件中写

if (txtWeight.Text == "" || txtUseTime.Text == "" || txtType.Text == "" || txtID.Text == "" || txtDayRentMoney.Text == "" || cboColor.Text == "")

            {
                MessageBox.Show("请您填写完整!");
            }
            else
            {
                string licon = txtID.Text;
                string color = cboColor.Text;
                double mon = Convert.ToDouble(txtDayRentMoney.Text);
                int tine = Convert.ToInt32(txtUseTime.Text);
                string ty = txtType.Text;
               if (radJiaoCar.Checked)
               {
                    Car ca = new Car(licon, ty, color, tine, mon);
                    vehicles.Add(licon, ca);
                }
               if (radKaCar.Checked)
                {
                   int load = Convert.ToInt32(txtWeight.Text);
                    Truck tr = new Truck(licon, ty, color, tine, mon, load);
                    vehicles.Add(licon, tr);
                }
                MessageBox.Show("添加成功!");
            }

注:此文没有代码的注释,是因为想在看代码的任何情况下,

也能看懂代码的含义。

 

深入.NET和C#的小型汽车租赁系统的框架的更多相关文章

  1. Java汽车租赁系统[源码+数据库]

    系统名称 Java汽车租赁系统   (源码在文末) 系统概要 汽车租赁系统总共分为两个大的模块,分别是系统模块和业务模块.其中系统模块和业务模块底下又有其子模块. 功能模块 一.业务模块 1.客户管理 ...

  2. Java代码~~汽车租赁系统

    租车信息: 输出结果: 代码: 1.先定义抽象类(汽车类:Moto) package cn.aura.demo01; public abstract class Moto { //公共属性 priva ...

  3. C#汽车租赁系统

    类图: 父类(车类,抽象类) /// <summary> /// 车辆基本信息类.搞一个抽象类玩玩 /// </summary> public abstract class V ...

  4. Springboot+vue 实现汽车租赁系统(毕业设计二)(前后端项目分离)

    文章目录 1.系统功能列表 2.管理员端界面 2.1 商家登录界面 2.2 用户信息管理界面 2.3 汽车管理界面 2.4 订单界面 2.5 汽车图形报表 2.6 优惠券新增界面 3.普通用户界面 3 ...

  5. C#汽车租赁系统 完整版

      Truck.cs类 //卡车类 public class Truck : Vehicle1 { //重载 public int Load { get; set; } //构造函数 public T ...

  6. 一种基于Java Swing/HTML/MySQL的汽车租赁系统

    该项目是一个Java的课程作业(大二),主要运用Java.Swing.HTML.MySQL,实现基本的租车逻辑.界面可视化.信息导出.数据存储等功能.实现管理员.用户两种角色登录,并结合Java开发中 ...

  7. .Net中的AOP系列之构建一个汽车租赁应用

    返回<.Net中的AOP>系列学习总目录 本篇目录 开始一个新项目 没有AOP的生活 变更的代价 使用AOP重构 本系列的源码本人已托管于Coding上:点击查看. 本系列的实验环境:VS ...

  8. Lyft、Uber、滴滴涉足汽车租赁领域,能打破既有汽车所有权模式吗?

    自共享经济出现之后,众多相关项目遍地开花.这些共享经济项目对于人们来说,最直观的感受就是实惠.性价比高.方便.不过抛开这些使用层面的优点来看的话,共享经济项目最大的特色或许就是改变了事物的所有权.一件 ...

  9. 《Java从入门到放弃》JavaSE篇:综合练习——单身狗租赁系统(数组版)

    因为现在只学习了基本语法,所以在综合练习之前,先补充关于方法概念. 方法的作用:把一系列的代码放在一起,然后再取个别名.之后通过这个别名的调用,就相当于执行了这一系列的代码. 方法的语法:([]中的内 ...

随机推荐

  1. ios crash的原因与抓取crash日志的方法

    首先我们经常会闪退的异常有哪些呢?crash的产生来源于两种问题:违反iOS策略被干掉,以及自身的代码bug. 1.IOS策略 1.1 低内存闪退 前面提到大多数crash日志都包含着执行线程的栈调用 ...

  2. salesforce 零基础学习(四十八)自定义列表分页之Pagination基类封装 ※※※

    我们知道,salesforce中系统标准列表页面提供了相应的分页功能,如果要使用其分页功能,可以访问http://www.cnblogs.com/zero-zyq/p/5343287.html查看相关 ...

  3. kafka 安装出现的几个问题

    1.安装kafka的过程出现两个问题 1)错误: 找不到或无法加载主类 kafka.Kafka 原因:    下载的是源码包,需要编译.可以下载Binary downloads: 2) ERROR I ...

  4. sql的行转列(PIVOT)与列转行(UNPIVOT)

    在做数据统计的时候,行转列,列转行是经常碰到的问题.case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比较快速实现行转列,列转行,而且可扩展性强 一.行转列 1.测 ...

  5. html 生成pdf

    HTML生成PDF(c#) 最近因为工作需要,小小的研究了一下HTML生成PDF的方法,这方面的内容很多,但要么是不尽如人意的方法,要么就是那种收费的类库!为了广大.neter的福利,把自己的一点小小 ...

  6. 应用程序框架实战三十:表现层及ASP.NET MVC介绍(一)

    本文将介绍表现层及ASP.NET MVC的一些要点,特别是ASP.NET MVC的一些抽象和封装技巧,如果你对MVC还不了解,可以参考<ASP.NET MVC4 高级编程>,作者Jon G ...

  7. BAT及各大互联网公司2014前端笔试面试题--JavaScript篇

    很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确, ...

  8. Lua 学习笔记(六)迭代器

    一.迭代器的定义      “迭代器”就是一种可以遍历一种集合中所有元素的机制.在Lua中迭代器以函数的形式表示,即没掉用一次函数,即可返回集合中的“下一个”元素.迭代器的实现可以借助于闭合函数实现, ...

  9. 【原】IOS合并lib(.a)库的终极可用方法(可用于解决duplicate symbol静态库冲突)

    网上流传了太多关于合并lib库的方法,自己也尝试过,但大多失败.有感于这种急于解决问题,经过百般尝试后依旧无果的无奈心情,小翁在这里用一个实例来完整阐述如何在mac中合并lib静态库. 这里以移动广告 ...

  10. Java-Spring:java.lang.ClassCastException: com.sun.proxy.$Proxy* cannot be cast to***问题解决方案

    java.lang.ClassCastException: com.sun.proxy.$Proxy* cannot be cast to***问题解决方案 临床表现: 病例: 定义代理类: @Tra ...