C#控制台应用程序之选课系统
本程序以文本文件作为存储媒介,实现了一个简化版的选课系统,主要实现了以下功能
- 对学生信息的增删改查
- 对课程信息的增删改查
- 对学生选课的增删改查
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 }
本文来自博客园,作者:Arthurian,转载请注明原文链接:https://www.cnblogs.com/Arthurian/p/7113446.html
欢迎邮件交流:zhuanxinxin@aliyun.com