文章目錄
- 1:功能介紹
- 2:功能實作
- 3:專案需求:
- 4:[專案git地址](https://gitee.com/itliulei/console-app1/tree/master/ConsoleApp1)
這個是大學程式期末設計
1:功能介紹
- 創建通訊錄
- 新建聯系人
- 查找聯系人
- 洗掉聯系人
- 顯示通訊錄資訊
- 退出
2:功能實作
這里分為主程式,物體類
- 主程式
using System;
using System.Collections;
using System.Collections.Generic;
using ConsoleApp1;//引入:這個類里面是定義的物體類(就是一個倉庫)
namespace MyClass
{
class Program
{
static void Main(string[] args)
{
try
{
Console.WriteLine("");
//這里定義i的原因是:第一次回圈把所需資訊都輸出,后面i不等于1之后就只輸出:"選擇功能:"
int i = 1;
while (true)//while回圈,這里是一個死回圈,引數是true或者false,如果等于true則無限回圈,等于false終止
{
if (i == 1)
{
Console.WriteLine("\t\t\t******************~@~歡迎使用通訊錄系統******************");
Console.WriteLine("\t\t\t*\t\t\t1.通訊錄的建立\t\t\t*");
Console.WriteLine("\t\t\t*\t\t\t2.新建聯系人\t\t\t*");
Console.WriteLine("\t\t\t*\t\t\t3.查找聯系人\t\t\t*");
Console.WriteLine("\t\t\t*\t\t\t4.洗掉聯系人\t\t\t*");
Console.WriteLine("\t\t\t*\t\t\t5.顯示通訊錄資訊\t\t*");
Console.WriteLine("\t\t\t*\t\t\t0.退出\t\t\t\t*");
Console.WriteLine("\t\t\t******************~@~歡迎使用通訊錄系統******************");
Console.WriteLine();
Console.Write("請選擇0-5:");//Console.Write():輸出陳述句,在括號書寫需要輸出到控制臺的資料,資料隨意書寫,一般是說明行文字,資料寫在雙引號內
}
else
{
Console.Write("選擇功能:");
}
i++;//i++:每回圈一次i的值加一
string choose = Console.ReadLine().Trim();//Console.ReadLine().Trim():獲取隔行控制臺輸入的資料
switch (choose)//switch...case判斷陳述句,根據choose的值執行相應的陳述句,break:終止繼續向下判斷(如果choose等于1,則只會執行Create()方法,不會繼續執行),default:默認,就是所有條件都符合就執行這個陳述句塊的方法
{
case "1":
Create();
break;
case "2":
AddItem();
break;
case "3":
SearchItem();
break;
case "4":
RemoveItem();
break;
case "5":
Show();
break;
case "0":
return;
default:
Console.WriteLine("選擇錯誤!");
break;
}
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
private static List<Student> student = new List<Student>();//定義List物件,用戶存放資料,
//本物件Student有三個引數,學號(setno)、姓名(name)、手機號(phone),你可以理解把Student理解成一個倉庫,一個倉庫可以存盤,學號(setno)、姓名(name)、手機號(phone)各一個,
//前面加上List則變成了集合,一個集合["1","2","3"...."n"]則可以存盤n各物件,
//通訊錄的建立方法
public static void Create()
{
try
{
for (; ; )//因為建立通訊錄可能是多個,所以用了for回圈,這種寫法則是無限發回圈
{
Student add = new Student();
Console.Write("學號:");
//賦值姓名
add.SetNo = Console.ReadLine().Trim();// The set accessor is invoked here
Console.Write("姓名:");
//賦值姓名
add.Name = Console.ReadLine().Trim();
Console.Write("電話號碼:");
//賦值電話號碼
add.Phone = Console.ReadLine().Trim();
if (add.SetNo == "-1" && add.Name == "-1" && add.Phone == "-1")//判斷輸入的學生資訊是否都為-1
{
foreach (var stu in student)
{
Console.WriteLine("建立通訊錄:");
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t" );
Console.WriteLine("\t\t\t\t" + "學號"+"\t\t"+ "姓名"+"\t\t"+ "電話號碼" + "\t\t");
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
Console.WriteLine(stu.SetNo + "\t\t"+ stu.Name+"\t\t"+stu.Phone);
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
}
break;//如果輸入的學生資訊都是-1則跳出for回圈,
}
else
{
student.Add(add);
}
}
}
catch (Exception e)
{
throw e;
}
}
//新建聯系人方法
public static void AddItem()
{
try
{
Student add = new Student();//定義一個通訊錄物件
Console.Write("學號:");
//賦值姓名
add.SetNo = Console.ReadLine().Trim();// 給物件屬性賦值,這個賦值的是學號----------------------------The set accessor is invoked here(set():方法給屬性賦值)
Console.Write("姓名:");
//賦值姓名
add.Name = Console.ReadLine().Trim();// 給物件屬性賦值,這個賦值的是姓名----------------------------The set accessor is invoked here(set():方法給屬性賦值)
Console.Write("電話號碼:");
//賦值電話號碼
add.Phone = Console.ReadLine().Trim();// 給物件屬性賦值,這個賦值的是電話號碼----------------------------The set accessor is invoked here(set():方法給屬性賦值)
student.Add(add);
//回圈得到添加后的所有資料
foreach (var stu in student)//for回圈的另外一種形式,student是上面定義的list集合,stu:就和上面的add物件一樣,這里就是每次從list集合拿出來一個倉庫
{
Console.WriteLine("插入后:");
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
Console.WriteLine("\t\t\t\t" + "學號" + "\t\t" + "姓名" + "\t\t" + "電話號碼" + "\t\t");
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
Console.WriteLine(stu.SetNo + "\t\t" + stu.Name + "\t\t" + stu.Phone);// The get accessor is invoked here(get():方法取值,)每個倉庫有對應的三個值(因為我們就給倉庫定義了三個,其實可以有n個的)通過.引數拿值
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
}
}
catch (Exception e)
{
throw e;
}
}
//查找聯系人方法
public static void SearchItem()//這里就是定義一個方法,public:公共的;static:靜態:void:沒有回傳值;SearchItem:方法名字;():里面可以放引數;這個方法上面有呼叫的,
{
try
{
Console.WriteLine("選擇查找方式:");
Console.WriteLine("\t\t\t\t" + "1.按學號" + "\t\t" + "2.按姓名" + "\t\t" + "3.按電話號碼" + "\t\t");
string choose = Console.ReadLine().Trim();
switch (choose)
{
case "1":
Console.WriteLine("請輸入學號:");
string setNo = Console.ReadLine().Trim();
for(int i = 0; i < student.Count; i++)//for回圈:定義一個變數:i等于0:因為List集合的資料是從零開始計數的;student.Count:獲取student List集合的數量,保證回圈得次數,如果student.Count等于1則只for回圈只會回圈一次;i++:每回圈一次i的值加1
{
if (setNo == student[i].SetNo)//student[i].SetNo,student[i]:獲取第i個物件(倉庫);.SetNo:取值(這里取得是學號(setNo)),學號相同,則輸出這個同學的資訊
{
//這里書寫i+1是應為List集合是從0開始的!!!
Console.WriteLine("要查找的是第"+(i + 1)+"位通訊者");
Console.WriteLine("\t\t\t\t" + "學號:" +student[i].SetNo + "\t\t" + "姓名:" + student[i].Name + "\t\t" + "電話號碼:" + student[i].Phone);
}
}
break;
case "2":
Console.WriteLine("請輸入姓名:");
string name = Console.ReadLine().Trim();
for (int i = 0; i < student.Count; i++)
{
if (name == student[i].Name)
{
Console.WriteLine("要查找的是第" + (i + 1) + "位通訊者");
Console.WriteLine("\t\t\t\t" + "學號:" + student[i].SetNo + "\t\t" + "姓名:" + student[i].Name + "\t\t" + "電話號碼:" + student[i].Phone);
}
}
break;
case "3":
Console.WriteLine("請輸入電話號碼:");
string phone = Console.ReadLine().Trim();
for (int i = 0; i < student.Count; i++)
{
if (phone == student[i].Phone)
{
Console.WriteLine("要查找的是第" + (i + 1) + "位通訊者");
Console.WriteLine("\t\t\t\t" + "學號:" + student[i].SetNo + "\t\t" + "姓名:" + student[i].Name + "\t\t" + "電話號碼:" + student[i].Phone);
}
}
break;
default:
Console.WriteLine("選擇錯誤!");
break;
}
}
catch (Exception e)
{
throw e;
}
}
//洗掉聯系人方法
public static void RemoveItem()
{
try
{
Console.WriteLine("選擇洗掉方式:");
Console.WriteLine("\t\t\t\t" + "1.按學號" + "\t\t" + "2.按姓名" + "\t\t" + "3.按電話號碼" + "\t\t");
string choose = Console.ReadLine().Trim();
switch (choose)
{
case "1":
Console.WriteLine("請輸入學號:");
string setNo = Console.ReadLine().Trim();// The get accessor is invoked here
for (int i = 0; i < student.Count; i++)
{
if (setNo == student[i].SetNo)
{
student.Remove(student[i]);//這里洗掉輸入學號和已存學號相等的這條通訊錄資訊
break;
}
}
Console.WriteLine("洗掉后:");
foreach (var stu in student)
{
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
Console.WriteLine("\t\t\t\t" + "學號" + "\t\t" + "姓名" + "\t\t" + "電話號碼" + "\t\t");
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
Console.WriteLine(stu.SetNo + "\t\t" + stu.Name + "\t\t" + stu.Phone);
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
}
break;
case "2":
Console.WriteLine("請輸入姓名:");
string name = Console.ReadLine().Trim();
for (int i = 0; i < student.Count; i++)
{
if (name == student[i].Name)
{
student.Remove(student[i]);
break;
}
}
Console.WriteLine("洗掉后:");
foreach (var stu in student)
{
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
Console.WriteLine("\t\t\t\t" + "學號" + "\t\t" + "姓名" + "\t\t" + "電話號碼" + "\t\t");
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
Console.WriteLine(stu.SetNo + "\t\t" + stu.Name + "\t\t" + stu.Phone);
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
}
break;
case "3":
Console.WriteLine("請輸入電話號碼:");
string phone = Console.ReadLine().Trim();
for (int i = 0; i < student.Count; i++)
{
if (phone == student[i].Phone)
{
student.Remove(student[i]);
break;
}
}
Console.WriteLine("洗掉后:");
foreach (var stu in student)
{
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
Console.WriteLine("\t\t\t\t" + "學號" + "\t\t" + "姓名" + "\t\t" + "電話號碼" + "\t\t");
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
Console.WriteLine(stu.SetNo + "\t\t" + stu.Name + "\t\t" + stu.Phone);
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
}
break;
default:
Console.WriteLine("選擇錯誤!");
break;
}
}
catch (Exception e)
{
throw e;
}
}
//顯示通訊錄資訊
public static void Show()
{
Console.WriteLine("當前通訊錄內容如下:");
foreach (var stu in student)
{
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
Console.WriteLine("\t\t\t\t" + "學號" + "\t\t" + "姓名" + "\t\t" + "電話號碼" + "\t\t");
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
Console.WriteLine(stu.SetNo + "\t\t" + stu.Name + "\t\t" + stu.Phone);
Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
}
}
}
}
- 物體類
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp1
{
class Student
{
private string _setNo; //學號
private string _name; //姓名
private string _phone; //手機號
//創建Person物件
public Student(string SetNo, string Name, string Phone)
{
this._setNo = SetNo;
this._name = Name;
this._phone = Phone;
}
//學號
public string SetNo
{
get { return _setNo; }
set { _setNo = value; }
}
//姓名
public string Name
{
get { return _name; }
set { _name = value; }
}
//手機號
public string Phone
{
get { return _phone; }
set { _phone = value; }
}
public Student()
{
}
}
}
3:專案需求:
需求檔案
C#程式設計期末作業
1 題目
學生通訊錄管理系統
2 功能介紹
請重點關注下面的加粗內容,不按要求的一律按不及格處理!
? 概述:使用C#開發一個學生通訊錄管理系統,該程式可以實作創建一個學生通訊錄,并實作一些相關操作,具體功能如圖1所示,該系統基于控制臺應用程式,共包含6個功能,通過輸入數字選擇相應的功能,

圖1 功能圖
? 通訊錄的建立:輸入1,進入該功能,需要用戶輸入若干學生資訊,若學生資訊輸入為-1,表示輸入結束,輸入結束后,把所有學生資訊顯示出來,然后可以繼續選擇其他功能進行操作,如圖2所示,

圖2 通訊錄建立功能
? 插入通訊錄記錄:輸入2,進入該功能,可再次輸入一個學生添加到通訊錄中,輸入完成后把所示學生資訊顯示出來,如圖3所示,

圖3 插入通訊錄記錄功能
? 查詢通訊記錄:輸入3,進入該功能,可以選擇查找方式,按學號查找或者按姓名查找,根據輸入的資訊,把相應的學生資訊顯示出來,如圖4所示,

圖4 查詢通訊記錄功能
? 洗掉通訊錄記錄:輸入4,進入該功能,可以選擇洗掉方式,按序號,按學號,按姓名,輸入完成后洗掉相應的學生,然后把所有學生資訊顯示出來,如圖5所示,

圖5 洗掉通訊錄記錄功能
? 顯示通訊錄資訊:輸入5,進入該功能,把所有學生資訊顯示出來,如圖6所示,
? 退出管理系統:輸入0,退出該程式,

圖6 顯示通訊錄資訊功能
3 要求
? 該程式要基于控制臺開發,不是windows表單應用程式,
? 需要使用面向物件的思想撰寫此程式,比如需要用到類的概念,至少包含一個學生類,
? 程式的界面可以和上述截圖有所不同,但功能不能改變,
? 開發完成后,寫出相關檔案,描述整個開發程序,該檔案主要考察對所開發程式的理解程度,同時,此檔案會作為成績的重要依據,檔案中只需要寫出開發設計程序,相當于講一下這個程式每個功能是如何實作的,不要列舉相關的概念及名詞解釋、心得體會等與本程式無關的內容,檔案字數不少于700字(以Word中統計字數為準),檔案中不得粘貼代碼,也不能插入代碼截圖,可以用語言描述出代碼的含義,檔案中可以插入程式運行圖,或者自己畫的流程圖之類的圖表,
? 若發現檔案和其他同學有較多雷同的地方,按作弊處理,
? 檔案格式要求:正文部分:宋體,小四號,行距1.5倍,首行縮進2字符;標題:黑體,小三號,行距1.5倍,頁眉設定為學號姓名,檔案中不要出現大量的空行,
? 提交時,把檔案放到程式檔案夾中,然后進行壓縮,最后把壓縮包命名為學號姓名,如201901024101張三,
4:專案git地址
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/232604.html
標籤:其他
上一篇:如何用C語言完成水仙花數的搜索
下一篇:2020-12-09
