C#控制台应用程序之选课系统

 本程序以文本文件作为存储媒介,实现了一个简化版的选课系统,主要实现了以下功能

  1. 对学生信息的增删改查
  2. 对课程信息的增删改查
  3. 对学生选课的增删改查

 

   1 using System;
   2 using System.Collections.Generic;
   3 using System.Linq;
   4 using System.Text;
   5 using System.IO;
   6 using System.Diagnostics;
   7 
   8 namespace curricula_Variable
   9 {
  10     //课程类
  11     class course
  12     {
  13         public course()
  14         {
  15             ID = null; namOfCourse = null;
  16         }
  17         public course(string id, string nam)
  18         {
  19             ID = id; namOfCourse = nam;
  20         }
  21         public string namOfCourse;                 //课程名称
  22         private string ID;                         //课程ID,课程的唯一标示
  23         public string id
  24         {
  25             set { ID = value; }
  26             get { return ID; }
  27         }
  28     }
  29 
  30     //学生类;包含学生基本信息和选课内容
  31     class student
  32     {
  33         public course[] COUR = new course[3];      //所选的课(最多3门)
  34         public string name;                        //姓名
  35         private string num;                        //学号,对学生唯一的标示
  36         public string _num
  37         {
  38             get { return num; }
  39             set { num = value; }
  40         }
  41         public string placeNative;                 //籍贯
  42         public string tel;                         //电话
  43         public string dormitoryRoom;               //宿舍
  44     }
  45 
  46     class Program
  47     {
  48         //给定一个学生数组(最多100人)
  49         static student[] stu = new student[100];
  50         static int countStudent = -1;
  51 
  52         //给定一个课程数组(最多10门课)
  53         static course[] cour = new course[10];
  54         static int countCourse = -1;
  55 
  56         static void Main(string[] args)
  57         {
  58             //readStuInforFromTxt();
  59             //readCourInfoFromTxt();
  60             //readStuCourSelectInforFromTxt();
  61             homePage();
  62         HomePage:
  63             Console.Write("请选择你想使用的功能:");
  64             int iInput;
  65         //输入一个数字,如果是0到12,就进行相应操作,否则重新输入
  66         Input:
  67             string str = Console.ReadLine();
  68             if ((Int32.TryParse(str, out iInput)) == false)
  69             {
  70                 Console.Write("输入的不是整数,请重新输入:");
  71                 goto Input;
  72             }
  73             if (iInput >= 0 && iInput < 13)
  74                 switch (iInput)
  75                 {
  76                     case 1:
  77                         stuInforAdd();
  78                         goto HomePage;
  79 
  80                     case 2:
  81                         stuInforDel();
  82                         goto HomePage;
  83 
  84                     case 3:
  85                         stuInforAlter();
  86                         goto HomePage;
  87 
  88                     case 4:
  89                         stuInforSelect();
  90                         goto HomePage;
  91                     case 5:
  92                         courseInforAdd();
  93                         goto HomePage;
  94 
  95                     case 6:
  96                         courseInforDel();
  97                         goto HomePage;
  98 
  99                     case 7:
 100                         courseInforAlter();
 101                         goto HomePage;
 102 
 103                     case 8:
 104                         courseInforSelect();
 105                         goto HomePage;
 106 
 107                     case 9:
 108                         courseSelectAdd();
 109                         goto HomePage;
 110 
 111                     case 10:
 112                         courseSelectDel();
 113                         goto HomePage;
 114 
 115                     case 11:
 116                         courseSelectAlter();
 117                         goto HomePage;
 118 
 119                     case 12:
 120                         courseSelectSelect();
 121                         goto HomePage;
 122 
 123                     case 0:
 124                         Environment.Exit(0);
 125                         return;
 126                 }
 127             else
 128             {
 129                 Console.Write("输入数据超出范围,请重新输入:");
 130                 goto Input;
 131             }
 132             Console.ReadKey();
 133             Environment.Exit(0);
 134         }
 135 
 136         //主页
 137         static void homePage()                          
 138         {
 139             for (int i = 0; i < 50; i++)
 140             {
 141                 Console.Write("*");
 142             }
 143             Console.WriteLine();
 144             for (int i = 0; i < 17; i++)
 145                 Console.Write(" ");
 146             Console.WriteLine("欢迎使用选课系统");
 147             for (int i = 0; i < 17; i++)
 148                 Console.Write(" ");
 149             Console.WriteLine("1、 增加学生信息");
 150             for (int i = 0; i < 17; i++)
 151                 Console.Write(" ");
 152             Console.WriteLine("2、 删除学生信息");
 153             for (int i = 0; i < 17; i++)
 154                 Console.Write(" ");
 155             Console.WriteLine("3、 修改学生信息");
 156             for (int i = 0; i < 17; i++)
 157                 Console.Write(" ");
 158             Console.WriteLine("4、 查询学生信息");
 159             for (int i = 0; i < 17; i++)
 160                 Console.Write(" ");
 161             Console.WriteLine("5、 增加课程信息");
 162             for (int i = 0; i < 17; i++)
 163                 Console.Write(" ");
 164             Console.WriteLine("6、 删除课程信息");
 165             for (int i = 0; i < 17; i++)
 166                 Console.Write(" ");
 167             Console.WriteLine("7、 修改课程信息");
 168             for (int i = 0; i < 17; i++)
 169                 Console.Write(" ");
 170             Console.WriteLine("8、 查询课程信息");
 171             for (int i = 0; i < 17; i++)
 172                 Console.Write(" ");
 173             Console.WriteLine("9、 增加选课内容");
 174             for (int i = 0; i < 17; i++)
 175                 Console.Write(" ");
 176             Console.WriteLine("10、删除已选课程");
 177             for (int i = 0; i < 17; i++)
 178                 Console.Write(" ");
 179             Console.WriteLine("11、修改课程信息");
 180             for (int i = 0; i < 17; i++)
 181                 Console.Write(" ");
 182             Console.WriteLine("12、查询选课信息");
 183             for (int i = 0; i < 17; i++)
 184                 Console.Write(" ");
 185             Console.WriteLine("0、 退出选课系统");
 186             for (int i = 0; i < 50; i++)
 187             {
 188                 Console.Write("*");
 189             }
 190             Console.WriteLine();
 191         }
 192 
 193         //判断手机号是否合法
 194         public static bool isPhone(string str_handset)
 195         {
 196             return System.Text.RegularExpressions.Regex.IsMatch(str_handset, @"^[1]+[3,5,7,8]+\d{9}");
 197         }
 198 
 199         //判断学号是否合法
 200         public static bool isNumber(string str_handset)
 201         {
 202             return System.Text.RegularExpressions.Regex.IsMatch(str_handset, @"^[1]+[2,3,4,5,6]+[0,1]+\d{6}");
 203         }
 204 
 205         /* 学生信息管理
 206          * 1、添加学生信息
 207          * 2、删除学生信息
 208          * 3、修改学生信息
 209          * 4、查询学生信息 */
 210 
 211         //学生信息添加,添加学号、姓名
 212         static void stuInforAdd()
 213         {
 214             readStuInforFromTxt();
 215             Console.Clear();
 216             student stud = new student();
 217             Console.Write("请输入学生学号:");
 218         Input:
 219             string str = Console.ReadLine();
 220             if (!isNumber(str) || str.Length != 9)
 221             {
 222                 Console.Write("学号格式不正确,请重新输入:");
 223                 goto Input;
 224             }
 225             else
 226             {
 227                 int ct = 0, isExit = 0;
 228                 while (stu[ct] != null)
 229                 {
 230                     if (stu[ct]._num == str)
 231                     {
 232                         isExit = -1;
 233                         break;
 234                     }
 235                     else
 236                         ct++;
 237                 }
 238                 if (isExit == -1)
 239                 {
 240                     Console.Clear();
 241                     homePage();
 242                     Console.WriteLine("该学生信息已存在!");
 243                     return;
 244                 }
 245                 else
 246                     stud._num = str;
 247             }
 248             Console.Write("请输入学生姓名:");
 249         Input1:
 250             string str1 = Console.ReadLine();
 251             if (str1 == "")
 252             {
 253                 Console.Write("姓名不能为空,请重新输入:");
 254                 goto Input1;
 255             }
 256             else
 257                 stud.name = str1;
 258             Console.Write("请输入籍贯:");
 259         Input2:
 260             string str2 = Console.ReadLine();
 261             if (str2 == "")
 262             {
 263                 Console.Write("籍贯不能为空,请重新输入:");
 264                 goto Input2;
 265             }
 266             else
 267                 stud.placeNative = str2;
 268 
 269             Console.Write("请输入学生联系电话:");
 270         Input3:
 271             str = Console.ReadLine();
 272             if (!(isPhone(str)) || str.Length != 11)
 273             {
 274                 Console.Write("联系电话格式不正确,请重新输入:");
 275                 goto Input3;
 276             }
 277             else
 278                 stud.tel = str;
 279 
 280             Console.Write("请输入学生宿舍号:");
 281         Input4:
 282             int m;
 283             str = Console.ReadLine();
 284             if (!(Int32.TryParse(str, out m)))
 285             {
 286                 Console.Write("宿舍号格式不正确,请重新输入:");
 287                 goto Input4;
 288             }
 289             else
 290                 stud.dormitoryRoom = str;
 291             stu[++countStudent] = stud;
 292             Console.Clear();
 293             homePage();
 294             saveStuInforToTxt();
 295             Console.WriteLine("添加成功!");
 296         }
 297 
 298         //学生信息删除,删除个人所有信息
 299         static void stuInforDel()
 300         {
 301             readStuInforFromTxt();
 302             Console.Clear();
 303             Console.Write("请输入您想删除的学生学号:");
 304             string i = Console.ReadLine();
 305             Input:
 306             string str = Console.ReadLine();
 307             if (!isNumber(i) || i.Length != 9)
 308             {
 309                 Console.Write("学号格式不正确,请重新输入:");
 310                 goto Input;
 311             }
 312             int n = 0;
 313             homePage();
 314             while (stu[n] != null)
 315             {
 316                 if (stu[n]._num == i)
 317                 {
 318                     List<student> list = stu.ToList();
 319                     list.RemoveAt(n);
 320                     student[] newarr = list.ToArray();
 321                     stu = newarr;
 322                     countStudent--;
 323                     Console.WriteLine("删除成功!");
 324                     saveStuInforToTxt();
 325                     return;
 326                 }
 327                 else
 328                     n++;
 329             }
 330             Console.WriteLine("查无此人!");
 331         }
 332 
 333         //学生信息修改,修改除学号以外的信息
 334         static void stuInforAlter()
 335         {
 336             readStuInforFromTxt();
 337             Console.Clear();
 338             Console.Write("请输入您想修改的学生的学号:");
 339         Input:
 340             string i = Console.ReadLine();
 341             if (!isNumber(i) || i.Length != 9)
 342             {
 343                 Console.Write("学号格式不正确,请重新输入:");
 344                 goto Input;
 345             }
 346             string str = "";
 347             int n = 0;
 348             homePage();
 349             while (stu[n] != null)
 350             {
 351                 if (stu[n]._num == i)
 352                 {
 353                     Console.Write("请输入修改后的姓名:");
 354                 Input1:
 355                     str = Console.ReadLine();
 356                     if (str == "")
 357                     {
 358                         Console.Write("姓名不能为空,请重新输入:");
 359                         goto Input1;
 360                     }
 361                     else
 362                         stu[n].name = str;
 363 
 364                     Console.Write("请输入修改后的籍贯:");
 365                 Input2:
 366                     str = Console.ReadLine();
 367                     if (str == "")
 368                     {
 369                         Console.Write("籍贯不能为空,请重新输入:");
 370                         goto Input2;
 371                     }
 372                     else
 373                         stu[n].placeNative = str;
 374 
 375                     Console.Write("请输入修改后的联系电话:");
 376                 Input3:
 377                     str = Console.ReadLine();
 378                     if (!isPhone(str) || str.Length != 11)
 379                     {
 380                         Console.Write("联系电话格式不正确,请重新输入:");
 381                         goto Input3;
 382                     }
 383                     else
 384                         stu[n].tel = str;
 385 
 386                     Console.Write("请输入修改后的宿舍号:");
 387                 Input4:
 388                     int m;
 389                     str = Console.ReadLine();
 390                     if (!(Int32.TryParse(str, out m)))
 391                     {
 392                         Console.Write("宿舍号格式不正确,请重新输入:");
 393                         goto Input4;
 394                     }
 395                     else
 396                         stu[n].dormitoryRoom = str;
 397                     Console.Clear();
 398                     homePage();
 399                     saveStuInforToTxt();
 400                     Console.WriteLine("修改成功!");
 401                     return;
 402                 }
 403                 else
 404                     n++;
 405             }
 406             Console.WriteLine("查无此人!");
 407         }
 408 
 409         //学生信息查询,通过学号查询姓名
 410         static void stuInforSelect()
 411         {
 412             readStuInforFromTxt();
 413             Console.Clear();
 414             Console.Write("请输入您想查询的学生学号:");
 415         Input:
 416             string i = Console.ReadLine();
 417             if (!isNumber(i))
 418             {
 419                 Console.Write("学号格式不正确,请重新输入:");
 420                 goto Input;
 421             }
 422             int n = 0;
 423             homePage();
 424             while (stu[n] != null)
 425             {
 426                 if (stu[n]._num == i)
 427                 {
 428                     Console.WriteLine("您所查询的学生的姓名为:{0}", stu[n].name);
 429                     Console.WriteLine("您所查询的学生的籍贯为:{0}", stu[n].placeNative);
 430                     Console.WriteLine("您所查询的学生的电话为:{0}", stu[n].tel);
 431                     Console.WriteLine("您所查询的学生的宿舍号:{0}", stu[n].dormitoryRoom);
 432                     saveStuInforToTxt();
 433                     return;
 434                 }
 435                 else
 436                     n++;
 437             }
 438             Console.WriteLine("查无此人!");
 439         }
 440 
 441 
 442         /* 课程信息管理
 443          * 1、增加课程信息
 444          * 2、删除课程信息
 445          * 3、修改课程信息
 446          * 4、查询课程信息 */
 447 
 448         //课程信息添加,通过添加课程ID添加课程
 449         static void courseInforAdd()
 450         {
 451             readCourInfoFromTxt();
 452             if (countCourse == 9)
 453             {
 454                 Console.Clear();
 455                 homePage();
 456                 saveCourseInforToTxt();
 457                 Console.WriteLine("课程已满!若要继续添加,请先删除部分课程!");
 458                 return;
 459             }
 460             Console.Clear();
 461             course Cour = new course();
 462             Console.Write("请输入课程ID:");
 463         Input:
 464             string str = Console.ReadLine();
 465             int m;
 466             if (!(Int32.TryParse(str, out m)))
 467             {
 468                 Console.Write("课程ID格式不正确,请重新输入:");
 469                 goto Input;
 470             }
 471             else
 472             {
 473                 int ct = 0, isExit = 0;
 474                 while (cour[ct] != null)
 475                 {
 476                     if (cour[ct].id == str)
 477                     {
 478                         isExit = -1;
 479                         break;
 480                     }
 481                     else
 482                         ct++;
 483                 }
 484                 if (isExit == -1)
 485                 {
 486                     Console.Clear();
 487                     homePage();
 488                     saveCourseInforToTxt();
 489                     Console.WriteLine("该课程信息已存在!");
 490                     return;
 491                 }
 492                 else
 493                     Cour.id = str;
 494             }
 495             Console.Write("请输入课程名称:");
 496         Input1:
 497             string str1 = Console.ReadLine();
 498             if (str1 == "")
 499             {
 500                 Console.Write("课程名称不能为空,请重新输入:");
 501                 goto Input1;
 502             }
 503             else
 504                 Cour.namOfCourse = str1;
 505             cour[++countCourse] = Cour;
 506             Console.Clear();
 507             homePage();
 508             Console.WriteLine("添加成功!");
 509             saveCourseInforToTxt();
 510         }
 511 
 512         //课程信息删除,通过课程ID删除相关课程
 513         static void courseInforDel()
 514         {
 515             readCourInfoFromTxt();
 516             Console.Clear();
 517             Console.Write("请输入您想删除的课程ID:");
 518             string i = Console.ReadLine();
 519             int n = 0;
 520             homePage();
 521             Console.Clear();
 522             while (n<10&&cour[n] != null)
 523             {
 524                 if (cour[n].id == i)
 525                 {
 526                     List<course> list = cour.ToList();
 527                     list.RemoveAt(n);
 528                     course[] newarr = list.ToArray();
 529                     cour = newarr;
 530                     countCourse--;
 531                     homePage();
 532                     Console.WriteLine("删除成功!");
 533                     for (int k = 0; k < countStudent; k++)
 534                     {
 535                         for (int j = 0; stu[k].COUR[j] != null; j++)
 536                         {
 537                             if (stu[k].COUR[j].id == i)
 538                             {
 539                                 List<course> list1 = stu[k].COUR.ToList();
 540                                 list1.RemoveAt(j);
 541                                 course[] newarr1 = list1.ToArray();
 542                                 stu[k].COUR = newarr1;
 543                             }
 544                         }
 545                     }
 546                     saveCourseInforToTxt();
 547                     return;
 548                 }
 549                 else
 550                     n++;
 551             }
 552             homePage();
 553             saveCourseInforToTxt();
 554             Console.WriteLine("查无此课程!");
 555         }
 556 
 557         //课程信息修改,通过ID删除除ID以外的信息
 558         static void courseInforAlter()
 559         {
 560             readCourInfoFromTxt();
 561             Console.Clear();
 562             Console.Write("请输入您想修改的课程的ID:");
 563         Input1:
 564             string i = Console.ReadLine();
 565             int n = 0;
 566             while (cour[n] != null)
 567             {
 568                 if (cour[n].id == i)
 569                 {
 570                     Console.Write("请输入修改后的课程名称:");
 571                     string str1 = Console.ReadLine();
 572                     if (str1 == "")
 573                     {
 574                         Console.Write("课程名称不能为空,请重新输入:");
 575                         goto Input1;
 576                     }
 577                     else
 578                         cour[n].namOfCourse = str1;
 579                     homePage();
 580                     saveCourseInforToTxt();
 581                     Console.WriteLine("修改成功!");
 582                     return;
 583                 }
 584                 else
 585                     n++;
 586             }
 587             homePage();
 588             saveCourseInforToTxt();
 589             Console.WriteLine("查无此课程!");
 590         }
 591 
 592         //课程查询,通过ID查询课程
 593         static void courseInforSelect()
 594         {
 595             readCourInfoFromTxt();
 596             Console.Clear();
 597             Console.Write("请输入您想查询的课程ID:");
 598             string i = Console.ReadLine();
 599             int n = 0;
 600             homePage();
 601             while (cour[n] != null)
 602             {
 603                 if (cour[n].id == i)
 604                 {
 605                     saveCourseInforToTxt();
 606                     Console.WriteLine("您所查询的课程名称为:{0}", cour[n].namOfCourse);
 607                     return;
 608                 }
 609                 else
 610                     n++;
 611             }
 612             saveCourseInforToTxt();
 613             Console.WriteLine("查无此课程!");
 614         }
 615 
 616 
 617         /* 选课管理
 618          * 1、增加所选课程
 619          * 2、取消已选课程
 620          * 3、修改已选课程
 621          * 4、查询已选课程 */
 622 
 623         //通过学号和课程ID增加个人选的课程
 624         static void courseSelectAdd()
 625         {
 626             readCourInfoFromTxt();
 627             readStuInforFromTxt();
 628             readStuCourSelectInforFromTxt();
 629             if (stu[0] == null)
 630             {
 631                 Console.Clear();
 632                 homePage();
 633                 Console.WriteLine("暂无学生信息!");
 634                 saveCourseInforToTxt();
 635                 saveStuCourSelectInforToTxt();
 636                 saveStuInforToTxt();
 637                 return;
 638             }
 639             if (cour[0] == null)
 640             {
 641                 Console.Clear();
 642                 homePage();
 643                 Console.WriteLine("暂无课程信息!");
 644                 saveCourseInforToTxt();
 645                 saveStuCourSelectInforToTxt();
 646                 saveStuInforToTxt();
 647                 return;
 648             }
 649             Console.Clear();
 650             Console.Write("请输入您的学号:");
 651         Input:
 652             string str = Console.ReadLine();
 653             if (!isNumber(str) || str.Length != 9)
 654             {
 655                 Console.Write("学号格式不正确,请重新输入:");
 656                 goto Input;
 657             }
 658             else
 659             {
 660                 int i = 0;
 661                 while(stu[i]._num != str)
 662                 {
 663                     i++;
 664                     if (i >countStudent)
 665                     {
 666                         Console.Clear();
 667                         homePage();
 668                         Console.WriteLine("查无此人!");
 669                         saveCourseInforToTxt();
 670                         saveStuCourSelectInforToTxt();
 671                         saveStuInforToTxt();
 672                         return;
 673                     }
 674                 }
 675                 Console.Write("请输入您想选的课程名称:");
 676                 str = Console.ReadLine();
 677                 int l = 0;
 678                 for (; l<10&&cour[l] != null; l++) { }
 679                 int j = 0;
 680             here:
 681                 if (cour[j] != null && cour[j].namOfCourse != str)
 682                 {
 683                     if (j < l )
 684                     {
 685                         j++;
 686                         goto here;
 687                     }
 688                     else
 689                     {
 690                         Console.Clear();
 691                         homePage();
 692                         Console.WriteLine("查无此课程!");
 693                         saveCourseInforToTxt();
 694                         saveStuCourSelectInforToTxt();
 695                         saveStuInforToTxt();
 696                         return;
 697                     }
 698                 }
 699                 else
 700                 {
 701                     if (cour[j] == null)
 702                     {
 703                         Console.Clear();
 704                         homePage();
 705                         Console.WriteLine("查无此课程!");
 706                         saveCourseInforToTxt();
 707                         saveStuCourSelectInforToTxt();
 708                         saveStuInforToTxt();
 709                         return;
 710                     }
 711                     if ((stu[i].COUR[0]!=null&&stu[i].COUR[0].id == cour[j].id) || (stu[i].COUR[1]!=null&&stu[i].COUR[1].id== cour[j].id) || (stu[i].COUR[2]!=null&&stu[i].COUR[2].id == cour[j].id))
 712                     {
 713                         Console.Clear();
 714                         homePage();
 715                         Console.WriteLine("该门课已选,不能重复提交!");
 716                         saveCourseInforToTxt();
 717                         saveStuCourSelectInforToTxt();
 718                         saveStuInforToTxt();
 719                         return;
 720                     }
 721                     if (stu[i].COUR[0] == null)
 722                         stu[i].COUR[0] = cour[j];
 723                     else if
 724                         (stu[i].COUR[1] == null)
 725                         stu[i].COUR[1] = cour[j];
 726                     else if
 727                         (stu[i].COUR[2] == null)
 728                         stu[i].COUR[2] = cour[j];
 729                     else
 730                     {
 731                         homePage();
 732                         Console.WriteLine("您所选课程已达最大数额!");
 733                         saveCourseInforToTxt();
 734                         saveStuCourSelectInforToTxt();
 735                         saveStuInforToTxt();
 736                         return;
 737                     }
 738                     Console.Clear();
 739                     homePage();
 740                     Console.WriteLine("选课成功!");
 741                     saveCourseInforToTxt();
 742                     saveStuCourSelectInforToTxt();
 743                     saveStuInforToTxt();
 744                 }
 745             }
 746         }
 747 
 748         //删除选课,通过学号和课程ID删除个人选的课程
 749         static void courseSelectDel()
 750         {
 751             readStuInforFromTxt();
 752             readCourInfoFromTxt();
 753             readStuCourSelectInforFromTxt();
 754             if (stu[0] == null)
 755             {
 756                 Console.Clear();
 757                 homePage();
 758                 Console.WriteLine("暂无学生信息!");
 759                 saveCourseInforToTxt();
 760                 saveStuCourSelectInforToTxt();
 761                 saveStuInforToTxt();
 762                 return;
 763             }
 764             if (cour[0] == null)
 765             {
 766                 Console.Clear();
 767                 homePage();
 768                 Console.WriteLine("暂无课程信息!");
 769                 saveCourseInforToTxt();
 770                 saveStuCourSelectInforToTxt();
 771                 saveStuInforToTxt();
 772                 return;
 773             }
 774             Console.Clear();
 775             Console.Write("请输入您的学号:");
 776         Input:
 777             string str = Console.ReadLine();
 778             if (!isNumber(str) || str.Length != 9)
 779             {
 780                 Console.Write("学号格式不正确,请重新输入:");
 781                 goto Input;
 782             }
 783             else
 784             {
 785                 int l = 0;
 786                 for (; stu[l] != null; l++) { }
 787                 int i = 0;
 788             Judge:
 789                 if (stu[i]._num != str)
 790                 {
 791                     if (i < l - 1)
 792                     {
 793                         i++;
 794                         goto Judge;
 795                     }
 796                     else
 797                     {
 798                         homePage();
 799                         Console.WriteLine("查无此人!");
 800                     }
 801                     saveCourseInforToTxt();
 802                     saveStuCourSelectInforToTxt();
 803                     saveStuInforToTxt();
 804                     return;
 805                 }
 806                 else
 807                     Console.Write("请输入您想取消的课程名称:");
 808                 str = Console.ReadLine();
 809                 l = 0;
 810                 for (; l<10&&cour[l] != null; l++) { }
 811                 int j = 0;
 812                 Here:
 813                 if (cour[j]!=null&&cour[j].namOfCourse != str)
 814                 {
 815                     if (j < l)
 816                     {
 817                         j++;
 818                         goto Here;
 819                     }
 820                     else
 821                     {
 822                         Console.Clear();
 823                         homePage();
 824                         Console.Write("查无此课程!");
 825                         saveCourseInforToTxt();
 826                         saveStuCourSelectInforToTxt();
 827                         saveStuInforToTxt();
 828                         return;
 829                     }
 830                 }
 831                 else
 832                 {
 833                     if (stu[i].COUR[0] == null)
 834                     {
 835                         Console.Clear();
 836                         homePage();
 837                         Console.WriteLine("您尚未选该门课!");
 838                         saveCourseInforToTxt();
 839                         saveStuCourSelectInforToTxt();
 840                         saveStuInforToTxt();
 841                         return;
 842                     }
 843                     else if (stu[i].COUR[1] == null)
 844                     {
 845                         if (stu[i].COUR[0].namOfCourse == str)
 846                         {
 847                             stu[i].COUR[0] = null;
 848                             Console.Clear();
 849                             homePage();
 850                             Console.WriteLine("取消成功!");
 851                             saveCourseInforToTxt();
 852                             saveStuCourSelectInforToTxt();
 853                             saveStuInforToTxt();
 854                             return;
 855                         }
 856                         else
 857                         {
 858                             Console.Clear();
 859                             homePage();
 860                             Console.WriteLine("您尚未选该门课!");
 861                             saveCourseInforToTxt();
 862                             saveStuCourSelectInforToTxt();
 863                             saveStuInforToTxt();
 864                             return;
 865                         }
 866                     }
 867                     else if (stu[i].COUR[2] == null)
 868                     {
 869                         if (stu[i].COUR[0].namOfCourse == str)
 870                         {
 871                             stu[i].COUR[0] = stu[i].COUR[1];
 872                             stu[i].COUR[1] = null;
 873                             Console.Clear();
 874                             homePage();
 875                             Console.WriteLine("取消成功!");
 876                             saveCourseInforToTxt();
 877                             saveStuCourSelectInforToTxt();
 878                             saveStuInforToTxt();
 879                             return;
 880                         }
 881                         else if (stu[i].COUR[1].namOfCourse == str)
 882                         {
 883                             stu[i].COUR[1] = null;
 884                             Console.Clear();
 885                             homePage();
 886                             saveCourseInforToTxt();
 887                             saveStuCourSelectInforToTxt();
 888                             saveStuInforToTxt();
 889                             Console.WriteLine("取消成功!");
 890                             return;
 891                         }
 892                         else
 893                         {
 894                             Console.Clear();
 895                             homePage();
 896                             Console.WriteLine("您尚未选该门课!");
 897                             saveCourseInforToTxt();
 898                             saveStuCourSelectInforToTxt();
 899                             saveStuInforToTxt();
 900                             return;
 901                         }
 902                     }
 903                     else
 904                     {
 905                         if (stu[i].COUR[0].namOfCourse == str)
 906                         {
 907                             stu[i].COUR[0] = stu[i].COUR[1];
 908                             stu[i].COUR[1] = stu[i].COUR[2];
 909                             stu[i].COUR[2] = null;
 910                             Console.Clear();
 911                             homePage();
 912                             Console.WriteLine("取消成功!");
 913                             saveCourseInforToTxt();
 914                             saveStuCourSelectInforToTxt();
 915                             saveStuInforToTxt();
 916                             return;
 917                         }
 918                         else if (stu[i].COUR[1].namOfCourse == str)
 919                         {
 920                             stu[i].COUR[1] = stu[i].COUR[2];
 921                             stu[i].COUR[2] = null;
 922                             Console.Clear();
 923                             homePage();
 924                             Console.WriteLine("取消成功!");
 925                             saveCourseInforToTxt();
 926                             saveStuCourSelectInforToTxt();
 927                             saveStuInforToTxt();
 928                             return;
 929                         }
 930                         else if (stu[i].COUR[2].namOfCourse == str)
 931                         {
 932                             stu[i].COUR[2] = null;
 933                             Console.Clear();
 934                             homePage();
 935                             Console.WriteLine("取消成功!");
 936                             saveCourseInforToTxt();
 937                             saveStuCourSelectInforToTxt();
 938                             saveStuInforToTxt();
 939                             return;
 940                         }
 941                         else
 942                         {
 943                             Console.Clear();
 944                             homePage();
 945                             Console.WriteLine("您尚未选该门课!");
 946                             saveCourseInforToTxt();
 947                             saveStuCourSelectInforToTxt();
 948                             saveStuInforToTxt();
 949                             return;
 950                         }
 951                     }
 952                 }
 953             }
 954         }
 955 
 956         //修改选课,通过学号和课程ID修改所选的课程
 957         static void courseSelectAlter()
 958         {
 959             readStuInforFromTxt();
 960             readCourInfoFromTxt();
 961             readStuCourSelectInforFromTxt();
 962             if (stu[0] == null)
 963             {
 964                 Console.Clear();
 965                 homePage();
 966                 Console.WriteLine("暂无学生信息!");
 967                 saveCourseInforToTxt();
 968                 saveStuCourSelectInforToTxt();
 969                 saveStuInforToTxt();
 970                 return;
 971             }
 972             if (cour[0] == null)
 973             {
 974                 Console.Clear();
 975                 homePage();
 976                 Console.WriteLine("暂无课程信息!");
 977                 saveCourseInforToTxt();
 978                 saveStuCourSelectInforToTxt();
 979                 saveStuInforToTxt();
 980                 return;
 981             }
 982             Console.Clear();
 983             Console.Write("请输入您的学号:");
 984             string str1 = "";
 985         Input:
 986             string str = Console.ReadLine();
 987             if (!isNumber(str) || str.Length != 9)
 988             {
 989                 Console.Write("学号格式不正确,请重新输入:");
 990                 goto Input;
 991             }
 992             else
 993             {
 994                 int l = 0;
 995                 for (; stu[l] != null; l++) { }
 996                 int i = 0;
 997                 hERe:
 998                 if (stu[i]._num != str)
 999                 {
1000                     if (i < l - 1)
1001                     {
1002                         i++;
1003                         goto hERe;
1004                     }
1005                     else
1006                     {
1007                         homePage();
1008                         Console.WriteLine("查无此人!");
1009                         saveCourseInforToTxt();
1010                         saveStuCourSelectInforToTxt();
1011                         saveStuInforToTxt();
1012                         return;
1013                     }
1014                 }
1015                 else
1016                     Console.Write("请输入您想修改之后的课程名称:");
1017                 str = Console.ReadLine();
1018                 l = 0;
1019                 for (; cour[l] != null; l++) { }
1020                 int j = 0;
1021                 hEre:
1022                 if (cour[j].namOfCourse != str)
1023                 {
1024                     if (j < l - 1)
1025                     {
1026                         j++;
1027                         goto hEre;
1028                     }
1029                     else
1030                         Console.Write("查无此课程!");
1031                     saveCourseInforToTxt();
1032                     saveStuCourSelectInforToTxt();
1033                     saveStuInforToTxt();
1034                     return;
1035                 }
1036                 else
1037                 {
1038                     //输入不想要的课,判断已选课中是否存在,若存在进行替换,反之函数结束
1039                     Console.Write("请输入您不想要的课程名称:");
1040                     str1 = Console.ReadLine();
1041 
1042                     if (stu[i].COUR[0] == null)
1043                     {
1044                         Console.Clear();
1045                         homePage();
1046                         Console.Write("您尚未选门课,不能进行修改操作!");
1047                         saveCourseInforToTxt();
1048                         saveStuCourSelectInforToTxt();
1049                         saveStuInforToTxt();
1050                         return;
1051                     }
1052                     else if (stu[i].COUR[1] == null)
1053                     {
1054                         if (stu[i].COUR[0].namOfCourse == str1)
1055                         {
1056                             stu[i].COUR[0] = cour[j];
1057                             Console.Clear();
1058                             homePage();
1059                             Console.WriteLine("修改成功!");
1060                             saveCourseInforToTxt();
1061                             saveStuCourSelectInforToTxt();
1062                             saveStuInforToTxt();
1063                             return;
1064                         }
1065                         else
1066                         {
1067                             Console.Clear();
1068                             homePage();
1069                             Console.WriteLine("您尚未选该门课!");
1070                             saveCourseInforToTxt();
1071                             saveStuCourSelectInforToTxt();
1072                             saveStuInforToTxt();
1073                             return;
1074                         }
1075                     }
1076                     else if (stu[i].COUR[2] == null)
1077                     {
1078                         if (stu[i].COUR[0].namOfCourse == str1)
1079                         {
1080                             stu[i].COUR[0] = cour[j];
1081                             Console.Clear();
1082                             homePage();
1083                             Console.WriteLine("修改成功!");
1084                             saveCourseInforToTxt();
1085                             saveStuCourSelectInforToTxt();
1086                             saveStuInforToTxt();
1087                             return;
1088                         }
1089                         else if (stu[i].COUR[1].namOfCourse == str1)
1090                         {
1091                             stu[i].COUR[1] = cour[j];
1092                             Console.Clear();
1093                             homePage();
1094                             Console.WriteLine("修改成功!");
1095                             saveCourseInforToTxt();
1096                             saveStuCourSelectInforToTxt();
1097                             saveStuInforToTxt();
1098                             return;
1099                         }
1100                         else
1101                         {
1102                             Console.Clear();
1103                             homePage();
1104                             Console.WriteLine("您尚未选该门课!");
1105                             saveCourseInforToTxt();
1106                             saveStuCourSelectInforToTxt();
1107                             saveStuInforToTxt();
1108                             return;
1109                         }
1110                     }
1111                     else
1112                     {
1113                         if (stu[i].COUR[0].namOfCourse == str1)
1114                         {
1115                             stu[i].COUR[0] = cour[j];
1116                             Console.Clear();
1117                             homePage();
1118                             Console.WriteLine("修改成功!");
1119                             saveCourseInforToTxt();
1120                             saveStuCourSelectInforToTxt();
1121                             saveStuInforToTxt();
1122                             return;
1123                         }
1124                         else if (stu[i].COUR[1].namOfCourse == str1)
1125                         {
1126                             stu[i].COUR[1] = cour[j];
1127                             Console.Clear();
1128                             homePage();
1129                             Console.WriteLine("修改成功!");
1130                             saveCourseInforToTxt();
1131                             saveStuCourSelectInforToTxt();
1132                             saveStuInforToTxt();
1133                             return;
1134                         }
1135                         else if (stu[i].COUR[2].namOfCourse == str1)
1136                         {
1137                             stu[i].COUR[2] = cour[j];
1138                             Console.Clear();
1139                             homePage();
1140                             Console.WriteLine("修改成功!");
1141                             saveCourseInforToTxt();
1142                             saveStuCourSelectInforToTxt();
1143                             saveStuInforToTxt();
1144                             return;
1145                         }
1146                         else
1147                         {
1148                             Console.Clear();
1149                             homePage();
1150                             Console.WriteLine("您尚未选该门课!");
1151                             saveCourseInforToTxt();
1152                             saveStuCourSelectInforToTxt();
1153                             saveStuInforToTxt();
1154                             return;
1155                         }
1156                     }
1157                 }
1158             }
1159         }
1160 
1161         //查找选课,通过学号查找所选的课程
1162         static void courseSelectSelect()
1163         {
1164             readStuInforFromTxt();
1165             readCourInfoFromTxt();
1166             readStuCourSelectInforFromTxt();
1167             int i = 0;
1168             if (stu[0] == null)
1169             {
1170                 Console.Clear();
1171                 homePage();
1172                 Console.WriteLine("暂无学生信息!");
1173                 saveCourseInforToTxt();
1174                 saveStuCourSelectInforToTxt();
1175                 saveStuInforToTxt();
1176                 return;
1177             }
1178             if (cour[0] == null)
1179             {
1180                 Console.Clear();
1181                 homePage();
1182                 Console.WriteLine("暂无课程信息!");
1183                 saveCourseInforToTxt();
1184                 saveStuCourSelectInforToTxt();
1185                 saveStuInforToTxt();
1186                 return;
1187             }
1188             Console.Clear();
1189             Console.Write("请输入您的学号:");
1190         Input:
1191             string str = Console.ReadLine();
1192             if (!isNumber(str) || str.Length != 9)
1193             {
1194                 Console.Write("学号格式不正确,请重新输入:");
1195                 goto Input;
1196             }
1197             else
1198             {
1199                 int l = 0;
1200                 for (; stu[l] != null; l++) { }
1201             HERE:
1202                 if (stu[i]!=null&&stu[i]._num != str)
1203                 {
1204                     if (i < l - 1)
1205                     {
1206                         i++;
1207                         goto HERE;
1208                     }
1209                     else
1210                     {
1211                         saveCourseInforToTxt();
1212                         saveStuCourSelectInforToTxt();
1213                         saveStuInforToTxt();
1214                         homePage();
1215                         Console.WriteLine("查无此人!");
1216                         return;
1217                     }
1218                 }
1219                 else
1220                 {
1221                     homePage();
1222                     if (stu[i].COUR[2] != null)
1223                         Console.WriteLine("您所查找的学生的选课内容为:{0}、{1}、{2}", stu[i].COUR[0].namOfCourse, stu[i].COUR[1].namOfCourse, stu[i].COUR[2].namOfCourse);
1224                     else if (stu[i].COUR[1] != null)
1225                         Console.WriteLine("您所查找的学生的选课内容为:{0}、{1}", stu[i].COUR[0].namOfCourse, stu[i].COUR[1].namOfCourse);
1226                     else if (stu[i].COUR[0] != null)
1227                         Console.WriteLine("您所查找的学生的选课内容为:{0}", stu[i].COUR[0].namOfCourse);
1228                     else
1229                         Console.WriteLine("该生尚未选课!");
1230                 }
1231             }
1232             saveCourseInforToTxt();
1233             saveStuCourSelectInforToTxt();
1234             saveStuInforToTxt();
1235         }
1236 
1237 
1238         /* 文件流操作
1239          * 1、读取学生信息
1240          * 2、写入学生信息
1241          * 3、读取课程信息
1242          * 4、写入课程信息
1243          * 5、读取选课信息
1244          * 6、写入选课信息*/
1245 
1246         //从txt文件中读取原始学生数据
1247         static void readStuInforFromTxt()
1248         {
1249             FileStream mFile = new FileStream("stuInfor.txt", FileMode.OpenOrCreate);
1250             mFile.Close();
1251             mFile.Dispose();
1252             int countLinesInTxt = File.ReadAllLines("stuInfor.txt").Length;
1253             FileStream aFile = new FileStream("stuInfor.txt", FileMode.OpenOrCreate);
1254 
1255             StreamReader sr = new StreamReader(aFile, Encoding.Default);   //没有Encoding.Default,读取到的汉字会乱码
1256             string[] data;
1257             string strReadFromTxt = "";
1258             for (int i = 0; i < countLinesInTxt; i++)
1259             {
1260                 strReadFromTxt = sr.ReadLine();
1261                 data = strReadFromTxt.Split(' ');
1262                 if (data[0] == "")
1263                     continue;
1264                 student studFromTxt = new student();
1265                 studFromTxt._num = data[0];
1266                 studFromTxt.name = data[1];
1267                 studFromTxt.placeNative = data[2];
1268                 studFromTxt.tel = data[3];
1269                 studFromTxt.dormitoryRoom = data[4];
1270                 for (int j = 0; j < data.Length - 5; j += 2)
1271                 {
1272                     course Cour = new course();
1273                     Cour.id = data[j / 2];
1274                     Cour.namOfCourse = data[j / 2 + 1];
1275                     studFromTxt.COUR[j / 2] = Cour;
1276                     Cour = null;
1277                 }
1278                 stu[++countStudent] = studFromTxt;
1279                 studFromTxt = null;
1280             }
1281             sr.Close();
1282             sr.Dispose();
1283             aFile.Close();
1284             aFile.Dispose();
1285         }
1286 
1287         //将学生数据保存到txt文件中
1288         static void saveStuInforToTxt()
1289         {
1290             FileStream saveFile = new FileStream("stuInfor.txt", FileMode.Truncate);
1291             StreamWriter sw = new StreamWriter(saveFile, Encoding.Default);
1292 
1293             int m = -1;
1294             do
1295             {
1296                 m++;
1297             }
1298             while (stu[m] != null);
1299             for (int i = 0; i < m; i++)
1300             {
1301                 string str = stu[i]._num + " " + stu[i].name + " " + stu[i].placeNative + " " + stu[i].tel + " " + stu[i].dormitoryRoom;
1302                 sw.WriteLine(str);
1303                 countStudent--;
1304             }
1305             sw.Close();
1306             saveFile.Close();
1307         }
1308 
1309         //从txt文件中读取原始课程数据
1310         static void readCourInfoFromTxt()
1311         {
1312             FileStream mFile = new FileStream("courseInfor.txt", FileMode.OpenOrCreate);
1313             mFile.Close();
1314             int countLinesInTxt = File.ReadAllLines("courseInfor.txt").Length;
1315             FileStream aFile = new FileStream("courseInfor.txt", FileMode.OpenOrCreate);
1316 
1317             StreamReader sr = new StreamReader(aFile, Encoding.Default);   //没有Encoding.Default,读取到的汉字会乱码
1318             string[] data;
1319             string strReadFromTxt = "";
1320             for (int i = 0; i < countLinesInTxt; i++)
1321             {
1322                 strReadFromTxt = sr.ReadLine();
1323                 data = strReadFromTxt.Split(' ');
1324                 if (data[0] == "")
1325                     continue;
1326                 course courseFromTxt = new course();
1327                 courseFromTxt.id = data[0];
1328                 courseFromTxt.namOfCourse = data[1];
1329                 cour[++countCourse] = courseFromTxt;
1330                 courseFromTxt = null;
1331             }
1332             sr.Close();
1333             aFile.Close();
1334         }
1335 
1336         //将课程数据保存到txt文件中
1337         static void saveCourseInforToTxt()
1338         {
1339             FileStream saveFile = new FileStream("courseInfor.txt", FileMode.Truncate);
1340             StreamWriter sw = new StreamWriter(saveFile, Encoding.Default);
1341 
1342             int m = -1;
1343             do
1344             {
1345                 m++;
1346                 if (m == 10)
1347                     break;
1348             }
1349             while (cour[m] != null);
1350             for (int i = 0; i < m; i++)
1351             {
1352                 string str = cour[i].id + " " + cour[i].namOfCourse;
1353                 sw.WriteLine(str);
1354                 countCourse--;
1355             }
1356             sw.Close();
1357             saveFile.Close();
1358         }
1359 
1360         //从txt文件中读取原始选课数据
1361         static void readStuCourSelectInforFromTxt()
1362         {
1363             FileStream mFile = new FileStream("CourSelect.txt", FileMode.OpenOrCreate);
1364             mFile.Close();
1365             mFile.Dispose();
1366             int countLinesInTxt = File.ReadAllLines("CourSelect.txt").Length;
1367             FileStream aFile = new FileStream("CourSelect.txt", FileMode.Open);
1368 
1369             StreamReader sr = new StreamReader(aFile, Encoding.Default);   //没有Encoding.Default,读取到的汉字会乱码
1370             string strReadFromTxt = "";
1371             for (int i = 0; i < countLinesInTxt; i++)
1372             {
1373                 strReadFromTxt = sr.ReadLine();
1374                 string[] strData = strReadFromTxt.Split(' ');
1375                 if (strData[0] == "")
1376                     continue;
1377                 student STU = new student();
1378                 STU._num = strData[0];
1379                 STU.name = strData[1];
1380                 STU.placeNative = strData[2];
1381                 STU.tel = strData[3];
1382                 STU.dormitoryRoom = strData[4];
1383                 for (int k = 0; k < strData.Length - 5; k += 2)
1384                 {
1385                     course Cou = new course();
1386                     Cou.id = strData[5+k];
1387                     Cou.namOfCourse = strData[6+k];
1388                     STU.COUR[k / 2] = Cou;
1389                     Cou = null;
1390                 }
1391 
1392                 //在已导入的数据中查找该学生信息,并补充其选课信息
1393                 for (int j = 0; j <= countStudent; j++)                 
1394                 {
1395                     if (stu[j]._num == STU._num)
1396                         stu[j] = STU;
1397                 }
1398                 STU = null;
1399             }
1400             aFile.Close();
1401             aFile.Dispose();
1402         }
1403 
1404         //将学生数据保存到txt文件中
1405         static void saveStuCourSelectInforToTxt()
1406         {
1407             FileStream saveStuCourFile = new FileStream("CourSelect.txt", FileMode.Truncate);
1408             StreamWriter sw = new StreamWriter(saveStuCourFile, Encoding.Default);
1409             int m = -1;
1410             do
1411             {
1412                 m++;
1413             }
1414             while (stu[m] != null);
1415             for (int i = 0; i < m; i++)
1416             {
1417                 string str = "";
1418                 if (stu[i].COUR[0] != null)
1419                 {
1420                     str = stu[i]._num + " " + stu[i].name + " " + stu[i].placeNative + " " + stu[i].tel + " "
1421                             + stu[i].dormitoryRoom;
1422                     for (int j = 0; j < 3&&stu[i].COUR[j] != null; j++)
1423                         str += " " + stu[i].COUR[j].id + " " + stu[i].COUR[j].namOfCourse;
1424                     sw.WriteLine(str);
1425                 }
1426             }
1427             sw.Close();
1428             saveStuCourFile.Close();
1429         }
1430     }
1431 }

 

posted on 2017-07-03 23:08  Arthurian  阅读(2611)  评论(0编辑  收藏  举报