C++班级通讯录

C++实现班级通讯录管理系统

设计流程
本系统基于C++实现班级通讯录管理系统。功能包括增、删、查、改等。通讯录包括的个人信息有姓名、学号、性别、籍贯、政治面貌、手机号、QQ号、宿舍等。主要用到了指针、结构体、遍历链表、文件读取等知识点。

优点
1 . 此系统含有欢迎使用的页面,之后进入功能页面。
2 . 功能设计根据实际情况设计能够最大限度满足现实需求。
3 . 界面简洁易懂,操作简单。

页面效果
在这里插入图片描述
完整代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
typedef struct student     //定义结构体
{char name[20];    //姓名char num[15];      //学号char sex[10];     //性别char from[20];    //籍贯char political[10];    //政治面貌char phone[15];      //手机号char QQ[15];         //QQ号char dorm[10];     //宿舍struct student *next;  //结构体指针
}stu;
stu *head;void print()    //主菜单
{system("cls");printf("\n\n\n");printf("      ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");printf("      ***********************************************************\n");printf("      \t\t\t班级通讯录管理系统\n");printf("\n");printf("      \t\t1. 输入数据");printf("\t\t2. 显示数据\n");printf("      \t\t3. 插入数据");printf("\t\t4. 删除数据\n");printf("      \t\t5. 查看数据");printf("\t\t6. 修改数据\n");printf("      \t\t7. 保存数据");printf("\t\t8. 返回主菜单\n");printf("      ***********************************************************\n");printf("      ~~~~~退~~~~~~~~~~出~~~~~~~~~~请~~~~~~~~~~按~~~~~~~~~~9~~~~~\n");printf("      -----------------------------------------------------------\n\n");
}void input(stu *p1)    //输入相关数据
{printf("姓名:");scanf("%s",&p1->name);printf("学号:");scanf("%s",&p1->num);printf("性别:");scanf("%s",&p1->sex);printf("籍贯:");scanf("%s",&p1->from);printf("政治面貌:");scanf("%s",&p1->political);printf("手机号:");scanf("%s",&p1->phone);printf("QQ号:");scanf("%s",&p1->QQ);printf("宿舍:");scanf("%s",&p1->dorm);
}stu * inputdata()     //数据输入的函数
{stu *p1,*p2;int i=1;p1=(stu *)malloc(sizeof(stu));if(p1!=NULL){head=p1;printf("\n\t\t\t☆☆☆输入数据☆☆☆\n");printf("------------------------------------------------------------------\n");printf("在姓名处输入“ok”代表输入数据结束\n");while(i){printf("姓名:");scanf("%s",&p1->name);if(strcmp(p1->name,"ok")==0){printf("\n输入完毕!\n");printf("========================================================================\n");i=0;p2->next=NULL;free(p1);p1=p2;}else{printf("学号:");scanf("%s",&p1->num);printf("性别:");scanf("%s",&p1->sex);printf("籍贯:");scanf("%s",&p1->from);printf("政治面貌:");scanf("%s",&p1->political);printf("手机号:");scanf("%s",&p1->phone);printf("QQ号:");scanf("%s",&p1->QQ);printf("宿舍:");scanf("%s",&p1->dorm);printf("=====================================\n");p2=p1;p1=(stu *)malloc(sizeof(stu));if(p1!=NULL){p2->next=p1;}}}return(p1->next);}
}stu * lookdata(stu *p1)     //查看数据的函数
{printf("\n\t\t\t☆☆☆显示数据☆☆☆\n");printf("----------------------------------------------------------------------\n");while(p1!=NULL){printf("姓名:%s\n",p1->name);printf("学号:%s\t",p1->num);printf("性别:%s\t",p1->sex);printf("籍贯:%s\t",p1->from);printf("政治面貌:%s\t",p1->political);printf("手机号:%s\t",p1->phone);printf("QQ号:%s\t",p1->QQ);printf("宿舍:%s\n",p1->dorm);printf("======================================================================\n");p1=p1->next;}return p1;
}void insert()      //插入数据
{int i;char named[20];stu *p1,*p2,*p3;p1=head;p3=(stu *)malloc(sizeof(stu));p3->next=NULL;printf("\n\t\t\t☆☆☆插入数据☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("请输入插入者的资料:\n");input(p3);printf("\n插入选项\n");printf("1.首位置插入\t2.尾位置插入\t3.前插\n");printf("请输入你的选择:");scanf("%d",&i);switch(i){case 1:p3->next=p1;head=p3;break;case 2:while(p1->next!=NULL){p2=p1;p1=p1->next;}p1->next=p3;break;case 3:printf("请输入姓名(前插):");scanf("%s",named);while(strcmp(named,p1->name)!=0){p2=p1;p1=p1->next;}p2->next=p3;p3->next=p1;break;}printf("插入成功!\n");printf("======================================================================\n");return;
}void deleted()          //删除数据
{stu *p1,*p2;char Name[20];  //想要删除的人的姓名printf("\n\t\t\t☆☆☆删除数据☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("请输入要删除的姓名:");scanf("%s",Name);p1=head;if(head==NULL){printf("内存没有存储任何数据!\n");printf("======================================================================\n");return;}if(strcmp(Name,p1->name)==0){head=p1->next;printf("删除成功!\n");printf("======================================================================\n");return;}while(p1!=NULL&&(strcmp(Name,p1->name)!=0)){p2=p1;p1=p1->next;}if(p1==NULL){printf("此人不存在!\n");printf("======================================================================\n");return;}if(p1->next!=NULL){p1=p1->next;p2->next=p1;printf("删除成功!\n");printf("======================================================================\n");return;}else{p2->next=NULL;printf("删除成功!\n");printf("======================================================================\n");return;}
}find(stu *p2)        //通过姓名查找查看数据的函数
{char name[20];int b=0;printf("\n\t\t\t☆☆☆查看数据☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("请输入您想查找人的姓名:");scanf("%s",name);while(p2!=NULL){if(strcmp(name,p2->name)==0){printf("你要找到的数据\n");printf("姓名:%s\n",p2->name);printf("学号:%s\t",p2->num);printf("性别:%s\t",p2->sex);printf("籍贯:%s\t",p2->from);printf("政治面貌:%s\t",p2->political);printf("手机号:%s\t",p2->phone);printf("QQ号:%s\t",p2->QQ);printf("宿舍:%s\n",p2->dorm);printf("======================================================================\n");b=1;}p2=p2->next;}if(b==0){printf("\n您要查找的人不存在!\n");}
}update(stu *p2)   //通过姓名查找修改数据
{char name[20];int b=0,i;printf("\n\t\t\t☆☆☆修改数据☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("请输入将要修改人的姓名:");scanf("%s",name);while(p2!=NULL){if(strcmp(name,p2->name)==0){printf("该同学的基本信息\n");printf("姓名:%s\n",p2->name);printf("学号:%s\t",p2->num);printf("性别:%s\t",p2->sex);printf("籍贯:%s\t",p2->from);printf("政治面貌:%s\t",p2->political);printf("手机号:%s\t",p2->phone);printf("QQ号:%s\t",p2->QQ);printf("宿舍:%s\n",p2->dorm);printf("\n请选择要修改的信息\n");printf("\t1.姓名\t2.学号\t3.性别\t4.籍贯\n\t5.政治面貌\t6.手机号\t7.QQ\t8.宿舍\n");printf("\n您的选择是(1~8):");scanf("%d",&i);printf("请输入修改之后的内容\n");switch(i){case 1:printf("姓名:");scanf("%s",&p2->name);break;case 2:printf("学号:");scanf("%s",&p2->num);break;case 3:printf("性别:");scanf("%s",&p2->sex);break;case 4:printf("籍贯:");scanf("%s",&p2->from);break;case 5:printf("政治面貌:");scanf("%s",&p2->political);break;case 6:printf("手机号:");scanf("%s",&p2->phone);break;case 7:printf("QQ:");scanf("%s",&p2->QQ);break;case 8:printf("宿舍:");scanf("%d",&p2->dorm);break;}printf("\n修改成功!\n");printf("=========================================================================\n");b=1;}p2=p2->next;}if(b==0){printf("没有找到该人的资料!\n");}
}save(stu *p2)   //保存数据
{FILE *fp;char file[15];printf("\n\t\t\t☆☆☆保存数据☆☆☆\n");printf("----------------------------------------------------------------------\n");printf("输入文件名:");scanf("%s",file);if((fp=fopen(file,"w"))==NULL){printf("cannot open this file\n");exit(0);}fprintf(fp,"姓名\t学号\t性别\t籍贯\t政治面貌\t手机号\tQQ号\t宿舍\n");while(p2!=NULL){fprintf(fp,"%s\t",p2->name);fprintf(fp,"%s\t",p2->num);fprintf(fp,"%s\t",p2->sex);fprintf(fp,"%s\t",p2->from);fprintf(fp,"%s\t",p2->political);fprintf(fp,"%s\t",p2->phone);fprintf(fp,"%s\t",p2->QQ);fprintf(fp,"%s\n",p2->dorm);p2=p2->next;}printf("\n保存成功!\n");printf("======================================================================\n");fclose(fp);
}void screen()  
{int i;char s[251]={"欢迎使用班级通讯录管理系统,\n\n\t\t\t本系统用于通讯录管理----排序,打印\n\n\n\t\tWelcome to use class address book\n\n\t\t management system,sorting,printing"};printf("\n================================================================================\n");printf("\n\n\n\t\t\t");for(i=0;s[i]!=NULL;i++){Sleep(30);printf("%c",s[i]);}printf("\n\n\n\n\n\n\n\n\t\t ~ Hi~ o(* ̄▽ ̄*)ブ~ ~ ~祝您使用愉快~ ~\n");printf("================================================================================\n");}int main(void)
{int i;system("color 01");screen();Sleep(3000);print();while(1){printf("请输入你的选择(1~9):");loop:scanf("%d",&i);if(i<1||i>9){printf("输入有误,请在1~9中进行选择:");goto loop;}switch(i){case 1:inputdata();break;case 2:lookdata(head);break;case 3:insert();break;case 4:deleted();break;case 5:find(head);break;case 6:update(head);break;case 7:save(head);break;case 8:print();break;case 9:exit(1);break;}}
}

在这里插入图片描述

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

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

相关文章

两万字教会你解析库之Beautiful Soup

目录 1.简介 2.准备工作 3.解析器 4.基本用法 5.节点选择器 5.1选择元素 5.2提取信息 5.3嵌套选择 5.4关联选择 6.方法选择器 7. css 选择器 7.1 嵌套选择 7.2 获取属性 7.3 获取文本 总结 1.简介 简单来说&#xff0c;Beautiful Soup就是Python的一个HTML或XM…

C语言实现随机抽取纸牌

程序设计要求 本程序负责发一副标准纸牌&#xff0c;每张标准纸牌都有一种花色&#xff08;梅花、方块、黑桃、红桃&#xff09;和一个等级&#xff08;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6…K,A&#xff09;。程序需要用户指明手机有几张牌。 程序设计流…

R语言基础入门(8)之日期时间

目录 1.日期和日期时间类型 2.从字符串生成日期数据 3.日期显示格式 4.访问日期时间的组成值 5.日期舍入计算 6.日期计算 6.1 时间长度 6.2 时间周期 6.3 时间区间 7.基本 R 软件的日期功能 7.1 生成日期和日期时间型数据 7.2 取出日期时间的组成值 7.3 日期计算 练…

C语言点名器

设计流程 1 . 使用求模符号“%”求模数控制随机数产生范围。 2 . 使用rand&#xff08;&#xff09;计算出一个随机数。 3 . 使用函数time()来获取时间。 4 . 用二维字符数组储存名字&#xff0c;产生范围类的随机数在用下标调用数组里面的名字。 效果展示 完整代码 #inclu…

R语言基础入门(9)之因子类型

目录 1.因子 2.table() 函数 3.tapply() 函数 4.forcats 包的因子函数 练习 1.因子 R 中用因子代表数据中分类变量, 如性别、省份、职业。有序因子代表有序量度&#xff0c;如打分结果&#xff0c;疾病严重程度等。用 factor() 函数把字符型向量转换成因子&#xff0c;如x…

2万字带你攻略掉Selenium

目录 1. 准备工作 1.1 安装selenium库 1.2 安装浏览器驱动 2. 基本用法 2.1 初始化浏览器对象 2.2 访问页面 2.3 设置浏览器大小 2.4 刷新页面 2.5 前进后退 3. 获取页面基础属性 4. 定位页面元素 4.1 id定位 4.2 name定位 4.3 class定位 4.4 tag定位 4.5 lin…

IDEA里的web.xml页面的Servlet名称报错下方出现红色下划线

错误显示 对于上述错误是因为只有新建的Servlet名称但是并没为为这个Servlet指定访问地址的路径和映射&#xff0c;我们只需要添加访问地址的路径和映射就可以解决这个问题了。 修改之后的代码 <?xml version"1.0" encoding"UTF-8"?> <web-ap…

Python之Hello World

python实现Hello World项目 在项目上点击右键New–>File,然后输入文件名Hello World 一个Hello World文件创建完成 编写相应的代码 在空白的地方右击选择Run"Hello World" 程序运行成功&#xff0c;输出Hello World

knn(k近邻算法)——python

目录 1. 基本定义 2. 算法原理 2.1 算法优缺点 2.2 算法参数 2.3 变种 3.算法中的距离公式 4.案例实现 4.1 导入相关库 4.2 读取数据 4.3 读取变量名 4.4 定义X,Y数据 4.5 分离训练集和测试集 4.6 计算欧式距离 4.7 可视化距离矩阵 4.8 预测样本 4.9 查看正确…

C语言中的文件是什么?

我们对文件的概念已经非常熟悉了&#xff0c;比如常见的 Word 文档、txt 文件、源文件等。文件是数据源的一种&#xff0c;最主要的作用是保存数据。 在操作系统中&#xff0c;为了统一对各种硬件的操作&#xff0c;简化接口&#xff0c;不同的硬件设备也都被看成一个文件。对…

knn(k近邻算法)——matlab

目录 1. 基本定义 2. 算法原理 2.1 算法优缺点 2.2 算法参数 2.3 变种 3.算法中的距离公式 4.案例实现 4.1 读取数据 4.2 分离训练集和测试集 4.3 归一化处理 4.4 计算欧氏距离 4.5 排序和输出测试结果 4.6 计算准确率 总代码 1. 基本定义 k最近邻(k-Nearest N…

C语言打开文件详解

C语言中操作文件之前必须先打开文件&#xff1b;所谓“打开文件”&#xff0c;就是让程序和文件建立连接的过程。 打开文件之后&#xff0c;程序可以得到文件的相关信息&#xff0c;例如大小、类型、权限、创建者、更新时间等。在后续读写文件的过程中&#xff0c;程序还可以记…

python turtle虎年来拜年了

1.画个虎 # codingutf-8 from turtle import * import timeCOLOR #B2814Ddef set_start(x, y, w, cCOLOR):penup()setx(x)sety(y)setheading(towards(0, 0))width(w)pencolor(c)pendown()speed(0)def left_rotate(time, angle, length):for i in range(time):left(angle)forwa…

TOPSIS法 —— matlab

目录 1.TOPSIS法介绍 2. 计算步骤 &#xff08;1&#xff09;数据标准化 &#xff08;2&#xff09;得到加权后的矩阵 &#xff08;3&#xff09;确定正理想解和负理想解 &#xff08;4&#xff09;计算各方案到正&#xff08;负&#xff09;理想解的距离 &#xff08;…

TOPSIS法 —— python

目录 1.TOPSIS法介绍 2. 计算步骤 &#xff08;1&#xff09;数据标准化 &#xff08;2&#xff09;得到加权后的矩阵 &#xff08;3&#xff09;确定正理想解和负理想解 &#xff08;4&#xff09;计算各方案到正&#xff08;负&#xff09;理想解的距离 &#xff08;…

C语言随机读写文件

实现随机读写的关键是要按要求移动位置指针&#xff0c;这称为文件的定位。 文件定位函数rewind和fseek 移动文件内部位置指针的函数主要有两个&#xff0c;即 rewind() 和 fseek()。 rewind() 用来将位置指针移动到文件开头&#xff0c;前面已经多次使用过&#xff0c;它的…

mysql-installer安装教程(详细图文)

目录 1.安装 2.配置系统环境变量 3.配置初始化my.ini文件 4.MySQL彻底删除 5.Navicat 安装 1.安装 先去官网下载需要的msi&#xff0c;在这放出官网下载地址下载地址 这里我具体以8.0.28 为安装例子&#xff0c;除了最新版安装界面有些变动以往的都是差不多的。 过去的版本…

Java三种随机数生成方法

java的三种随机数生成方式 随机数的产生在一些代码中很常用&#xff0c;也是我们必须要掌握的。而java中产生随机数的方法主要有三种&#xff1a;     第一种&#xff1a;new Random()     第二种&#xff1a;Math.random()     第三种&#xff1a;currentTimeMil…

Python MySQL入门连接

目录 基本环境准备 navicat的傻瓜使用方式 python连接 mysql安装教程&#xff1a;传送门 基本环境准备 WINR 输入cmd回车打开cmd&#xff0c;登录mysql: mysql -h localhost -u root -p然后输入密码回车即可。 创建用户名为testuser1&#xff1a; CREATE USER testuser1…

JDBC连接sql server数据库

IDEA使用JDBC连接Sqlserver数据库 在IDEA的项目中添加对应数据库的jar包 在项目中创建util包和DBUtil类用来存放数据库连接的java代码。 完整代码 package com.hnpi.util;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; …