精华内容
下载资源
问答
  • c#通讯录管理系统

    2014-12-26 14:08:26
    vs2012+sql2008,通讯录管理系统:简单的增删查改的通讯录操作,不是3层结构!
  • C# 通讯录管理系统

    2010-06-28 18:13:05
    C# 通讯录C# 通讯录C# 通讯录 有报告有代码,凑合着看看吧
  • C#通讯录管理系统

    2014-04-23 21:37:36
    实现联系人的添加,删除,修改,查找。较简单,适合初学者。
  • 自学C#一段时间了,看到这篇文章 C#通讯录管理系统,按文中课题要求自己捣鼓了一个,欢迎大侠指导 代码 using System; using System.Collections.Generic; namespace StudentsBook { class Program { private const...

    C# 通讯录管理系统 控制台

    自学C#一段时间了,看到这篇文章 C#通讯录管理系统,按文中课题要求自己捣鼓了一个练手,欢迎大侠指导

    功能要求

    1. 建立通讯录
    2. 插入记录
    3. 查询记录
    4. 删除记录
    5. 显示所有记录

    代码

    using System;
    using System.Collections.Generic;
    
    namespace StudentsBook
    {
        class Program
        {
            private const string _welcome = @"
            ********** ^@^ 欢迎使用学生管理系统 **********
            *           1 建通讯录                       *
            *           2 插入记录                       *
            *           3 查询记录                       *
            *           4 删除记录                       *
            *           5 显示信息                       *
            *           0 退出系统                       *
            ********** ^@^ 欢迎使用学生管理系统 **********";
    
    		// 存通讯录用的List
            private static List<Student> _books;
            //俩dic用于查找
            private static Dictionary<string, Student> _hashmapByID;
            private static Dictionary<string, List<Student>> _hashmapByName;
            private static int c = 0; //序号
            static void Main(string[] args)
            {
                _books = new List<Student>();
                _hashmapByID = new Dictionary<string, Student>();
                _hashmapByName = new Dictionary<string, List<Student>>();
                Console.WriteLine(_welcome);
                while (true)
                {
                    Console.Write("请选择功能 0-5: ");
                    var ct = Console.ReadLine();
                    switch (ct)
                    {
                        case "0":
                            {
                                break;
                            }
                        case "1":
                            {
                                MkBook();
                                break;
                            }
                        case "2":
                            {
                                Insert();
                                break;
                            }
                        case "3":
                            {
                                Search();
                                break;
                            }
                        case "4":
                            {
                                Delete();
                                break;
                            }
                        case "5":
                            {
                                Show();
                                break;
                            }
                        default:
                            {
                                Console.WriteLine(_welcome);
                                break;
                            }
                    }
                    if (ct == "0")
                    {
                        Console.WriteLine("退出系统");
                        break;
                    }
                }
            }
    
            private static void MkBook()
            {
                _books.Clear();
                Console.WriteLine("请输入学生学号、姓名和电话号码,建立通讯录,以‘-1’为输入结束标志");
                while (true)
                {
                    Console.Write($"请输入学生学号 {c + 1}: ");
                    var id = Console.ReadLine();
                    Console.Write($"请输入学生姓名 {c + 1}: ");
                    var name = Console.ReadLine();
                    Console.Write($"请输入学生手机号 {c + 1}: ");
                    var phone = Console.ReadLine();
                    bool x = false;
                    try
                    {
                        x = Convert.ToInt32(id) == -1;
                    }
                    catch (Exception) { }
                    if (x) break;
                    var stu = new Student(id, name, phone);
                    DataAdd(stu);
                }
                Console.WriteLine("已建立通讯录:");
                Show();
            }
    
            private static void Insert()
            {
                Console.WriteLine("请输入插入信息:");
                Console.Write($"请输入学生学号: ");
                var id = Console.ReadLine();
                Console.Write($"请输入学生姓名: ");
                var name = Console.ReadLine();
                Console.Write($"请输入学生手机号: ");
                var phone = Console.ReadLine();
                var stu = new Student(id, name, phone);
                DataAdd(stu);
                Console.WriteLine("插入后:");
                Show();
            }
    
            private static void Search()
            {
                Console.Write("选择查找方式:\n\t\t\t1. 按学号\t2. 按姓名  > ");
                var slt = Console.ReadLine();
                int ctrl = 1;
                try { ctrl = Convert.ToInt32(slt); }
                catch (Exception) { }
                if (ctrl == 1)
                {
                    Console.Write("请输入学号:");
                    var id = Console.ReadLine();
                    if (_hashmapByID.ContainsKey(id))
                    {
                        Console.WriteLine($"要查找的是学号为{id}的同学:\n\t\t\t学号:{_hashmapByID[id].ID}  姓名:{_hashmapByID[id].Name}  电话号码:{_hashmapByID[id].Phone}");
                    }
                    else
                    {
                        Console.WriteLine($"通讯录中未找到学号为{id}的同学");
                    }
                }
                else if (ctrl == 2)
                {
                    Console.Write("请输入姓名:");
                    var name = Console.ReadLine();
                    if (_hashmapByName.ContainsKey(name))
                    {
                        Console.WriteLine($"要查找的是姓名为{name}的同学,共找到{_hashmapByName[name].Count}位:");
                        for (int i = 0; i < _hashmapByName[name].Count; i++)
                        {
                            Console.WriteLine($"\t\t\t序号:{i + 1}  学号:{_hashmapByName[name][i].ID}  姓名:{_hashmapByName[name][i].Name} 电话号码:{_hashmapByName[name][i].Phone}");
                        }
                    }
                    else
                    {
                        Console.WriteLine($"通讯录中未找到姓名为{name}的同学");
                    }
                }
            }
    
            private static void Delete()
            {
                Console.Write("选择查找方式:\n\t\t\t1. 按序号\t2. 按学号\t3. 按姓名  > ");
                var slt = Console.ReadLine();
                int ctrl = 1;
                try { ctrl = Convert.ToInt32(slt); }
                catch (Exception) { }
                if (ctrl == 1)
                {
                    Console.Write("请输入序号:");
                    var sin = Console.ReadLine();
                    int num = 0;
                    try { num = Convert.ToInt32(sin); }
                    catch (Exception) { }
                    if (num <= _books.Count)
                    {
                        DataDelByNum(num);
                        Console.WriteLine($"已删除,删除后:");
                    }
                    else
                    {
                        Console.WriteLine($"通讯录中未找到序号为{num}的同学");
                    }
                }
                else if (ctrl == 2)
                {
                    Console.Write("请输入学号:");
                    var id = Console.ReadLine();
                    if (_hashmapByID.ContainsKey(id))
                    {
                        DataDelByID(id);
                        Console.WriteLine($"已删除,删除后:");
                    }
                    else
                    {
                        Console.WriteLine($"通讯录中未找到学号为{id}的同学");
                    }
                }
                else if (ctrl == 3)
                {
                    Console.Write("请输入姓名:");
                    var name = Console.ReadLine();
                    if (_hashmapByName.ContainsKey(name))
                    {
                        DataDelByName(name);
                        Console.WriteLine($"已删除,删除后:");
                    }
                    else
                    {
                        Console.WriteLine($"通讯录中未找到学号为{name}的同学");
                    }
                }
                Show();
            }
    
            private static void Show()
            {
                Console.WriteLine(
    @"        ----------------------------------------");
                Console.WriteLine("         序号\t学号\t姓名\t\t电话号码");
                
                Console.WriteLine(
    @"        ----------------------------------------");
                for (int i=0; i < _books.Count; i++)
                {
                    Console.WriteLine($"        {i + 1}\t{_books[i].ID}\t{_books[i].Name}\t\t{_books[i].Phone}");
                }
                Console.WriteLine(
    @"        ----------------------------------------");
            }
    
            private static void DataAdd(Student stu)
            {
                if (_hashmapByID.ContainsKey(stu.ID))
                {
                    Console.WriteLine($"Error: {stu.ID} invalid, please check again.");
                    return;
                }
                _books.Insert(c, stu);
                c++;
                _hashmapByID.Add(stu.ID, stu);
                if (_hashmapByName.ContainsKey(stu.Name))
                {
                    _hashmapByName[stu.Name].Add(stu);
                }
                else
                {
                    _hashmapByName.Add(stu.Name, new List<Student> { stu });
                }
            }
    
            private static void DataDelByID(string id)
            {
                if (!_hashmapByID.ContainsKey(id))
                {
                    Console.WriteLine($"Error: {id} invalid, please check again.");
                    return;
                }
                _books.Remove(_hashmapByID[id]);
                c--;
                _hashmapByName[_hashmapByID[id].Name].Remove(_hashmapByID[id]);
                if (_hashmapByName[_hashmapByID[id].Name].Count == 0)
                {
                    _hashmapByName.Remove(_hashmapByID[id].Name);
                }
                _hashmapByID.Remove(id);
            }
    
            private static void DataDelByName(string name)
            {
                if (!_hashmapByName.ContainsKey(name))
                {
                    Console.WriteLine($"Error: {name} invalid, please check again.");
                    return;
                }
                foreach (var s in _hashmapByName[name])
                {
                    _books.Remove(s);
                    c--;
                    _hashmapByID.Remove(s.ID);
                }
                _hashmapByName.Remove(name);
            }
    
            private static void  DataDelByNum(int num)
            {
                num--;
                if (num > _books.Count)
                {
                    Console.WriteLine($"Error: {num} out of index, please check again.");
                    return;
                }
                _hashmapByID.Remove(_books[num].ID);
                _hashmapByName[_books[num].Name].Remove(_books[num]);
                if (_hashmapByName[_books[num].Name].Count == 0)
                {
                    _hashmapByName.Remove(_books[num].Name);
                }
                _books.Remove(_books[num]);
                c--;
            }
        }
    
        public class Student
        {
            public string ID { get; set; }
            public string Name { get; set; }
            public string Phone { get; set; }
            public Student(string id, string name, string phone)
            {
                ID = id;
                Name = name;
                Phone = phone;
            }
            public Student()
            {
    
            }
        }
    }
    
    
    展开全文
  • C#通讯录管理系统.rarC#通讯录管理系统.rarC#通讯录管理系统.rar
  • C#通讯录管理系统 总结汇报 课题名称:C通讯录管理系统 专 业: 软 件 技 术 班 级 1 1 姓 名: 祝 中 兴 学 号 20112836 ?目录 TC \o "1-3" \h z u HYPLINK \l _Tc3417 系统分析? h HYRLINK \l _Tc341717140" 1.1需求...
  • C#高级程序设计之通讯录管理系统,使用C#窗口技术编程,界面设计人性化,代码简单易懂。
  • C# 通讯录管理系统 软件工程课程设计 毕业论文
  • C#通讯录管理系统毕业论文是我自己用Visual Studio 2005做的,用SQL Server 2000,这里是我 的毕业论文,可能有许多错误,仅供参考
  • 课程设计报告 课程名称 程序设计 设计题目 通讯录管理系统 学生班级 学生姓名 指导教师 完成日期 数学与计算机系 . 课程设计项目研究报告 目 录 第 1 章 项目简介 1 1.1 项目名称 1 1.2 开发人员 1 1.3 指导教师 1 ...
  • c# 通讯录 通讯录 系统 课程设计报告 内含代码
  • PAGE PAGE 课程设计报告 课程名称 程序设计 设计题目 通讯录管理系统 学生班级 学生姓名 指导教师 完成日期 数学与计算机系 课程设计项目研究报告 目 录 TOC \o "1-3" \h \z \u 第 1 章 项目简介 1 1.1 项目名称 1 ...
  • 通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程的时间
  • c#通讯录管理系统(女朋友版本)

    千次阅读 多人点赞 2020-12-08 00:06:09
    创建通讯录 新建联系人 查找联系人 删除联系人 显示通讯录信息 退出 2:功能实现 这里分为主程序,实体类 主程序 using System; using System.Collections; using System.Collections.Generic; using ...

    本文为博主原创文章,未经博主同意不得转载
    本文链接:https://blog.csdn.net/qq_38215042/article/details/110848032

    这个是大学程序期末设计

    1:功能介绍

    1. 创建通讯录
    2. 新建联系人
    3. 查找联系人(1.按学号" ; “2.按姓名” ; “3.按电话号码” ; "4.按序号;)
    4. 删除联系人(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
                        {
                            Console.WriteLine("建立通讯录:");
                            Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                            Console.WriteLine("\t\t\t\t" + "\t\t" + "序号" + "学号" + "\t\t" + "姓名" + "\t\t" + "电话号码" + "\t\t");
                            Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                            for (int i = 0; i < student.Count; i++)//for循环的另外一种形式,student是上面定义的list集合,stu:就和上面的add对象一样,这里就是每次从list集合拿出来一个仓库
                            {
                               Console.WriteLine((i + 1) + "\t\t" + student[i].SetNo + "\t\t" + student[i].Name + "\t\t" + student[i].Phone);// The get accessor is invoked here(get():方法取值。)每个仓库有对应的三个值(因为我们就给仓库定义了三个,其实可以有n个的)通过.参数拿值
                            }
                            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);
                    //循环得到添加后的所有数据
                    Console.WriteLine("插入后:");
                    Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                    Console.WriteLine("\t\t\t\t" + "\t\t" + "序号" + "学号" + "\t\t" + "姓名" + "\t\t" + "电话号码" + "\t\t");
                    Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                    for (int i = 0;i<student.Count;i++ )//for循环的另外一种形式,student是上面定义的list集合,stu:就和上面的add对象一样,这里就是每次从list集合拿出来一个仓库
                    {
                        Console.WriteLine((i + 1) + "\t\t" + student[i].SetNo + "\t\t" + student[i].Name + "\t\t" + student[i].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" + "4.按序号" + "\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;
                        case "4":
                            Console.WriteLine("请输入序号:");
                            int orderNumber = Convert.ToInt32(Console.ReadLine().Trim());
                            for (int i = 0; i < student.Count; i++)
                            {
                                if (orderNumber -1 == i)
                                {
                                    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" + "4.按序号" + "\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("删除后:");
                            Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                            Console.WriteLine("\t\t\t\t" + "\t\t" + "序号" + "学号" + "\t\t" + "姓名" + "\t\t" + "电话号码" + "\t\t");
                            Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                            for (int i = 0; i < student.Count; i++)//for循环的另外一种形式,student是上面定义的list集合,stu:就和上面的add对象一样,这里就是每次从list集合拿出来一个仓库
                            {
                                Console.WriteLine((i + 1) + "\t\t" + student[i].SetNo + "\t\t" + student[i].Name + "\t\t" + student[i].Phone);// The get accessor is invoked here(get():方法取值。)每个仓库有对应的三个值(因为我们就给仓库定义了三个,其实可以有n个的)通过.参数拿值
                            }
                            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("删除后:");
                            Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                            Console.WriteLine("\t\t\t\t" + "\t\t" + "序号" + "学号" + "\t\t" + "姓名" + "\t\t" + "电话号码" + "\t\t");
                            Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                            for (int i = 0; i < student.Count; i++)//for循环的另外一种形式,student是上面定义的list集合,stu:就和上面的add对象一样,这里就是每次从list集合拿出来一个仓库
                            {
                                Console.WriteLine((i + 1) + "\t\t" + student[i].SetNo + "\t\t" + student[i].Name + "\t\t" + student[i].Phone);// The get accessor is invoked here(get():方法取值。)每个仓库有对应的三个值(因为我们就给仓库定义了三个,其实可以有n个的)通过.参数拿值
                               
                            }
                            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("删除后:");
                            Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                            Console.WriteLine("\t\t\t\t" + "\t\t" + "序号" + "学号" + "\t\t" + "姓名" + "\t\t" + "电话号码" + "\t\t");
                            Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                            for (int i = 0; i < student.Count; i++)//for循环的另外一种形式,student是上面定义的list集合,stu:就和上面的add对象一样,这里就是每次从list集合拿出来一个仓库
                            {
                                Console.WriteLine((i + 1) + "\t\t" + student[i].SetNo + "\t\t" + student[i].Name + "\t\t" + student[i].Phone);// The get accessor is invoked here(get():方法取值。)每个仓库有对应的三个值(因为我们就给仓库定义了三个,其实可以有n个的)通过.参数拿值
                            }
                            Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                            break;
                        case "4":
                            Console.WriteLine("请输入序号:");
                            int orderNumber = Convert.ToInt32(Console.ReadLine().Trim());
                            for (int i = 0; i < student.Count; i++)
                            {
                                if (orderNumber - 1 == i)
                                {
                                    student.Remove(student[i]);
                                    break;
                                }
                            }
                            Console.WriteLine("删除后:");
                            Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                            Console.WriteLine("\t\t\t\t" + "\t\t" + "序号" + "学号" + "\t\t" + "姓名" + "\t\t" + "电话号码" + "\t\t");
                            Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                            for (int i = 0; i < student.Count; i++)//for循环的另外一种形式,student是上面定义的list集合,stu:就和上面的add对象一样,这里就是每次从list集合拿出来一个仓库
                            {
                                Console.WriteLine((i+1) + "\t\t" + student[i].SetNo + "\t\t" + student[i].Name + "\t\t" + student[i].Phone);// The get accessor is invoked here(get():方法取值。)每个仓库有对应的三个值(因为我们就给仓库定义了三个,其实可以有n个的)通过.参数拿值
                            }
                            Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                            break;
                        default:
                            Console.WriteLine("选择错误!");
                            break;
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            //显示通讯录信息
            public static void Show()
            {
                Console.WriteLine("当前通讯录内容如下:");
                Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                Console.WriteLine("\t\t\t\t" + "\t\t" + "序号" + "学号" + "\t\t" + "姓名" + "\t\t" + "电话号码" + "\t\t");
                Console.WriteLine("\t\t\t" + "-----------------------------------" + "\t\t\t");
                for (int i = 0; i < student.Count; i++)//for循环的另外一种形式,student是上面定义的list集合,stu:就和上面的add对象一样,这里就是每次从list集合拿出来一个仓库
                {
                    Console.WriteLine((i + 1) + "\t\t" + student[i].SetNo + "\t\t" + student[i].Name + "\t\t" + student[i].Phone);// The get accessor is invoked here(get():方法取值。)每个仓库有对应的三个值(因为我们就给仓库定义了三个,其实可以有n个的)通过.参数拿值
                }
                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 功能图

    3. 通讯录的建立:输入1,进入该功能,需要用户输入若干学生信息,若学生信息输入为-1,表示输入结束。输入结束后,把所有学生信息显示出来,然后可以继续选择其他功能进行操作。如图2所示。
      在这里插入图片描述
      图2 通讯录建立功能

    4. 插入通讯录记录:输入2,进入该功能,可再次输入一个学生添加到通讯录中,输入完成后把所示学生信息显示出来,如图3所示。
      在这里插入图片描述
      图3 插入通讯录记录功能

    5. 查询通讯记录:输入3,进入该功能,可以选择查找方式,按学号查找或者按姓名查找,根据输入的信息,把相应的学生信息显示出来,如图4所示。
      在这里插入图片描述

    图4 查询通讯记录功能
    6. 删除通讯录记录:输入4,进入该功能,可以选择删除方式,按序号,按学号,按姓名,输入完成后删除相应的学生,然后把所有学生信息显示出来。如图5所示。
    在这里插入图片描述

    图5 删除通讯录记录功能
    7. 显示通讯录信息:输入5,进入该功能,把所有学生信息显示出来。如图6所示。
    8. 退出管理系统:输入0,退出该程序。

    在这里插入图片描述

    图6 显示通讯录信息功能

    要求如下:

    1. 该程序要基于控制台开发,不是windows窗体应用程序。
    2. 需要使用面向对象的思想编写此程序,比如需要用到类的概念,至少包含一个学生类
    3. 程序的界面可以和上述截图有所不同,但功能不能改变。
    4. 开发完成后,写出相关文档,描述整个开发过程,该文档主要考察对所开发程序的理解程度,同时,此文档会作为成绩的重要依据。文档中只需要写出开发设计过程,相当于讲一下这个程序每个功能是如何实现的不要列举相关的概念及名词解释、心得体会等与本程序无关的内容,文档字数不少于700字(以Word中统计字数为准),文档中不得粘贴代码,也不能插入代码截图,可以用语言描述出代码的含义,文档中可以插入程序运行图,或者自己画的流程图之类的图表
    5. 若发现文档和其他同学有较多雷同的地方,按作弊处理
    6. 文档格式要求:正文部分:宋体,小四号,行距1.5倍,首行缩进2字符;标题:黑体,小三号,行距1.5倍。页眉设置为学号姓名。文档中不要出现大量的空行。
    7. 提交时,把文档放到程序文件夹中,然后进行压缩,最后把压缩包命名为学号姓名,如201901024101张三

    4:项目git地址

    5:验证文件

    6:功能流程讲解

    6.1:准本工作

    1. 环境参数:配置好c#所需环境
    2. 安装ide:Visual Studio 2019
    3. 准备一个实体类:Student
    4. 定义一个List对象用于存储通讯录信息

    6.2:设计一个死循环

    设计一个死循环

    1. 实现方式:书写一个while循环,参数给true实现目标效果
    2. 书写目的:使程序持续循环执行,以达到可以持续工作的目标

    6.3:使用 switch…case 语句

    使用 switch…case 语句

    1. 实现方式:按照需求书写正确的swich….case语句
    2. 书写目的:通过参数判断执行不同的方法用以实现不同的功能

    6.4:书写Create()方法

    书写Create()方法

    1. 实现目标:用于通讯录的建立
    2. 功能实现讲解:通过for(;;)循环语句,实现逻辑上可以无限添加通讯信息的功能,因为输入“-1”可以结束此次功能,所以增加一个判断跳出循环功能。最后按照要求写一个for循环把存储的通讯录信息全部打印到控制台一份
    3. 程序运行截图:省略

    6.5:书写AddItem()方法

    书写AddItem()方法

    1. 实现目标:新建联系人方法
    2. 功能实现讲解:因为需求只要输入一个同学的信息,所以简化Create()方法就可以实现此功能,在此不做详细讲解
    3. 程序运行截图:省略

    6.6:书写SearchItem()方法

    书写SearchItem()方法

    1. 实现目标:查找联系人方法
    2. 功能实现讲解:因为需要选择方式,按学号、按姓名、按手机号,所以这里使用switch…case语句实现选择的功能。根据不同的选择,书写判断语句,获取相对应的数据。最后根据要求把查询出来的对应数据输出到控制台展示出来
    3. 程序运行截图:省略

    6.7:书写RemoveItem()方法

    书写RemoveItem()方法

    1. 实现目标:删除联系人方法
    2. 功能实现讲解:因为这里依然需要选择方式,按学号、按姓名、按手机号,所以这里依然使用switch…case语句的方式实现选择的功能。选择好特定的方式之后,根据输入的值删除特定的用户数据。最后把未删除的所有学生信息输出到控制台展示出来。
    3. 程序运行截图:省略

    6.8:书写Show()方法

    书写Show()方法

    1. 实现目标:显示通讯录信息
    2. 功能实现讲解:此功能就是通过一个简单的foreach()循环,把存储在 List集合里面的数据输出到控制台展示出来
    3. 程序运行截图:省略
    展开全文
  • using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text;...using System.Windows.Forms;... private string strConn = System....
  • C#通讯录项目学生期末作业+C#.通讯录管理系统.rar
  • C# WEB 通讯录管理系统

    2011-04-18 18:20:20
    C# WEB 通讯录管理系统C# WEB 通讯录管理系统C# WEB 通讯录管理系统C# WEB 通讯录管理系统
  • 内容索引:C#源码,数据库应用,通讯录,管理系统 C#通讯录管理系统,数据使用SQL2005,其实功能完成的不算多,也就早平常的添加联系人、查询联系人等,不过系统很综合,不但牵扯有数据库方面的知识,还牵扯到DLL文件...
  • 通讯录管理系统 c#

    2010-12-20 10:18:58
    通讯录管理系统 c#通讯录管理系统 c#通讯录管理系统 c#
  • C#个人通讯录管理系统

    热门讨论 2011-12-21 13:29:32
    1. 系统只允许一个管理员 ...二、 系统管理模块 1. 管理员登录:实现管理员的登录,...四、 通讯录管理模块 1. 实现管理员对通讯录信息的添加。 2. 实现管理员对通讯录信息的修改 3. 实现管理员对通讯录信息的删除。
  • c#课程设计-通讯录管理系统c#课程设计-通讯录管理系统
  • c#winfrom通讯录管理系统

    千次阅读 2019-11-25 11:32:33
    一个简单的通讯录管理系统,适合毕业设计。 主要实现以下功能 1.系统登录 2.增加联系人 3.修改和删除联系人 4.查找联系人 5.系统用户管理 首先先搭建数据库。 我这边使用的版本是sqlserver2014 创建两个表...

    一个简单的通讯录管理系统,适合毕业设计。

    主要实现以下功能

    1.系统登录

    2.增加联系人

    3.修改和删除联系人

    4.查找联系人

    5.系统用户管理

    首先先搭建数据库。

    我这边使用的版本是sqlserver2014

    创建两个表一个是用户表。另外一个是联系人表

    用户表包含了用户名,用户密码,联系人最大值,组别最大值代码如下

    CREATE TABLE Users
    (
     UserName VARCHAR(50),--用户名
      Password VARCHAR(50),--用户密码
      ContactMax INT,
      GroupMax INT 
    )

    然后创建联系人表格包含了基本的信息,其中id的PRIMARY KEY设置为主键,IDENTITY(1,1)设置为自动增长,代码如下

    CREATE TABLE Contacts
    (
    Id INT PRIMARY KEY IDENTITY(1,1),
    UserName VARCHAR(50),
    Groups VARCHAR(50),
    Name VARCHAR(50),
    WorkUnit VARCHAR(200),
    Phone VARCHAR(200),
    Email VARCHAR(200),
    Photo IMAGE
    )

    还需要插入一条管理员账号。这样子就可以使用这个账号进行登录

    INSERT INTO dbo.Users
            ( UserName ,
              Password ,
              ContactMax ,
              GroupMax
            )
    VALUES  ( 'admin' , -- UserName - varchar(50)
              '' , -- Password - varchar(50)
              10, -- ContactMax - int
              10  -- GroupMax - int
            )

    好了数据库就已经搭建好了那么就可以开始编写程序呢

    编写winfrom代码

    1.创建一个登录界面frmLogin和一个主界面frmMain

    2.创建一个数据库帮助类Sqlhelp用来实现数据库操作代码如下

    public static class SqlHelp
        {
            static string sqlconn = "server=.;DataBase=addressbook;Integrated Security =true;enlist=false";
            /// <summary>
            /// 根据sql语句获得数据库第一行第一列
            /// </summary>
            /// <param name="sql"></param>
            /// <returns></returns>
            public static object ExecuteScalar(string sql)
            {
                SqlConnection conn = new SqlConnection(sqlconn);
                SqlCommand cmd = new SqlCommand(sql,conn);
                conn.Open();
                object o = cmd.ExecuteScalar();
                conn.Close();
                return o;
            }
            /// <summary>
            /// 根据sql语句返回受影响的行数
            /// </summary>
            /// <param name="sql"></param>
            /// <returns></returns>
            public static int ExecuteNonQuery(string sql)
            {
                SqlConnection conn = new SqlConnection(sqlconn);
                SqlCommand cmd = new SqlCommand(sql, conn);
                conn.Open();
                int  o = cmd.ExecuteNonQuery();
                conn.Close();
                return o;
            }
            /// <summary>
            /// 根据sql语句返回受影响的行数
            /// </summary>
            /// <param name="sql"></param>
            /// <returns></returns>
            public static DataTable GetDataTable(string sql)
            {
                SqlConnection conn = new SqlConnection(sqlconn);
                SqlCommand cmd = new SqlCommand(sql, conn);
                conn.Open();
                DataTable dt = new DataTable();
                SqlDataAdapter sda = new SqlDataAdapter(cmd);
                sda.Fill(dt);
                conn.Close();
                return dt;
            }
        }

    3.在创建好的登录窗口上拖放控件实现用户名和密码以及登录按钮

    点击登录按钮的时候执行sql语句查询账号和密码是否正确

    /// <summary>
            /// 登录按钮
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button1_Click(object sender, EventArgs e)
            {
                if (txtUser.Text == "")
                {
                    MessageBox.Show("请输入用户名");
                }
                else
                { 
                   //判断账号和密码是否正确
                    string sql = "select count(1) from Users where UserName='" + txtUser.Text + "' and PassWord='" + txtPwd.Text + "'";
                    if (Convert.ToInt32(SqlHelp.ExecuteScalar(sql)) > 0)
                    {
                        frmMain.User = txtUser.Text;
                        this.DialogResult = DialogResult.OK;
                    }
                    else
                    {
                        MessageBox.Show("用户名或者密码错误");
                    }
                }
            }

    this.DialogResult=DialogResult.OK是将登录窗体的返回值定义为OK

    返回成功之后那么就要打开主界面了。

    4.修改Program类实现登录成功打开主窗体

     /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                frmLogin frm = new frmLogin();
                frm.ShowDialog();
                if (frm.DialogResult == DialogResult.OK)
                {
                    Application.Run(new frmMain());
                }
            }

    5.在主界面上增加菜单栏。以及两个listview

    展开全文
  • C#个人通讯录管理系统(含有数据库)。简单能实现添加联系人,修改联系人 初始账号 lishusen 密码666 ,账号密码可在数据库内进行修改
  • 通讯录管理系统.rar

    2020-06-19 08:45:47
    vs2013+sql2008,C#通讯录管理系统,包含简单的增删给查操作,基本功能都能满足。适合C#课程设计使用。
  • Microsoft Visual Studio 2005 C#.通讯录管理系统 SQL Server 2000数据库! 包含两个项目。一个服务端,一个客户端!

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 174
精华内容 69
关键字:

c#通讯录管理系统

c# 订阅