做完c语言通讯录系统后的小结,c语言通讯录管理系统的总结

c语言通讯录管理系统的总结

c语言通讯录管理系统的总结

c语言课设管理系统总结

完成情况

防暴力输入

密码加密输入并删除

管理员和用户端两个端

管理员对用户的账号删除

注册用户

用户的账户名及密码修改

用户基本操作

18608638fe4697a5632dda90c9ddd362.png

管理员基本操作

cb3cd9d22d6e891b9be1340e383e7a61.png

存在的问题

管理员无法对用户的数据进行修改

未使用链表

由于给每一个用户都创建了一个文件,导致当用户过多时不好操作

一些写管理系统前的建议

在着手写代码之前一定先将思路理清楚,比如分为几个端,数据的如何存储,然后再按照数据存储的方式去写代码

对一些重复性较高的代码将其打包为函数,比如密码输入,界面等等你觉得重复率较高的的代码块,多用函数可以让你的代码看起来更加的简介易懂

先将一些与“整体性”关联不大的,但又经常遇到的函数写出来,界面,防暴力输入了等等,方便以后写的时候直接用、

下面是我的几个比较重要的代码块

密码输入函数

char* InputPassword()

{

char* password = (char*)malloc(20);

int c;

char c1;

int i = 0;

while (i < 6) {

while ((c = getch()) != '\r') {

if (c == 224) {

c1 = getch();

continue;

}

if (i < 20 && isprint(c)) {

password[i] = c;

i++;

putchar('*');

}

else if (i > 0 && c == '\b') {

i--;

putchar('\b');

putchar(' ');

putchar('\b');

}

}

password[i] = '\0';

}

return password;

}

这里由于password是用malloc分配的, 所以 使用这个函数时直接定义一个指针去接收函数返回值就可以啦

eg:

char * password = intputpassowrd();

判断选项函数

int judgeselect(int mix, int max) // min 和 max 为可选择的区间

{

char num[100]; //防止输入字符而导致程序崩溃

printf("请输入选项\n>");

fflush(stdin);

scanf("%s", num);

while (!inputjudge(num[0], mix, max) || num[1] != '\0') {

printf("输入有误!请重新输入\n>");

fflush(stdin);

scanf("%s", num);

}

return num[0] - '0';

}

顺便附上inputjudge

int inputjudge(char n, int min, int max) {

n -= '0';

if (n >= min && n <= max) {

return 1;

}

return 0;

}

这个是利用scanf返回值

int judgeselect(int min, int max) // min 和 max 为可选择的区间

{

int select;

printf("请输入选项\n>");

int n = scanf("%d", &select);

while(n == 0 || n < min || n > max){

printf("您的输入有误,请重新输入!\n");

fflush(stdin);

n = scanf("%d", &select);

}

return select;

}

c语言通讯录管理系统的总结相关教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

因特尔显卡自定义分辨率_电脑显示器分辨率超频教程:1080P超2K分辨率的方法...

我们玩过CPU超频、显卡超频、内存超频等&#xff0c;相信不少用户还没有尝试过显示器超频&#xff0c;其实在前段时间&#xff0c;装机之家为广大爱好者发布了一篇【电脑显示器刷新率怎么超频&#xff1f;电脑显示器提高屏幕刷新率超频教程】文章&#xff0c;我们将一款普通60H…

pyinstaller安装失败解决

1.看到直接输入pip install pyinstaller 似乎很简单 2.尝试结果失败 3.其实失败有很多原因&#xff0c;但是有一个自我感觉通用的办法&#xff1a; 使用管理员身份打开cmd 输入 python -m pip install --upgrade pip 输入 pip install pywin32 输入 pip install wheel 输入 pip…

android pdu 编码规则,[转载]PDU编码规则

目前&#xff0c;发送短消息常用Text和PDU(Protocol DataUnit&#xff0c;协议数据单元)模式。使用Text模式收发短信代码简单&#xff0c;实现起来十分容易&#xff0c;但最大的缺点是不能收发中文短信&#xff1b;而PDU模式不仅支持中文短信&#xff0c;也能发送英文短信。PDU…

Java 9示例–收集的工厂方法–创建不可修改的列表,集合和映射

大家好&#xff0c;这是我在该博客上发表的有关Java 9功能的第一篇文章&#xff0c;今天您将了解我最喜欢的功能“收集的工厂方法” &#xff0c;它是JEP 269的一部分。JEP代表JDK增强建议。 如果您曾经在Groovy或Kotlin工作过&#xff0c;那么您就会知道使用集合文字使用元素创…

郴州郴锦机器人_减税降费宣传走进郴州市民营企业高质量发展专题培训班

红网时刻郴州8月23日讯(通讯员 陈磊 记者 欧群军)“毫不动摇支持民营经济健康发展离不开税收政策的有力支持。近年来&#xff0c;特别是今年以来国家系列税收优惠政策的出台&#xff0c;为民营经济的发展注入了新的活力。”8月22日&#xff0c;郴州市税务局减税降费宣讲课堂走进…

FPGA(8)--频率计检测控制系统

文章目录一、设计要求1.整体控制系统设计要求2.频率计检测设计要求二、设计思路1.确定VHDL描述与原理图相结合完成设计2.确定状态情况3.数码管显示功能三、设计内容1. 频率检测部分VHDL描述2. 七段数码管显示部分VHDL描述3. 系统主控制部分VHDL描述4.将三个部分的VHDL描述分别都…

linux shm_open,c – 如何更改shm_open路径?

我目前正在ubunto上开发一个应用程序并调用shm_open,目前默认路径在/ var / run / shm内.但是我需要将其更改为/ tmp.只是尝试以下操作不起作用&#xff1a;fd shm_open(“/ tmp / test”,O_RDWR | O_CREAT,0777);任何人都可以建议吗&#xff1f;解决方法:从shm_open(3)的手册…

lda进行图片分类_LDA主题模型

今天来啃硬骨头了&#xff0c;说说LDA主题模型。本文言简意赅&#xff0c;没有太多的数学公式。学习也不要太多的陷入算法的细枝末节之中&#xff0c;学习复杂的事物&#xff0c;需要从整体去把握。先列出本文的讲解顺序。什么是LDA模型2. 函数与 Beta函数3.共轭先验分布4.二项…

FPGA(1)--VHDL--6选1数据选择器

一、实验目的 掌握用VHDL语句进行组合电路设计的方法&#xff0c;并熟悉程序的编译、调试与波形图的仿真。 二、实验内容 分别用VHDL的CASE语句及IF语句两种方法&#xff0c;设计6选1数据选择器。通过编译、仿真验证功能正确性。 三、实验设计 设计的依据&#xff1a;教材…

android+4.4+jni闪退,native2.1 安卓退到后台时,概率闪退

赞同来自:同样的&#xff0c;在这个时候&#xff0c;还出了另一个错误&#xff0c;详情见下面的log,这个问题&#xff0c;出现的情况就和上面的不同&#xff0c;从5.0 - 9.0 &#xff0c;level 22- level 28 &#xff0c;都在出这个错误&#xff0c;真的搞不太清楚是为什么&…

java 模板方法设计模式_Java中的模板方法设计模式

java 模板方法设计模式模板方法是一种行为设计模式 &#xff0c;用于创建方法存根并将某些实现步骤推迟到子类。 模板方法定义了执行算法的步骤&#xff0c;它可以提供默认实现&#xff0c;该实现对于所有或某些子类可能是通用的。 让我们通过一个例子来理解这种模式&#xff…

FPGA(2)--例化语句--1位全加器

文章目录一、实验目的二、实验内容三、实验设计四、实验结果及仿真一、实验目的 熟悉元件封装方法&#xff0c;掌握层次化电路设计方法&#xff1b;掌握VHDL例化语句的设计方法。 二、实验内容 1.用VHDL语言设计1位全加器&#xff0c;其中仅就半加器实体进行例化声明及端口映…

对mysql的总结与反思_一次DB故障引起的反思和MySQL Operator选型

前言在一次数据库故障后&#xff0c;我们发现业务库会根据业务的等级会划分多个 MySQL 实例&#xff0c;许多业务库会同时属于一个 MySQL 实例&#xff0c;当一个库引发问题后整个实例的状态是不可控的。从而导致这个实例上的所有业务不稳定甚至造成中断。故障反思微服务架构微…

android 三星 拍照,安卓里面拍照最好的三个品牌,OPPO华为三星怎么选

原标题&#xff1a;安卓里面拍照最好的三个品牌&#xff0c;OPPO华为三星怎么选几乎每一个节日都能被国内的商家抓住并且成功的策划为一次次的「购物节」&#xff0c;双十一、双十二等无一例外&#xff0c;3月7日这个从中国高校里衍生出来的「女生」节如今也成为了「女神节」。…

FPGA(3)--VHDL及原理图--4位全加器

文章目录一、实验目的二、实验内容三、实验设计五、实验思考与总结一、实验目的 掌握例化语句的使用方法&#xff0c;掌握使用程序文本和原理图结合方法设计电路&#xff0c;掌握利用包含算术操作符的重载函数的使用。 二、实验内容 首先用VHDL语言设计1位全加器&#xff0c…

Vertx编程风格:您的反应式Web Companion REST API解释了

Vertx提供了许多在轻量级环境中进行编程的选项&#xff0c;例如node.js。 但是&#xff0c;对于新用户来说&#xff0c;选择采用哪种方法来创建REST API几乎不会造成混淆。 在vertx中编程时可以采用不同的模型。 下面通过易于理解的图表对其进行说明。 PS – vertx编程的核心…

过去式加ed的发音_小学英语动词过去式归类总结

小学英语动词过去式归类总结  一、动词过去式的规则变化 1. 一般情况下&#xff0c;动词词尾加-ed 如&#xff1a;work ---worked, play---played, want----wanted, act----acted 2. 以不发音的 -e 结尾动词&#xff0c;动词词尾加 -d 把动词原形最后的e去掉&#xff0…

FPGA(4)--VHDL--4位D触发器

一、实验目的 掌握利用VHDL语言&#xff0c;进行基本时序元件的设计。 二、实验内容 利用VHDL语言设计含异步复位&#xff08;RST&#xff09;及使能端&#xff08;EN&#xff09;的4位D触发器&#xff0c;其中输入D及输出Q均为4位&#xff08;STD_LOGIC_VECTOR&#xff09;…

鸿蒙10 5G手机,继鸿蒙后麒麟V10问世 5G时代国产操作系统将起飞

(记者 陈洲)从工信部获悉&#xff0c;中国电子近日在广州发布了银河麒麟操作系统 V10。该系统打通了手机、平板、PC 等多个终端&#xff0c;可谓为5G时代量身定做。其独创的 kydroid 技术&#xff0c;可将安卓应用无缝迁移到国产平台上。银河麒麟V10是继华为鸿蒙OS后&#xff0…

模糊查询关键字不区分大小写_SQL简单查询

SQL书写规则&#xff1a;1)以英文分号结尾(;) eg. select 姓名,性别 from student&#xff1b;2)不区分关键字的大小写。就像Excel里面sum可以大写可以小写。同理&#xff0c;SQL中select不区分大小写。3)列名不能加单引号&#xff0c;列名中间不能有空格。4)所有符号都要是英文…