| 题目:  对一组学生档案进行排序 学生档案如下 
 排序要求如下: 1.根据入学时间正序 2.根据入学时间倒序 3.女在前男在后显示 4.男在前女在后显示 5.女在前男在后,性别相同根据入学时间正序排序 6.男在前女在后,性别相同根据入学时间倒序排序 
 要求: 1. 用时不允许超过60分钟,60分钟结束后不管做多少应立即停止。 2. 开发环境为C#.Net  可以是任何形式,网页,控制台程序,Winform都可以。 3. 请使用您最擅长的方法,写出您认为最优秀的代码。 我实现的代码如下:我用的是控制台程序,谈不上擅长吧,只是感觉用控制吧更能节省时间,和体验算法的精炼
 
 [C#] 纯文本查看 复制代码 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 建立学生档案
            //学生档案
            List<StudentInfo> studentlist = new List<StudentInfo>();
            //录入赵阳档案
            studentlist.Add(new StudentInfo { NoId = 1, Sex = 1, Name = "赵阳", EntranceTime = DateTime.Now.AddMonths(-3) });
            //录入小雪档案
            studentlist.Add(new StudentInfo { NoId = 2, Sex = 0, Name = "小雪", EntranceTime = DateTime.Now.AddMonths(-1) });
            //录入王刚档案
            studentlist.Add(new StudentInfo { NoId = 3, Sex = 1, Name = "王刚", EntranceTime = DateTime.Now.AddYears(-3) });
            //录入赵佳佳档案
            studentlist.Add(new StudentInfo { NoId = 4, Sex = 0, Name = "赵佳佳", EntranceTime = DateTime.Now.AddDays(-3) });
            #endregion
            #region 排序
            Console.WriteLine("------------------------正序-----------------------------------");
            //根据入年年份正序排序
            studentlist.Sort((x, y) =>
            {
                return x.EntranceTime.CompareTo(y.EntranceTime);
            });
            //打印结果
            WriteList(studentlist);
            Console.WriteLine("------------------------倒序-----------------------------------");
            //反转实现倒序排序
            studentlist.Reverse();
            //打印结果
            WriteList(studentlist);
            #endregion
            Console.WriteLine("------------------------女在前男在后-----------------------------------");
            studentlist.Sort((x, y) =>
            {
                return x.Sex.CompareTo(y.Sex);
            });
            //打印结果
            WriteList(studentlist);
            Console.WriteLine("------------------------男在前女在后-----------------------------------");
            studentlist.Reverse();
            //打印结果
            WriteList(studentlist);
            Console.WriteLine("---------------女在前男在后,性别相同安入学时间正序排序-----------------");
            studentlist.Sort((x, y) =>
            {
                int value = x.Sex.CompareTo(y.Sex);
                if (value==0)
                {
                     value = x.EntranceTime.CompareTo(y.EntranceTime);
                }
                return value;
            });
            //打印结果
            WriteList(studentlist);
            Console.WriteLine("--------------男在前女在后,性别相同安入学时间倒序排序-----------------");
            studentlist.Reverse();
            //打印结果
            WriteList(studentlist);
        }
        /// <summary>
        /// 打印集合
        /// </summary>
        /// <param name="studentlist">集合对象</param>
        private static void WriteList(List<StudentInfo> studentlist)
        {
            foreach (StudentInfo item in studentlist)
            {
                Console.WriteLine(string.Format("学号:{0},姓名:{1},性别:{2},入学时间:{3}", item.NoId, item.Name, item.Sex_Ch, item.EntranceTime.ToString("yyyy-MM-dd HH:mm:ss")));
            }
        }
    }
    /// <summary>
    /// 学生类
    /// </summary>
    public class StudentInfo
    {
        /// <summary>
        /// 学号
        /// </summary>
        public int NoId { get; set; }
        /// <summary>
        /// 性别:1男,0女
        /// </summary>
        public int Sex { get; set; }
        /// <summary>
        /// 返回中文性别
        /// </summary>
        public string Sex_Ch
        {
            get
            {
                if (Sex == 1)
                {
                    return "男";
                }
                else
                {
                    return "女";
                }
            }
        }
        /// <summary>
        /// 学生姓名
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 入学时间
        /// </summary>
        public DateTime EntranceTime { get; set; }
    }
}
 可以直接下载源码
 
  ConsoleApplication1.rar
(22.59 KB, 下载次数: 19) |