飞道的博客

c#通讯录管理系统(女朋友版本)

404人阅读  评论(0)

这个是大学程序期末设计

1:功能介绍

  1. 创建通讯录
  2. 新建联系人
  3. 查找联系人
  4. 删除联系人
  5. 显示通讯录信息
  6. 退出

2:功能实现

这里分为主程序,实体类

  1. 主程序
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");
            }
        }
    }
}


  1. 实体类
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://blog.csdn.net/qq_38215042/article/details/110848032
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场