C#編程基礎第七章:面向對象編程


一、類與對象

類是對象的抽象(學生),對象是類的實例(張三),萬物皆為對象。類是泛指,對象是特指。

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;

namespace ConsoleApplication19
{
    /// <summary>
    /// 學生類
    /// </summary>

    public class Student
    {
        public string name;  //姓名
        public int age;   //年齡
        //方法
        public void show()
        {
            Console.WriteLine("大家好,我是"+name+",年齡"+age);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //對象,實例化一個對象
            Student cht = new Student();
            cht.name = "曹桓滔";  //設置屬性值
            cht.age = 16;
            cht.show();  //調用對象中的方法

            Student wx = new Student();
            wx.name = "王夕";
            wx.age = 17;
            wx.show();

            Console.WriteLine(wx.name);

            //學生集合
            List<Student> students = new List<Student>();
            students.Add(cht);  //將學生對象添加到集合中
            students.Add(wx);
            foreach (var s in students)  //遍歷
            {
                s.show();
            }
        }
    }
}

二、集合

集合是特定的數據結構,數組是集合。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication20
{
    class Program
    {
        static void Main(string[] args)
        {
            //創建集合對象
            List<int> ids = new List<int>();
            //向集合中添加元素
            ids.Add(198);
            ids.Add(975);
            ids.Add(177);
            //取出元素
            Console.WriteLine(ids[1]);
            //移除
            ids.Remove(975);  //根據對象刪除
            ids.RemoveAt(0);  //根據索引刪除
            //全部取出,遍歷
            foreach (var item in ids)
            {
                Console.WriteLine(item);
            }
        }
    }
}

 輸出結果:

三、圖書管理

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication21
{
    /// <summary>
    /// 圖書類
    /// </summary>
    public class Book
    {
        public int id;  //編號
        public string name;  //名稱
        public double price;  //價格

        public void Show()
        {
            Console.WriteLine(id + "\t\t" + name + "\t\t" + price);
        }

    }


    class Program
    {
        static void Main(string[] args)
        {
            List<Book> books = new List<Book>();

            Book book1 = new Book();
            book1.id = 1;
            book1.name = "C#編程";
            book1.price = 78.5;
            books.Add(book1);

            Book book2 = new Book();
            book2.id = 2;
            book2.name = "Java編程";
            book2.price = 65.9;
            books.Add(book2);

            Book book3 = new Book();
            book3.id = 3;
            book3.name = "Python編程";
            book3.price = 99.7;
            books.Add(book3);

            Console.Write("請輸入圖書名稱:");
            String name = Console.ReadLine();
            foreach (var item in books)
            {
                if (item.name == name)
                {
                    Console.WriteLine("--------------------------------查找--------------------------------");
                    item.Show();
                }
            }

            Console.Write("請輸入要刪除的圖書名稱:");
            name = Console.ReadLine();
            foreach (var item in books)
            {
                if (item.name == name)
                {
                    Console.WriteLine("--------------------------------刪除--------------------------------");
                    books.Remove(item);
                    break;
                }
            }

            Console.Write("請輸入要修改的圖書名稱:");
            name = Console.ReadLine();
            foreach (var item in books)
            {
                if (item.name == name)
                {
                    Console.Write("請輸修改后圖書名稱:");
                    string newname = Console.ReadLine();
                    item.name = newname;
                    Console.Write("請輸修改后圖書價格:");
                    double price =Convert.ToDouble(Console.ReadLine());
                    item.price = price;
                    break;
                }
            }

            Console.WriteLine("--------------------------------展示所有--------------------------------");
            foreach (var item in books)
            {

                item.Show();
            }



        }
    }
}

 四、汽車管理系統示例

4.1、添加汽車類

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication22
{
    /// <summary>
    /// 汽車類
    /// </summary>
    public class Car
    {
        public int id;  //編號
        public string name;  //車名
        public void Show()  //展示方法
        {
            Console.WriteLine("{0}\t{1}",id,name);
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

 4.2、菜單定義

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication22
{
    /// <summary>
    /// 汽車類
    /// </summary>
    public class Car
    {
        public int id;  //編號
        public string name;  //車名
        public void Show()  //展示方法
        {
            Console.WriteLine("{0}\t{1}",id,name);
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            Menu();
        }

        public static int Menu()
        {
            Console.WriteLine("******************************************");
            Console.WriteLine("汽車管理系統");
            Console.WriteLine("1、添加汽車");
            Console.WriteLine("2、修改汽車");
            Console.WriteLine("3、查詢汽車");
            Console.WriteLine("4、刪除汽車");
            Console.WriteLine("5、打印列表");
            Console.WriteLine("6、退出系統");
            Console.WriteLine("******************************************");
            Console.Write("請選擇(1-6):");
            return Convert.ToInt32(Console.ReadLine());
        }
    }
}

 4.3、響應菜單 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication22
{
    /// <summary>
    /// 汽車類
    /// </summary>
    public class Car
    {
        public int id;  //編號
        public string name;  //車名
        public void Show()  //展示方法
        {
            Console.WriteLine("{0}\t{1}", id, name);
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            int index;
            do
            {
                index = Menu();
                if (index == 1)
                {
                    Console.WriteLine("添加汽車");
                }
                else if (index == 2)
                {
                    Console.WriteLine("修改汽車");
                }
                else if (index == 3)
                {
                    Console.WriteLine("查詢汽車");
                }
                else if (index == 4)
                {
                    Console.WriteLine("刪除汽車");
                }
                else if (index == 5)
                {
                    Console.WriteLine("打印列表");
                }
                else if (index == 6)
                {
                    Console.WriteLine("退出系統");
                    break;
                }
                else
                {
                    Console.WriteLine("輸入錯誤");
                }
                Console.WriteLine("按任意鍵繼續....");
                Console.ReadLine();
            } while (index != 6);  //不為6就繼續
        }

        public static int Menu()
        {
            Console.Clear();  //清屏
            Console.WriteLine("******************************************");
            Console.WriteLine("汽車管理系統");
            Console.WriteLine("1、添加汽車");
            Console.WriteLine("2、修改汽車");
            Console.WriteLine("3、查詢汽車");
            Console.WriteLine("4、刪除汽車");
            Console.WriteLine("5、打印列表");
            Console.WriteLine("6、退出系統");
            Console.WriteLine("******************************************");
            Console.Write("請選擇(1-6):");
            return Convert.ToInt32(Console.ReadLine());
        }
    }
}

 4.4、添加汽車

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication22
{
    /// <summary>
    /// 汽車類
    /// </summary>
    public class Car
    {
        public int id;  //編號
        public string name;  //車名
        public void Show()  //展示方法
        {
            Console.WriteLine("{0}\t{1}", id, name);
        }
    }



    class Program
    {
        public static List<Car> cars = new List<Car>();  //汽車集合

        public static void AddCar()
        {
            Car car = new Car();  //實例化一個汽車對象
            Console.Write("請輸入編號:");
            car.id = Convert.ToInt32(Console.ReadLine());
            Console.Write("請輸入名稱:");
            car.name = Console.ReadLine();
            //將汽車對象添加到集合中
            cars.Add(car);
            Console.WriteLine("添加成功!");
        }

        static void Main(string[] args)
        {
            int index;
            do
            {
                index = Menu();
                if (index == 1)
                {
                    AddCar();
                }
                else if (index == 2)
                {
                    Console.WriteLine("修改汽車");
                }
                else if (index == 3)
                {
                    Console.WriteLine("查詢汽車");
                }
                else if (index == 4)
                {
                    Console.WriteLine("刪除汽車");
                }
                else if (index == 5)
                {
                    Console.WriteLine("打印列表");
                }
                else if (index == 6)
                {
                    Console.WriteLine("退出系統");
                    break;
                }
                else
                {
                    Console.WriteLine("輸入錯誤");
                }
                Console.WriteLine("按任意鍵繼續....");
                Console.ReadLine();
            } while (index != 6);  //不為6就繼續
        }

        public static int Menu()
        {
            Console.Clear();  //清屏
            Console.WriteLine("******************************************");
            Console.WriteLine("汽車管理系統");
            Console.WriteLine("1、添加汽車");
            Console.WriteLine("2、修改汽車");
            Console.WriteLine("3、查詢汽車");
            Console.WriteLine("4、刪除汽車");
            Console.WriteLine("5、打印列表");
            Console.WriteLine("6、退出系統");
            Console.WriteLine("******************************************");
            Console.Write("請選擇(1-6):");
            return Convert.ToInt32(Console.ReadLine());
        }
    }
}

 4.5、展示汽車列表

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication22
{
    /// <summary>
    /// 汽車類
    /// </summary>
    public class Car
    {
        public int id;  //編號
        public string name;  //車名
        public void Show()  //展示方法
        {
            Console.WriteLine("{0}\t{1}", id, name);
        }
    }



    class Program
    {
        public static List<Car> cars = new List<Car>();  //汽車集合

        public static void AddCar()
        {
            Car car = new Car();  //實例化一個汽車對象
            Console.Write("請輸入編號:");
            car.id = Convert.ToInt32(Console.ReadLine());
            Console.Write("請輸入名稱:");
            car.name = Console.ReadLine();
            //將汽車對象添加到集合中
            cars.Add(car);
            Console.WriteLine("添加成功!");
        }

        public static void ListCar()
        {
            foreach (var item in cars)
            {
                item.Show();
            }
        }

        static void Main(string[] args)
        {
            int index;
            do
            {
                index = Menu();
                if (index == 1)
                {
                    AddCar();
                }
                else if (index == 2)
                {
                    Console.WriteLine("修改汽車");
                }
                else if (index == 3)
                {
                    Console.WriteLine("查詢汽車");
                }
                else if (index == 4)
                {
                    Console.WriteLine("刪除汽車");
                }
                else if (index == 5)
                {
                    ListCar();
                }
                else if (index == 6)
                {
                    Console.WriteLine("退出系統");
                    break;
                }
                else
                {
                    Console.WriteLine("輸入錯誤");
                }
                Console.WriteLine("按任意鍵繼續....");
                Console.ReadLine();
            } while (index != 6);  //不為6就繼續
        }

        public static int Menu()
        {
            Console.Clear();  //清屏
            Console.WriteLine("******************************************");
            Console.WriteLine("汽車管理系統");
            Console.WriteLine("1、添加汽車");
            Console.WriteLine("2、修改汽車");
            Console.WriteLine("3、查詢汽車");
            Console.WriteLine("4、刪除汽車");
            Console.WriteLine("5、打印列表");
            Console.WriteLine("6、退出系統");
            Console.WriteLine("******************************************");
            Console.Write("請選擇(1-6):");
            return Convert.ToInt32(Console.ReadLine());
        }
    }
}

 4.6、修改汽車

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication22
{
    /// <summary>
    /// 汽車類
    /// </summary>
    public class Car
    {
        public int id;  //編號
        public string name;  //車名
        public void Show()  //展示方法
        {
            Console.WriteLine("{0}\t{1}", id, name);
        }
    }



    class Program
    {
        public static List<Car> cars = new List<Car>();  //汽車集合

        public static void AddCar()
        {
            Car car = new Car();  //實例化一個汽車對象
            Console.Write("請輸入編號:");
            car.id = Convert.ToInt32(Console.ReadLine());
            Console.Write("請輸入名稱:");
            car.name = Console.ReadLine();
            //將汽車對象添加到集合中
            cars.Add(car);
            Console.WriteLine("添加成功!");
        }

        public static void ListCar()
        {
            foreach (var item in cars)
            {
                item.Show();
            }
        }

        static void Main(string[] args)
        {
            int index;
            do
            {
                index = Menu();
                if (index == 1)
                {
                    AddCar();
                }
                else if (index == 2)
                {
                    XiugaiQiChe();
                }
                else if (index == 3)
                {
                    Console.WriteLine("查詢汽車");
                }
                else if (index == 4)
                {
                    Console.WriteLine("刪除汽車");
                }
                else if (index == 5)
                {
                    ListCar();
                }
                else if (index == 6)
                {
                    Console.WriteLine("退出系統");
                    break;
                }
                else
                {
                    Console.WriteLine("輸入錯誤");
                }
                Console.WriteLine("按任意鍵繼續....");
                Console.ReadLine();
            } while (index != 6);  //不為6就繼續
        }

        private static void XiugaiQiChe()
        {
            ListCar();
            Console.Write("請輸入要修改的汽車編號:");
            int id = Convert.ToInt32(Console.ReadLine());
            Car car = null; //要找的車
            //根據汽車編號查找汽車
            foreach (var item in cars)
            {
                if (item.id == id)
                {
                    car = item;
                    break;
                }
            }

            if (car == null)
            {
                Console.WriteLine("您要修改的汽車不存在");
            }
            else
            {
                Console.Write("請輸入名稱:");
                car.name = Console.ReadLine();
                Console.WriteLine("修改成功!");
            }

        }


        public static int Menu()
        {
            Console.Clear();  //清屏
            Console.WriteLine("******************************************");
            Console.WriteLine("汽車管理系統");
            Console.WriteLine("1、添加汽車");
            Console.WriteLine("2、修改汽車");
            Console.WriteLine("3、查詢汽車");
            Console.WriteLine("4、刪除汽車");
            Console.WriteLine("5、打印列表");
            Console.WriteLine("6、退出系統");
            Console.WriteLine("******************************************");
            Console.Write("請選擇(1-6):");
            return Convert.ToInt32(Console.ReadLine());
        }
    }
}

 4.6、查詢汽車

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication22
{
    /// <summary>
    /// 汽車類
    /// </summary>
    public class Car
    {
        public int id;  //編號
        public string name;  //車名
        public void Show()  //展示方法
        {
            Console.WriteLine("{0}\t{1}", id, name);
        }
    }



    class Program
    {
        public static List<Car> cars = new List<Car>();  //汽車集合

        public static void AddCar()
        {
            Car car = new Car();  //實例化一個汽車對象
            Console.Write("請輸入編號:");
            car.id = Convert.ToInt32(Console.ReadLine());
            Console.Write("請輸入名稱:");
            car.name = Console.ReadLine();
            //將汽車對象添加到集合中
            cars.Add(car);
            Console.WriteLine("添加成功!");
        }

        public static void ListCar()
        {
            foreach (var item in cars)
            {
                item.Show();
            }
        }

        static void Main(string[] args)
        {
            int index;
            do
            {
                index = Menu();
                if (index == 1)
                {
                    AddCar();
                }
                else if (index == 2)
                {
                    XiugaiQiChe();
                }
                else if (index == 3)
                {
                    Chaxunqiche();
                }
                else if (index == 4)
                {
                    Console.WriteLine("刪除汽車");
                }
                else if (index == 5)
                {
                    ListCar();
                }
                else if (index == 6)
                {
                    Console.WriteLine("退出系統");
                    break;
                }
                else
                {
                    Console.WriteLine("輸入錯誤");
                }
                Console.WriteLine("按任意鍵繼續....");
                Console.ReadLine();
            } while (index != 6);  //不為6就繼續
        }

        private static void Chaxunqiche()
        {
            Console.Write("請輸入要查詢的汽車名稱(支持模糊查詢):");
            String name = Console.ReadLine();
            foreach (var item in cars)
            {
                if (item.name.Contains(name))
                {
                    item.Show();
                }
            }
        }

        private static void XiugaiQiChe()
        {
            ListCar();
            Console.Write("請輸入要修改的汽車編號:");
            int id = Convert.ToInt32(Console.ReadLine());
            Car car = null; //要找的車
            //根據汽車編號查找汽車
            foreach (var item in cars)
            {
                if (item.id == id)
                {
                    car = item;
                    break;
                }
            }

            if (car == null)
            {
                Console.WriteLine("您要修改的汽車不存在");
            }
            else
            {
                Console.Write("請輸入名稱:");
                car.name = Console.ReadLine();
                Console.WriteLine("修改成功!");
            }

        }


        public static int Menu()
        {
            Console.Clear();  //清屏
            Console.WriteLine("******************************************");
            Console.WriteLine("汽車管理系統");
            Console.WriteLine("1、添加汽車");
            Console.WriteLine("2、修改汽車");
            Console.WriteLine("3、查詢汽車");
            Console.WriteLine("4、刪除汽車");
            Console.WriteLine("5、打印列表");
            Console.WriteLine("6、退出系統");
            Console.WriteLine("******************************************");
            Console.Write("請選擇(1-6):");
            return Convert.ToInt32(Console.ReadLine());
        }
    }
}

 4.7、刪除汽車

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication22
{
    /// <summary>
    /// 汽車類
    /// </summary>
    public class Car
    {
        public int id;  //編號
        public string name;  //車名
        public void Show()  //展示方法
        {
            Console.WriteLine("{0}\t{1}", id, name);
        }
    }



    class Program
    {
        public static List<Car> cars = new List<Car>();  //汽車集合

        public static void AddCar()
        {
            Car car = new Car();  //實例化一個汽車對象
            Console.Write("請輸入編號:");
            car.id = Convert.ToInt32(Console.ReadLine());
            Console.Write("請輸入名稱:");
            car.name = Console.ReadLine();
            //將汽車對象添加到集合中
            cars.Add(car);
            Console.WriteLine("添加成功!");
        }

        public static void ListCar()
        {
            foreach (var item in cars)
            {
                item.Show();
            }
        }

        static void Main(string[] args)
        {
            int index;
            do
            {
                index = Menu();
                if (index == 1)
                {
                    AddCar();
                }
                else if (index == 2)
                {
                    XiugaiQiChe();
                }
                else if (index == 3)
                {
                    Chaxunqiche();
                }
                else if (index == 4)
                {
                    DelCar();
                }
                else if (index == 5)
                {
                    ListCar();
                }
                else if (index == 6)
                {
                    Console.WriteLine("退出系統");
                    break;
                }
                else
                {
                    Console.WriteLine("輸入錯誤");
                }
                Console.WriteLine("按任意鍵繼續....");
                Console.ReadLine();
            } while (index != 6);  //不為6就繼續
        }

        /// <summary>
        /// 刪除汽車
        /// </summary>
        private static void DelCar()
        {
            ListCar();  //先展示所有汽車
            Console.Write("請輸入要刪除的汽車編號:");
            int id = Convert.ToInt32(Console.ReadLine());
            bool sfzd = false;  //樹旗,是否刪除成功,默認不成功
            //循環遍歷所有汽車
            foreach (var item in cars)
            {
                if (item.id == id)  //當前汽車的編號是否與要刪除的一致
                {
                    cars.Remove(item);  //從集合中刪除當前汽車
                    sfzd = true;  //刪除成功標記
                    break;
                }
            }

            if (sfzd)
            {
                Console.WriteLine("刪除成功!");
            }else
            {
                Console.WriteLine("刪除失敗!");
            }

        }

        private static void Chaxunqiche()
        {
            Console.Write("請輸入要查詢的汽車名稱(支持模糊查詢):");
            String name = Console.ReadLine();
            foreach (var item in cars)
            {
                if (item.name.Contains(name))
                {
                    item.Show();
                }
            }
        }

        private static void XiugaiQiChe()
        {
            ListCar();
            Console.Write("請輸入要修改的汽車編號:");
            int id = Convert.ToInt32(Console.ReadLine());
            Car car = null; //要找的車
            //根據汽車編號查找汽車
            foreach (var item in cars)
            {
                if (item.id == id)
                {
                    car = item;
                    break;
                }
            }

            if (car == null)
            {
                Console.WriteLine("您要修改的汽車不存在");
            }
            else
            {
                Console.Write("請輸入名稱:");
                car.name = Console.ReadLine();
                Console.WriteLine("修改成功!");
            }

        }


        public static int Menu()
        {
            Console.Clear();  //清屏
            Console.WriteLine("******************************************");
            Console.WriteLine("汽車管理系統");
            Console.WriteLine("1、添加汽車");
            Console.WriteLine("2、修改汽車");
            Console.WriteLine("3、查詢汽車");
            Console.WriteLine("4、刪除汽車");
            Console.WriteLine("5、打印列表");
            Console.WriteLine("6、退出系統");
            Console.WriteLine("******************************************");
            Console.Write("請選擇(1-6):");
            return Convert.ToInt32(Console.ReadLine());
        }
    }
}

4.8、序列化

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;

namespace ConsoleApplication22
{
    /// <summary>
    /// 汽車類
    /// </summary>
    [Serializable]   //可序列化的特性
    public class Car
    {
        public int id;  //編號
        public string name;  //車名
        public void Show()  //展示方法
        {
            Console.WriteLine("{0}\t{1}", id, name);
        }
    }



    class Program
    {
        public static List<Car> cars = new List<Car>();  //汽車集合

        public static void AddCar()
        {
            Car car = new Car();  //實例化一個汽車對象
            Console.Write("請輸入編號:");
            car.id = Convert.ToInt32(Console.ReadLine());
            Console.Write("請輸入名稱:");
            car.name = Console.ReadLine();
            //將汽車對象添加到集合中
            cars.Add(car);
            Console.WriteLine("添加成功!");
        }

        public static void ListCar()
        {
            foreach (var item in cars)
            {
                item.Show();
            }
        }

        static void Main(string[] args)
        {
            int index;
            do
            {
                index = Menu();
                if (index == 1)
                {
                    AddCar();
                }
                else if (index == 2)
                {
                    XiugaiQiChe();
                }
                else if (index == 3)
                {
                    Chaxunqiche();
                }
                else if (index == 4)
                {
                    DelCar();
                }
                else if (index == 5)
                {
                    ListCar();
                }
                else if (index == 6)
                {
                    save();
                }
                else if (index == 7)
                {
                    
                }
                else if (index == 8)
                {
                    Console.WriteLine("退出系統");
                    break;
                }
                else
                {
                    Console.WriteLine("輸入錯誤");
                }
                Console.WriteLine("按任意鍵繼續....");
                Console.ReadLine();
            } while (index != 6);  //不為6就繼續
        }

        /// <summary>
        /// 保存
        /// </summary>
        private static void save()
        {
            //創建文件流,指定文件位置,模式為創建
            FileStream fs = new FileStream("cars.bin", FileMode.Create);
            //創建二進制格式化器
            BinaryFormatter bf = new BinaryFormatter();
            //將cars對象序列化成二進制到car.bin文件中
            bf.Serialize(fs, cars);
            //關閉文件流
            fs.Close();
            Console.WriteLine("保存成功!");
        }

        /// <summary>
        /// 刪除汽車
        /// </summary>
        private static void DelCar()
        {
            ListCar();  //先展示所有汽車
            Console.Write("請輸入要刪除的汽車編號:");
            int id = Convert.ToInt32(Console.ReadLine());
            bool sfzd = false;  //樹旗,是否刪除成功,默認不成功
            //循環遍歷所有汽車
            foreach (var item in cars)
            {
                if (item.id == id)  //當前汽車的編號是否與要刪除的一致
                {
                    cars.Remove(item);  //從集合中刪除當前汽車
                    sfzd = true;  //刪除成功標記
                    break;
                }
            }

            if (sfzd)
            {
                Console.WriteLine("刪除成功!");
            }else
            {
                Console.WriteLine("刪除失敗!");
            }

        }

        private static void Chaxunqiche()
        {
            Console.Write("請輸入要查詢的汽車名稱(支持模糊查詢):");
            String name = Console.ReadLine();
            foreach (var item in cars)
            {
                if (item.name.Contains(name))
                {
                    item.Show();
                }
            }
        }

        private static void XiugaiQiChe()
        {
            ListCar();
            Console.Write("請輸入要修改的汽車編號:");
            int id = Convert.ToInt32(Console.ReadLine());
            Car car = null; //要找的車
            //根據汽車編號查找汽車
            foreach (var item in cars)
            {
                if (item.id == id)
                {
                    car = item;
                    break;
                }
            }

            if (car == null)
            {
                Console.WriteLine("您要修改的汽車不存在");
            }
            else
            {
                Console.Write("請輸入名稱:");
                car.name = Console.ReadLine();
                Console.WriteLine("修改成功!");
            }

        }


        public static int Menu()
        {
            Console.Clear();  //清屏
            Console.WriteLine("******************************************");
            Console.WriteLine("汽車管理系統");
            Console.WriteLine("1、添加汽車");
            Console.WriteLine("2、修改汽車");
            Console.WriteLine("3、查詢汽車");
            Console.WriteLine("4、刪除汽車");
            Console.WriteLine("5、打印列表");
            Console.WriteLine("6、保存數據");
            Console.WriteLine("7、加載數據");
            Console.WriteLine("8、退出系統");
            Console.WriteLine("******************************************");
            Console.Write("請選擇(1-6):");
            return Convert.ToInt32(Console.ReadLine());
        }
    }
}

4.9、反序列化

 

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;

namespace ConsoleApplication22
{
    /// <summary>
    /// 汽車類
    /// </summary>
    [Serializable]   //可序列化的特性
    public class Car
    {
        public int id;  //編號
        public string name;  //車名
        public void Show()  //展示方法
        {
            Console.WriteLine("{0}\t{1}", id, name);
        }
    }



    class Program
    {
        public static List<Car> cars = new List<Car>();  //汽車集合

        public static void AddCar()
        {
            Car car = new Car();  //實例化一個汽車對象
            Console.Write("請輸入編號:");
            car.id = Convert.ToInt32(Console.ReadLine());
            Console.Write("請輸入名稱:");
            car.name = Console.ReadLine();
            //將汽車對象添加到集合中
            cars.Add(car);
            Console.WriteLine("添加成功!");
            save();
        }

        public static void ListCar()
        {
            foreach (var item in cars)
            {
                item.Show();
            }
        }

        static void Main(string[] args)
        {
            int index;
            load();
            do
            {
                index = Menu();
                if (index == 1)
                {
                    AddCar();
                }
                else if (index == 2)
                {
                    XiugaiQiChe();
                }
                else if (index == 3)
                {
                    Chaxunqiche();
                }
                else if (index == 4)
                {
                    DelCar();
                }
                else if (index == 5)
                {
                    ListCar();
                }
                else if (index == 6)
                {
                    save();
                }
                else if (index == 7)
                {
                    load();
                }
                else if (index == 8)
                {
                    Console.WriteLine("退出系統");
                    break;
                }
                else
                {
                    Console.WriteLine("輸入錯誤");
                }
                Console.WriteLine("按任意鍵繼續....");
                Console.ReadLine();
            } while (index != 6);  //不為6就繼續
        }

        /// <summary>
        /// 加載數據
        /// </summary>
        private static void load()
        {
            //創建文件流,指定文件位置,模式為打開
            FileStream fs = new FileStream("cars.bin", FileMode.Open);
            //創建二進制格式化器
            BinaryFormatter bf = new BinaryFormatter();
            //反序列化文件流並強制轉換成目標類型
            cars = (List<Car>)bf.Deserialize(fs);
            fs.Close();  //關閉文件流
            Console.WriteLine("加載成功!");
            ListCar();
        }

        /// <summary>
        /// 保存
        /// </summary>
        private static void save()
        {
            //創建文件流,指定文件位置,模式為創建
            FileStream fs = new FileStream("cars.bin", FileMode.Create);
            //創建二進制格式化器
            BinaryFormatter bf = new BinaryFormatter();
            //將cars對象序列化成二進制到car.bin文件中
            bf.Serialize(fs, cars);
            //關閉文件流
            fs.Close();
            Console.WriteLine("保存成功!");
        }

        /// <summary>
        /// 刪除汽車
        /// </summary>
        private static void DelCar()
        {
            ListCar();  //先展示所有汽車
            Console.Write("請輸入要刪除的汽車編號:");
            int id = Convert.ToInt32(Console.ReadLine());
            bool sfzd = false;  //樹旗,是否刪除成功,默認不成功
            //循環遍歷所有汽車
            foreach (var item in cars)
            {
                if (item.id == id)  //當前汽車的編號是否與要刪除的一致
                {
                    cars.Remove(item);  //從集合中刪除當前汽車
                    sfzd = true;  //刪除成功標記
                    break;
                }
            }

            if (sfzd)
            {
                Console.WriteLine("刪除成功!");
            }else
            {
                Console.WriteLine("刪除失敗!");
            }

        }

        private static void Chaxunqiche()
        {
            Console.Write("請輸入要查詢的汽車名稱(支持模糊查詢):");
            String name = Console.ReadLine();
            foreach (var item in cars)
            {
                if (item.name.Contains(name))
                {
                    item.Show();
                }
            }
        }

        private static void XiugaiQiChe()
        {
            ListCar();
            Console.Write("請輸入要修改的汽車編號:");
            int id = Convert.ToInt32(Console.ReadLine());
            Car car = null; //要找的車
            //根據汽車編號查找汽車
            foreach (var item in cars)
            {
                if (item.id == id)
                {
                    car = item;
                    break;
                }
            }

            if (car == null)
            {
                Console.WriteLine("您要修改的汽車不存在");
            }
            else
            {
                Console.Write("請輸入名稱:");
                car.name = Console.ReadLine();
                Console.WriteLine("修改成功!");
            }

        }


        public static int Menu()
        {
            Console.Clear();  //清屏
            Console.WriteLine("******************************************");
            Console.WriteLine("汽車管理系統");
            Console.WriteLine("1、添加汽車");
            Console.WriteLine("2、修改汽車");
            Console.WriteLine("3、查詢汽車");
            Console.WriteLine("4、刪除汽車");
            Console.WriteLine("5、打印列表");
            Console.WriteLine("6、保存數據");
            Console.WriteLine("7、加載數據");
            Console.WriteLine("8、退出系統");
            Console.WriteLine("******************************************");
            Console.Write("請選擇(1-6):");
            return Convert.ToInt32(Console.ReadLine());
        }
    }
}

 五、內部測試

1、請完成一個學生管理系統(StudentMIS),實現如下功能:

添加學生(學號、姓名,性別,年齡,班級,電話)Student

打印列表(顯示所有學生)

刪除學生(輸入學號,執行刪除)

計算器

保存

加載

六、考試復習

機試下載

筆試下載

機試模擬考試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM