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

文章目录

  • 1:功能介绍
  • 2:功能实现
  • 3:项目需求:
    • C#程序设计期末作业
  • 4:[项目git地址](https://gitee.com/itliulei/console-app1/tree/master/ConsoleApp1)
  • 5:[验证文件](https://download.csdn.net/download/qq_38215042/13684473)
  • 6:功能流程讲解
    • 6.1:准本工作
    • 6.2:设计一个死循环
    • 6.3:使用 switch…case 语句
    • 6.4:书写Create()方法
    • 6.5:书写AddItem()方法
    • 6.6:书写SearchItem()方法
    • 6.7:书写RemoveItem()方法
    • 6.8:书写Show()方法

这个是大学程序期末设计

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 hereConsole.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 herefor (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. 程序运行截图:省略

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

  1. 通讯录管理系统C++版本

    前言:小刘之前用C++写了一个通讯录管理系统具体描述如下: 系统功能说明 系统功能说明: 初始化功能后,根据命令指令提示操作相应的功能. 1.导入初始数据 根据模板文件,将模板文件的数据导入到系统中 ...

  2. 通讯录管理系统(c语言版本)

    通讯录管理系统 (c语言版本) 一:通讯录基本功能 二:实现代码分析 1:建立文件 2:test.c test.c完整代码 3:contact.c contact.c完整代码 3:contact.h ...

  3. 基于C++实现(控制台+界面)通讯录管理系统【100010012】

    个人通讯录管理系统 问题描述: 主要内容: 个人通讯录是记录了同学(包含一起上学的学校名称).同事(包含共事的单位名称).朋友(包含认识的地点).亲戚(包含称呼)等与本人有关人员的数据集. 具体要求: ...

  4. 链表实现c语言通讯录管理系统,C++链表实现通讯录管理系统

    用数据结构里面线性结构的链表实现,供大家参考,具体内容如下 文件操作未写 有登录操作,复制源码需要更改登录模块的密码文件存放位置 使用VS2017编译器需要保留开头:#define _CRT_SECU ...

  5. 基于Linux中的通讯录管理系统(C语言+双向循环链表+MySQL)

    文章目录 系统功能实现 相关软件前提 部分重要的功能代码 Makefile menu.c MySQL API函数使用 C语言连接MySQL: 调用SQL命令 双向循环列表功能 效果实现 这个通讯录管理 ...

  6. 基于C++和QT实现的个人通讯录管理系统

    资源下载地址:https://download.csdn.net/download/sheziqiong/85722043 资源下载地址:https://download.csdn.net/downl ...

  7. 在qt实现手机通讯录系统_通讯录管理系统的设计与实现(QT,SQlite)

    通讯录管理系统的设计与实现(QT,SQlite)(任务书,外文翻译,毕业论文15000字,程序代码,数据库,答辩PPT) 摘 要 现今社会随着通讯以及交通的发展,人与人之间的联系越来越多,越来越紧密, ...

  8. 基于javaweb的校园班级同学通讯录管理系统(java+ssm+html+jsp+mysql)

    基于javaweb的校园班级同学通讯录管理系统(java+ssm+html+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/my ...

  9. 通讯录管理系统C++版

    用c++编写的基础版本,很好理解. 原创不易,禁止抄袭,转载请注明出处: 功能:编写一个通讯录系统包含手机通讯录和手机卡通讯录,实现对通讯录的添加.修改.删除.浏览.查找.以及通讯录的清空. 总体描述 ...

  10. JAVA趣味课程:手机通讯录管理系统(连接数据库管理信息)

    今天课堂上正好讲到JAVA连接jdbc管理sqlite数据库的操作,讲完他的基本用法之后,就又把之前的手机通讯录管理系统掏出来,改装完成数据库版本的增删改查等存取工作.那么下面开始需求分析以及逻辑编码 ...

最新文章

  1. 数据格式设置表达式 ZT
  2. 微分算子为什么也是空间滤波器
  3. 导出目录结构_Selenium Webdriver 3.X源码分析之核心目录结构
  4. ASP.NET的MVC中使用Session做身份验证(附代码下载)
  5. matplotlib绘制箭头
  6. github 视觉测量_计算机视觉资源推荐:多人实时关键点(脸、手、足)检测库...
  7. mysql 赋权笔记
  8. 最短路dijkstra算法详解_图论系列开始填坑--Dijkstra,单源最短路
  9. K8s:调用Java接口创建容器
  10. 数据挖掘十大经典算法(包括各自优缺点 / 适用数据场景)
  11. couchbase java 手册_Couchbase之环境搭建与基于Java的测试
  12. rust 案例_深入浅出rust.pdf 高清版
  13. 腾讯和360之争所折射出的下作
  14. 既然android service是运行在主线程中的,那service还有什么用?
  15. matlab中plot函数画线时 颜色和类型
  16. Innovus零基础lab学习全面复盘总
  17. android 全屏倒计时,全屏计时器app
  18. mysql 5.7修改密码
  19. JAVA WEB整合开发王者归来 -- 读书笔记 by CZF 完整版
  20. 科普--电脑显示的硬盘容量为什么比标称的要小?

热门文章

  1. 【math】 向量运算:叉乘
  2. flash动画短片制作常用表现方法与技巧(精华)
  3. 备用计算机机房管理制度,计算机机房管理制度
  4. 如何计算机房负载,机房UPS电源实际负载容量与负载量是怎么计算的?
  5. 搅拌反应釜cad图纸_搅拌式反应釜设计(三维SW)【全套含有CAD图纸三维建模】...
  6. 如何建设数据中台:精益数据创新体系
  7. win 7计算机图标变了,Win7美化攻略:替换imageres.dll,图标全变样
  8. 病毒conime.exe、mmlucj.exe、severe.exe 查杀办法
  9. android消息提示框大小,android Toast設置彈框大小
  10. 汇编 十六进制转二进制