IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 期末作业通讯录C语言链表 附报告 -> 正文阅读

[C++知识库]期末作业通讯录C语言链表 附报告

又要到期末了,想起来大一还写过这个东西
有缘搜到的先给大家拜个早年
在这里插入图片描述
有一首歌超级好听,最近一直单曲循环
在这里插入图片描述
还有卷卷 http://music.163.com/song?id=1888864266&userid=2051640029

还有一个歌手 气质太好了 Isaac Gracie

莫文蔚和郭一凡合唱的一首歌 http://music.163.com/song?id=1492319441&userid=2051640029

还有还有许嵩 乌鸦

http://music.163.com/song?id=1885118980&userid=2051640029听到陈红鲤的声音总会想到高三英语老师(;へ:) 清哥唱歌真的好听啊

咳咳 说正事

报告链接

代码

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>

//函数声明 
void add(struct node *head);//添加新联系人 
void show(struct node *head);//展示所有联系人名单 
void del(struct node *head);//删除联系人 
void find(struct node *head);//查找联系人 
void change(struct node *head);//更改联系人信息 
void save(struct node *head);//将信息保存到文件里 
void clear();//清屏
void notice();//注意事项 

//创建结构体 
struct node
{
   	char name[20],tel[20],home[30]; //数据域 
	struct node *next;//指针域 
};

//创建一个指针域为空的结点 
struct node *creat()
{
     struct node *p;
     p=(struct node *)malloc(sizeof(struct node));
     p->next=NULL;
     return p;
}

int main()
{	
    struct node *head=creat();//创建一个头结点,作为链表的入口
    int i;     //菜单选择变量 
    while(1)
    {
        printf("\t\t    欢迎使用通讯录管理系统\n");
        printf("\t****************************************\n"); 
		printf("\t1.使用前注意事项"); 
        printf("\t2.添加新联系人\n");
        printf("\t3.删除联系人        ");
        printf("\t4.查找联系人\n");
        printf("\t5.更改联系人信息");
        printf("\t6.展示所有联系人名单\n");
        printf("\t7.保存到文件");
       	printf("\t\t0.退出 \n");
        printf("\t****************************************\n");
        printf("请输入你需要的操作数:");
        scanf("%d",&i);
        if(i==0){
			break;        	
		} 
        switch(i)
        {
			case 1:notice() ;break;
            case 2:add(head);break; 
			case 3:del(head);break;
			case 4:find(head);break;
			case 5:change(head);break; 
            case 6:show(head);break;
            case 7:save(head);break;
            default:printf("输入错误,请重新输入\n");break;
        }
        clear();
    }
    return 0;
}

//注意事项 
void notice(){
	printf("___________________________________________________________________________\n");
	printf("\t 文件名 通讯录.txt 保存在c盘\t\n");
	printf("\t 每条信息之间请用空格隔开 例如:张三  12345678  xx小区 \n");
	printf("\t 第二次打开程序输入信息后 前一次生成文件的内容会被覆盖 \n");
	printf("___________________________________________________________________________\n");
} 

//采取尾插法创建链表 
void add(struct node *head)
{
    int n;                    
    struct node *p,*q,*temp=head;
    while(temp->next!=NULL)   //通过循环是找到尾结点
        temp=temp->next;
    q=temp;           //此时temp和q就是尾结点  但是相当于插入的数是头结点  
    n=1;
    while(n!=0)
    {	//尾插法操作 
		printf("姓名    电话     住址\n");
        p=(struct node *)malloc(sizeof(struct node));//申请新空间
        scanf("%s%s%s",p->name,p->tel,p->home);             
        q->next=p;       //新节点插入到q的后面    
        q=p;            //q指向新的尾节点 
		p->next=NULL; 
		printf("输入0退出添加 否则按任意键继续: ");  
		scanf("%d",&n);
    }
}

//删除联系人
void del(struct node *head)
{
    
   	char i[20];
   	printf("请输入要删除联系人的姓名/电话号/住址:\n"); 
   	scanf("%s",i);
	node *p,*q;
	p=head->next;
	q=head;
	while (p!=NULL){   
	// 删除操作:q始终为p的前一个结点 当p的数据域与i匹配时,那么就要把p删掉(q的指针域指向p的指针域再把p释放) 
		if(strcmp(p->name,i)==0||strcmp(p->tel,i)==0||strcmp(p->home,i)==0){  //i与姓名/电话/住址任何一个匹配 
			q->next=p->next;   
			free (p);       //释放p 
			printf("删除成功\n"); 
			return;	
		}
		q=p;
		p=p->next;
	}          
	printf("无此人的信息\n");   //p遍历到最后都没有发现与i匹配的 代表没有此人 
} 

//查找函数 
void find(struct node *head)
{
    struct node *p;
    p=head;
    char i[20];
    printf("请输入你要查找联系人的姓名/住址/电话: ");
    scanf("%s",i);
   	while(p!=NULL){
	   	if(strcmp(p->name,i)==0||strcmp(p->tel,i)==0||strcmp(p->home,i)==0)
	   	{
			printf("姓名    电话     住址\n");
	   	    printf("%s  %s  %s\n",p->name,p->tel,p->home);
	   	    return;
	   	 }
		p=p->next;
   } 
   	printf("没有该联系人信息\n");
}

//修改函数 
void change(struct node *head){
	struct node *p=head;char i[20];	
	printf("输入要修改的人的信息 姓名/电话/住址任选一\n");
	scanf("%s",i);
	while(p!=NULL){
		if(strcmp(p->name,i)==0||strcmp(p->tel,i)==0||strcmp(p->home,i)==0)
		  {
		  	printf("输入要修改的信息 \n姓名    电话   住址\n");
		   	scanf("%s%s%s",p->name,p->tel,p->home);
		   	printf("修改成功\n") ;
		   	return ;
		}
		p=p->next;
	}
	printf("没有该联系人信息\n");
}

//显示函数 
void show(struct node *head)
{
    int i=0;    //计数 控制换行 
    struct node *p;
    p=head->next;
    printf("姓名     电话      地址\n");
    while(p!=NULL)
    {	
		i++; 
        printf("%s  %s  %s\n",p->name,p->tel,p->home);
        p=p->next;
        if(i%10==0){
        	printf("每10行换一次屏 按任意键换屏");
		    getch();
		    system("cls");
		}
		
    }
	printf("已经全部显示完毕\n");
}

//保存到文件 
void save(struct node *head)  
{ 
	FILE *fp;
	fp=fopen("C:/通讯录.txt","wb"); 
	head=head->next;
	while(head!=NULL)
	{ 		 
		fprintf(fp, "   %s    %s    %s\r\n", head->name ,head->tel,head->home);
		head=head->next;
	}
	 printf("保存成功\n") ; 
	 fclose(fp);
 }
 
//按任意键清屏 
void clear()
{
    printf("\n按任意键返回菜单");
    getch();
    system("cls");
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 11:51:13  更:2021-12-07 11:52:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:41:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码