小弟学C#不久,请高手优化代码。
程序代码:
using System; using System.Collections.Generic; using System.Text; namespace shenfenzheng { class Program { static void Main(string[] args) { System.DateTime date = new System.DateTime(); date = System.DateTime.Now; int year = date.Year; int month = date.Month; int day = date.Day; //生成随机年代码 int maxyear = year - 19; int minyear = year - 50; Random ran=new Random(); int nyear = ran.Next(minyear, maxyear); //生成随机月份代码 int nmonth = ran.Next(1, 12); //生成随机日代码 int maxnday=0; switch (nmonth) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: maxnday = 31; break; case 4: case 6: case 9: case 11: maxnday = 30; break; case 2: if (nyear % 4 == 0 && nyear != 0 || nyear % 400 == 0) { maxnday = 29; } else { maxnday = 28; } break; } int nday = ran.Next(1, maxnday); int mindq = 510901; int maxdq = 510903; int ndq=ran.Next(mindq,maxdq); int code1 = ran.Next(0, 9); int code2 = ran.Next(0, 9); int code3 = ran.Next(1, 9); //判断性别 string sex = ""; if (code3 % 2 == 0) { sex = "女"; } else { sex = "男"; } //算出最后身份证最后一位校验码 int[] nndq = GetIntArray(ndq);//得到地区数组 int[] nnyear = GetIntArray(nyear);//得到年份数组 int[] nnmonth = GetIntArray(nmonth);//得到月份数组 int[] nnday = GetIntArray(nday);//得到日数组 int t1 = Getintzone(nndq[0], 7); int t2 = Getintzone(nndq[1],9); int t3 = Getintzone(nndq[2], 10); int t4 = Getintzone(nndq[3], 5); int t5 = Getintzone(nndq[4], 8); int t6 = Getintzone(nndq[5], 4); int t7 = Getintzone(nnyear[0], 2); int t8 = Getintzone(nnyear[1], 1); int t9 = Getintzone(nnyear[2], 6); int t10 = Getintzone(nnyear[3], 3); int t11 = 0; int t12 = 0; if (nmonth < 10) { t11 = 0; t12 = Getintzone(nnmonth[0], 9); } else { t11 = Getintzone(nnmonth[0], 7); t12 = Getintzone(nnmonth[1], 9); } int t13 = 0; int t14 = 0; if (nday < 10) { t13 = 0; t14 = Getintzone(nnday[0], 5); } else { t13 = Getintzone(nnday[0], 10); t14 = Getintzone(nnday[1], 5); } int t15 = Getintzone(code1, 8); int t16 = Getintzone(code2, 4); int t17 = Getintzone(code3, 2); int sum = t1 + t2 + t3 + t4 + t5 + t6 + t7 + t8 + t9 + t10 + t11 + t12 + t13 + t14 + t5 + t6 + t17; int sum2 = sum / 11; int sum4 = sum2 * 11; int sum3 = sum - sum4; string st18=""; switch (sum3) { case 0: st18 = "1"; break; case 1: st18 = "0"; break; case 2: st18 = "x"; break; case 3: st18 = "9"; break; case 4: st18 = "8"; break; case 5: st18 = "7"; break; case 6: st18 = "6"; break; case 7: st18 = "5"; break; case 8: st18 = "4"; break; case 9: st18 = "3"; break; case 10: st18 = "2"; break; } string stndq= Convert.ToString(ndq); string styear = Convert.ToString(nyear); string stt11; string stt12; string stt13; string stt14; //string stmonth = Convert.ToString(nmonth); if (t11 != 0) { stt11 = Convert.ToString(t11 / 7); } else { stt11 = Convert.ToString(t11); } if (t12 != 0) { stt12 = Convert.ToString(t12 / 9); } else { stt12 = Convert.ToString(t12); } if (t13 != 0) { stt13 = Convert.ToString(t13 / 10); } else { stt13 = Convert.ToString(t13); } if (t14 != 0) { stt14 = Convert.ToString(t14 / 5); } else { stt14 = Convert.ToString(t14); } //string stt12 = Convert.ToString(t12); //string stt13 = Convert.ToString(t13); //string stt14 = Convert.ToString(t14); string stcode1 = Convert.ToString(code1); string stcode2 = Convert.ToString(code2); string stcode3 = Convert.ToString(code3); string sfzhm = stndq + styear + stt11 + stt12 + stt13 + stt14 + stcode1 + stcode2 + stcode3 + st18; Console.WriteLine("身份证号码为{0}", sfzhm); //Console.WriteLine(sndq); //Console.WriteLine("和为{0}", sum2); //Console.WriteLine("每一个数{0}",t1); //Console.WriteLine("性别{0}", sex); //Console.WriteLine("身份证最后第4位{0}",code1); //Console.WriteLine("身份证最后第3位{0}",code2); //Console.WriteLine("身份证最后第2位{0}", code3); //Console.WriteLine("当前地区{0}", ndq); //Console.WriteLine("当月最大天数{0}", maxnday); //Console.WriteLine("日{0}",nday); //Console.WriteLine("年{0}",nyear); //Console.WriteLine("月{0}",nmonth); Console.ReadKey(); } static int[] GetIntArray(int num) { int len = num.ToString().Length; int[] arr = new int[len]; for (int i = 0; i < len; i++) { arr[i] = num % 10; num /= 10; } Array.Reverse(arr); return arr; } static int Getintzone(int num, int xh) { int tem; if (num > 0) { tem = num * xh; } else { tem = 0; } return tem; } } }