c#编程题目 高手进

分别编写资料类、图书类和光盘类,具体要求如下:(1)资料类命名为Material,作为基类;其成员变量包括编号id、名称name、性质type和建立时间createtim... 分别编写资料类、图书类和光盘类,具体要求如下:
(1)资料类命名为Material,作为基类;其成员变量包括编号id、名称name、性质type和建立时间createtime;有参数的构造函数;成员函数包括取得性质的函数getType和显示全部成员变量的函数show。
(2)图书类命名为Book,作为资料类的一个派生类;其成员变量包括作者author和定价price;有参数的构造函数;成员函数包括取得定价的函数getPrice和显示全部成员变量的函数show。
(3)光盘类命名为Cdroom,作为资料类的另一个派生类;其成员变量包括制作单位publisher和容量capacity;有参数的构造函数;成员函数包括取得光盘容量的函数getCapacity和显示全部成员变量的函数show。
(4)三个类的显示成员变量的函数使用多态方式编写。
编写主函数,首先从键盘输入数据,使用各类的构造函数分别定义资料对象、图书对象和光盘对象,然后分别调用资料对象的取得资料性质的函数和显示全部成员变量值的函数、图书对象的取得定价的函数和显示全部成员变量值的函数以及光盘对象的取得光盘容量的函数和显示全部成员变量的函数。

示例输入和输出:
请输入资料信息,依次为编号、名称、性质和建立时间:
1 计算机 资料 2014-6-21
资料性质:资料
资料编号:1,资料名称:计算机,资料性质:资料,资料建立时间:2014-6-21

请输入图书信息,依次为编号、名称、性质、建立时间、作者和定价:
2 外语 图书 2014-6-22 张 34.5
图书定价:34.5
资料编号:2,资料名称:外语,资料性质:图书,资料建立时间:2014-6-22图书作者:张,定价:34.5

请输入光盘信息,依次为编号、名称、性质、建立时间、制作单位和容量:
3 数学 光盘 014-6-23 曙光出版社 500
光盘容量:500
资料编号:3,资料名称:数学,资料性质:光盘,资料建立时间:014-6-23光盘制作单位:曙光出版社,光盘容量:500
是C#语言!不要C语言 也不是C++
展开
 我来答
sniperfivd24c6
2017-05-29 · TA获得超过247个赞
知道小有建树答主
回答量:273
采纳率:100%
帮助的人:206万
展开全部

常见的数据结构。。。。


效果图:

上代码:

class Program
    {
        
        static void Main(string[] args)
        {
            List<Material> data = new List<Material>();
            while (true) {
                Console.WriteLine("请输入数据编号");
                string _id = Console.ReadLine();
                long sid = -1;
                long.TryParse(_id, out sid);
                while (sid < 0) {
                    Console.WriteLine("错误编号必须大于零,请重新输入数据编号");
                    _id = Console.ReadLine();
                    long.TryParse(_id, out sid);
                }
                if (data.Count > 0) {
                    while (data.Any(s => s.ID == sid))
                    {
                        Console.WriteLine("错误编号,与其他信息重复,请重新输入数据编号");
                        _id = Console.ReadLine();
                        long.TryParse(_id, out sid);
                    }
                }
                Console.WriteLine("请输入数据名称");
                string _name = Console.ReadLine();
                while (string.IsNullOrWhiteSpace(_name) )
                {
                    Console.WriteLine("数据名称不能为空,请重新输入数据名称");
                    _name = Console.ReadLine();
                }
                Console.WriteLine("请输入数据类别(单个英文字母) M/B/C  资料/图书/CD光盘");
                ConsoleKeyInfo ikey = Console.ReadKey();
                while ( !(ikey.Key == ConsoleKey.M || ikey.Key == ConsoleKey.B || ikey.Key == ConsoleKey.C))
                {
                    Console.WriteLine("输入错误");
                    Console.WriteLine("请输入数据类别(单个英文字母) M/B/C  资料/图书/CD光盘");
                    ikey = Console.ReadKey();
                }
                Console.WriteLine("请输入创建时间,不输入为当前系统时间");
                string _crimte = Console.ReadLine();
                DateTime scrtime = DateTime.Now;
                if (!string.IsNullOrWhiteSpace(_crimte)) {
                    while (!DateTime.TryParse(_crimte, out scrtime)) {
                        Console.WriteLine("时间格式无法解析,请重新尝试");
                        _crimte = Console.ReadLine();
                    }
                }
                if (ikey.Key == ConsoleKey.M)
                {
                    data.Add(new Material(sid, _name,"资料", scrtime));
                }
                else if (ikey.Key == ConsoleKey.B)
                {
                    Console.WriteLine("请输入图书作者");
                    string _author = Console.ReadLine();
                    while (string.IsNullOrWhiteSpace(_author))
                    {
                        Console.WriteLine("图书作者不能为空,请重新输入作者");
                        _author = Console.ReadLine();
                    }
                    Console.WriteLine("请输入图书售价");
                    string _price = Console.ReadLine();
                    while (string.IsNullOrWhiteSpace(_price))
                    {
                        Console.WriteLine("图书售价不能为空,请重新输入售价");
                        _price = Console.ReadLine();
                    }
                    decimal _priced = 0;
                    while (!decimal.TryParse(_price,out _priced) || _priced<0)
                    {
                        Console.WriteLine("图书售价非法,不能小于等于0,请重新输入售价");
                        _price = Console.ReadLine();
                    }
                    data.Add(new Book(sid, _name, "图书", scrtime, _author,_priced));
                }
                else if (ikey.Key == ConsoleKey.C)
                {
                    Console.WriteLine("请输入光盘发行者");
                    string _publiser = Console.ReadLine();
                    while (string.IsNullOrWhiteSpace(_publiser))
                    {
                        Console.WriteLine("光盘发行者不能为空,请重新输入光盘发行者");
                        _publiser = Console.ReadLine();
                    }
                    Console.WriteLine("请输入光盘容量");
                    string _captistr = Console.ReadLine();
                    while (string.IsNullOrWhiteSpace(_captistr))
                    {
                        Console.WriteLine("光盘容量不能为空,请重新输入光盘容量");
                        _captistr = Console.ReadLine();
                    }
                    double _capti = 0;
                    while (!double.TryParse(_captistr, out _capti) || _capti < 0)
                    {
                        Console.WriteLine("光盘容量非法,不能小于等于0,请重新输入光盘容量");
                        _captistr = Console.ReadLine();
                    }
                    data.Add(new Cdroom(sid, _name, "光盘", scrtime, _publiser, _capti));
                }
                else {
                    Console.WriteLine("意外的资料类别无法继续, 按任意键退出程序");
                    Console.ReadKey();
                    return;
                }
                Console.WriteLine("这个资料输入完毕,按E结束录入,其他继续录入");
                var ife = Console.ReadKey();
                if (ife.Key == ConsoleKey.E) {
                    break;
                }
            }
            foreach (var mitem in data) {
                Console.WriteLine( mitem.Show("Chinese"));
            }
            Console.ReadKey();
        }
    }
    public class Material
    {
        protected Material()
        {
        }
        public Material(long id,string name, string type) {
            ID = id;
            Name = name;
            Type = type;
            CrTime = DateTime.Now;
        }
        public Material(long id, string name, string type,DateTime crtime)
        {
            ID = id;
            Name = name;
            Type = type;
            CrTime = crtime;
        }
        public long ID;
        public string Name;
        public string Type;
        public DateTime CrTime;
        public new string GetType() {
            return this.Type;
        }
        public virtual string Show()
        {
            return "ID:" + ID.ToString() + "Name:" + Name + "Type:" + Type + "CrTime:" + CrTime.ToString() ;
        }
        public virtual string Show(string language) {
            switch (language) {
                case "Chinese": {
                        return "编号:" + ID.ToString() + "名称:" + Name + "属性:" + Type + "创建时间:" + CrTime.ToString();
                    }
                default: return this.Show();
            }
        }
    }
    public class Book : Material {
        public Book():base() {
        }
        public Book(long id, string name, string type) : base( id,  name,  type) { }
        public Book(long id, string name, string type, DateTime crtime) : base(id, name, type, crtime) { }
        public Book(long id, string name, string type, DateTime crtime,string author,decimal price) : base(id, name, type, crtime) {
            Author = author;
            Price = price;
        }
        public decimal GetPrice() {
            return this.Price;
        }
        public override string Show()
        {
            return "ID:" + ID.ToString() + "Name:" + Name + "Type:" + Type + "CrTime:" + CrTime.ToString() + "Author:" + Author + "Price:" + Price.ToString();
        }
        public override string Show(string language)
        {
            switch (language)
            {
                case "Chinese":
                    {
                        return "编号:" + ID.ToString() + "名称:" + Name + "属性:" + Type + "创建时间:" + CrTime.ToString() + "作者:" + Author + "价格:" + Price.ToString();
                    }
                default: return this.Show();
            }
        }
        public string Author;
        public decimal Price;
    }
    public class Cdroom : Material
    {
        public Cdroom() : base()
        {
        }
        public Cdroom(long id, string name, string type) : base(id, name, type) { }
        public Cdroom(long id, string name, string type, DateTime crtime) : base(id, name, type, crtime) { }
        public Cdroom(long id, string name, string type, DateTime crtime, string publisher, double capacity) : base(id, name, type, crtime)
        {
            Publisher = publisher;
            Capacity = capacity;
        }
        //getPrice和显示全部成员变量的函数show。
        public double GetCapacity()
        {
            return this.Capacity;
        }
        public override string Show()
        {
            return "ID:" + ID.ToString() + "Name:" + Name + "Type:" + Type + "CrTime:" + CrTime.ToString() + "Publisher:" + Publisher + "Capacity:" + Capacity.ToString();
        }
        public override string Show(string language)
        {
            switch (language)
            {
                case "Chinese":
                    {
                        return "编号:" + ID.ToString() + "名称:" + Name + "属性:" + Type + "创建时间:" + CrTime.ToString() + "发行:" + Publisher + "容量:" + Capacity.ToString();
                    }
                default: return this.Show();
            }
        }
        public string Publisher;
        public double Capacity;
    }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式