当前位置: 首页 > wzjs >正文

网站建设费计入哪个科目老域名购买

网站建设费计入哪个科目,老域名购买,做水晶接单在哪个网站接,永康住房和城乡建设局网站1. 通讯录的功能 1. contach.c 1. 初始化通讯录 2. 添加通讯录数据 3. 删除通讯录数据 4. 展示通讯录数据 5. 查找通讯录数据 6. 修改通讯录数据 7. 销毁通讯录数据 2. SList.c 1. 尾插 2. 删除指定节点 3. 销毁链表 2. 通讯录的定义 1. contach.h 创建一个结构体&#xff…

1.  通讯录的功能

1. contach.c

1. 初始化通讯录

2. 添加通讯录数据

3. 删除通讯录数据

4. 展示通讯录数据

5. 查找通讯录数据

6. 修改通讯录数据

7. 销毁通讯录数据

2. SList.c

1. 尾插

2. 删除指定节点

3. 销毁链表

2. 通讯录的定义

1. contach.h

创建一个结构体,存储联系人数据

//前置声明
typedef struct SListNode contact;//用户数据
typedef struct PersonInfo
{char name[NAME_MAX];char sex[SEX_MAX];int age;char tel[TEL_MAX];char addr[ADDR_MAX];
}PeoInfo;

2. SList.h

创建一个结构体包含两个成员,一个成员存储联系人数据,一个成员存储下一个结点的地址(当下一个节点为空时保存的地址为NULL)

typedef PeoInfo SLTDataType;
struct SListNode
{SLTDataType data;struct SListNode* next;
};

3. 通讯录功能实现

1. contach.c

 查找通讯录中名字相同的联系人

contact* FindName(contact* con, char name[]) {assert(con);while (con) {if (strcmp(con->data.name, name) == 0) {return con;}con = con->next;}return NULL;
}

1. 初始化通讯录

//将contact.text文件中的数据导入到通讯录链表中
void LoadContact(contact** con) {FILE* pf = fopen("contact.txt", "rb");//打开一个存放通讯录的二进制文件,只读if (pf == NULL) {perror("文件打开失败");return;}PeoInfo ps;//循环读取文件数据while (fread(&ps, sizeof(ps), 1, pf)) {SLTPushBack(con, ps);}printf("历史数据导入通讯录成功\n");fclose(pf);//关闭文件
}
//初始化通讯录
void InitContact(contact** con) {LoadContact(con);printf("通讯录初始化完成\n");
}

2. 添加通讯录数据

void AddContact(contact** con) {PeoInfo ps;printf("请输入姓名:");scanf("%s", ps.name);printf("请输入性别:");scanf("%s", ps.sex);printf("请输入年龄:");scanf("%d", &ps.age);printf("请输入电话:");scanf("%s", ps.tel);printf("请输入地址:");scanf("%s", ps.addr);SLTPushBack(con, ps);//因为SLTPushBack的第一个参数是 contact** con
}

3. 删除通讯录数据

void DelContact(contact** con) {char name[NAME_MAX];printf("输入要删除的姓名:");scanf("%s", name);contact* pos = FindName(*con, name);if (pos) {SLTErase(con, pos);printf("删除成功\n");}else {printf("该联系人不存在,无法删除\n");}
}

4. 展示通讯录数据

void ShowContact(contact* con) {while (con) {printf("姓名:%s  性别:%s  年龄:%d  电话:%s  地址:%s\n",con->data.name,con->data.sex,con->data.age,con->data.tel,con->data.addr);con = con->next;}
}

5. 查找通讯录数据

void FindContact(contact* con) {char name[NAME_MAX];printf("输入要查找的姓名:");scanf("%s", name);contact* pos=FindName(con, name);if (pos) {printf("找到了\n");printf("姓名:%s  性别:%s  年龄:%d  电话:%s  地址:%s\n",pos->data.name,pos->data.sex,pos->data.age,pos->data.tel,pos->data.addr);}else {printf("该联系人不存在\n");}
}

6. 修改通讯录数据

void ModifyContact(contact** con) {char name[NAME_MAX];printf("请输入要修改的姓名:");scanf("%s", name);contact* pos = FindName(*con, name);if (pos) {printf("请输入修改的姓名:");scanf("%s", pos->data.name);printf("请输入修改的性别:");scanf("%s", pos->data.sex);printf("请输入修改的年龄:");scanf("%d", &pos->data.age);printf("请输入修改的电话:");scanf("%s", pos->data.tel);printf("请输入修改的地址:");scanf("%s", pos->data.addr);}else {printf("该联系人不存在,无法修改\n");}
}

7. 销毁通讯录数据

void SaveContact(contact* con) {assert(con);FILE* pf = fopen("contact.txt", "wb");if (pf == NULL) {perror("fopen fail\n");return;}while (con) {fwrite(&(con->data), sizeof(con->data), 1, pf);con = con->next;}printf("通讯录保存成功\n");fclose(pf);
}
//销毁通讯录数据
void DestroyContact(contact** con) {SaveContact(*con);//销毁通讯录数据SListDesTroy(con);
}

2. SList.c

创建节点

SLTNode* BuyNode(SLTDataType x) {SLTNode* node = (SLTNode*)malloc(sizeof(SLTNode));//如果创建失败if (node == NULL) {perror("malloc fail!\n");exit(1);}node->data = x;node->next = NULL;return node;//返回该节点
}

1. 尾插

//尾插
void SLTPushBack(SLTNode** pphead, SLTDataType x) {assert(pphead);//pphead不为空SLTNode* node = BuyNode(x);//创建新节点//如果链表为空if (*pphead == NULL) {*pphead = node;//新节点为头节点return;}//找尾SLTNode* cur = *pphead;while (cur->next) {cur = cur->next;}cur->next = node;//将新节点进行尾插
}

2. 删除指定节点

 //删除pos
void SLTErase(SLTNode** pphead, SLTNode* pos) {assert(pphead);assert(pos);//检测pos节点不为空,如果pos节点不为空,那么该链表也不为空//如果pos==头节点if (*pphead == pos) {//        SLTNode *del = *pphead;//        *pphead = (*pphead)->next;//        free(del);//        del = NULL;SLTPopFront(pphead);//头删return;}//找pos的前一个节点SLTNode* prev = *pphead;while (prev->next) {if (prev->next == pos) {break;}prev = prev->next;}prev->next = pos->next;//删除pos节点free(pos);//释放pos节点//    pos = NULL;//没有存在的必要
}

3. 销毁链表

void SListDesTroy(SLTNode** pphead) {SLTNode* pointer = NULL;while (*pphead) {pointer = *pphead;*pphead = (*pphead)->next;free(pointer);pointer = NULL;}
}

4. 完整代码展示

1. contach.h

#pragma once
#define NAME_MAX 100
#define SEX_MAX 4
#define TEL_MAX 11
#define ADDR_MAX 100//前置声明
typedef struct SListNode contact;//用户数据
typedef struct PersonInfo
{char name[NAME_MAX];char sex[SEX_MAX];int age;char tel[TEL_MAX];char addr[ADDR_MAX];
}PeoInfo;//初始化通讯录
void InitContact(contact** con);
//添加通讯录数据
void AddContact(contact** con);
//删除通讯录数据
void DelContact(contact** con);
//展示通讯录数据
void ShowContact(contact* con);
//查找通讯录数据
void FindContact(contact* con);
//修改通讯录数据
void ModifyContact(contact** con);
//销毁通讯录数据
void DestroyContact(contact** con);

2. SList.h

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include "contach.h"
typedef PeoInfo SLTDataType;
struct SListNode
{SLTDataType data;struct SListNode* next;
};
typedef struct SListNode SLTNode;
//尾插
void SLTPushBack(SLTNode** pphead, SLTDataType x);
//删除pos节点
void SLTErase(SLTNode** pphead, SLTNode* pos);
//销毁链表
void SListDesTroy(SLTNode** pphead);

3. contach.c

#include "contach.h"
#include "SList.h"
//将contact.text文件中的数据导入到通讯录链表中
void LoadContact(contact** con) {FILE* pf = fopen("contact.txt", "rb");//打开一个存放通讯录的二进制文件,只读if (pf == NULL) {perror("文件打开失败");return;}PeoInfo ps;//循环读取文件数据while (fread(&ps, sizeof(ps), 1, pf)) {SLTPushBack(con, ps);}printf("历史数据导入通讯录成功\n");fclose(pf);//关闭文件
}
//初始化通讯录
void InitContact(contact** con) {LoadContact(con);printf("通讯录初始化完成\n");
}
//展示通讯录数据
void ShowContact(contact* con) {while (con) {printf("姓名:%s  性别:%s  年龄:%d  电话:%s  地址:%s\n",con->data.name,con->data.sex,con->data.age,con->data.tel,con->data.addr);con = con->next;}
}
//添加通讯录数据(尾插)
void AddContact(contact** con) {PeoInfo ps;printf("请输入姓名:");scanf("%s", ps.name);printf("请输入性别:");scanf("%s", ps.sex);printf("请输入年龄:");scanf("%d", &ps.age);printf("请输入电话:");scanf("%s", ps.tel);printf("请输入地址:");scanf("%s", ps.addr);SLTPushBack(con, ps);//因为SLTPushBack的第一个参数是 contact** con
}//查找通讯录中名字相同的数据
contact* FindName(contact* con, char name[]) {assert(con);while (con) {if (strcmp(con->data.name, name) == 0) {return con;}con = con->next;}return NULL;
}
//删除通讯录数据
void DelContact(contact** con) {char name[NAME_MAX];printf("输入要删除的姓名:");scanf("%s", name);contact* pos = FindName(*con, name);if (pos) {SLTErase(con, pos);printf("删除成功\n");}else {printf("该联系人不存在,无法删除\n");}
}
//查找通讯录数据
void FindContact(contact* con) {char name[NAME_MAX];printf("输入要查找的姓名:");scanf("%s", name);contact* pos=FindName(con, name);if (pos) {printf("找到了\n");printf("姓名:%s  性别:%s  年龄:%d  电话:%s  地址:%s\n",pos->data.name,pos->data.sex,pos->data.age,pos->data.tel,pos->data.addr);}else {printf("该联系人不存在\n");}
}
//修改通讯录数据
void ModifyContact(contact** con) {char name[NAME_MAX];printf("请输入要修改的姓名:");scanf("%s", name);contact* pos = FindName(*con, name);if (pos) {printf("请输入修改的姓名:");scanf("%s", pos->data.name);printf("请输入修改的性别:");scanf("%s", pos->data.sex);printf("请输入修改的年龄:");scanf("%d", &pos->data.age);printf("请输入修改的电话:");scanf("%s", pos->data.tel);printf("请输入修改的地址:");scanf("%s", pos->data.addr);}else {printf("该联系人不存在,无法修改\n");}
}
//将通讯录保存到contact.txt文件中
void SaveContact(contact* con) {assert(con);FILE* pf = fopen("contact.txt", "wb");if (pf == NULL) {perror("fopen fail\n");return;}while (con) {fwrite(&(con->data), sizeof(con->data), 1, pf);con = con->next;}printf("通讯录保存成功\n");fclose(pf);
}
//销毁通讯录数据
void DestroyContact(contact** con) {SaveContact(*con);//销毁通讯录数据SListDesTroy(con);
}

4. SList.c

//创建节点
SLTNode* BuyNode(SLTDataType x) {SLTNode* node = (SLTNode*)malloc(sizeof(SLTNode));//如果创建失败if (node == NULL) {perror("malloc fail!\n");exit(1);}node->data = x;node->next = NULL;return node;//返回该节点
}
//尾插
void SLTPushBack(SLTNode** pphead, SLTDataType x) {assert(pphead);//pphead不为空SLTNode* node = BuyNode(x);//创建新节点//如果链表为空if (*pphead == NULL) {*pphead = node;//新节点为头节点return;}//找尾SLTNode* cur = *pphead;while (cur->next) {cur = cur->next;}cur->next = node;//将新节点进行尾插
}
// 删除pos
void SLTErase(SLTNode** pphead, SLTNode* pos) {assert(pphead);assert(pos);//检测pos节点不为空,如果pos节点不为空,那么该链表也不为空//如果pos==头节点if (*pphead == pos) {//        SLTNode *del = *pphead;//        *pphead = (*pphead)->next;//        free(del);//        del = NULL;SLTPopFront(pphead);//头删return;}//找pos的前一个节点SLTNode* prev = *pphead;while (prev->next) {if (prev->next == pos) {break;}prev = prev->next;}prev->next = pos->next;//删除pos节点free(pos);//释放pos节点//    pos = NULL;//没有存在的必要
}
//销毁链表
void SListDesTroy(SLTNode** pphead) {SLTNode* pointer = NULL;while (*pphead) {pointer = *pphead;*pphead = (*pphead)->next;free(pointer);pointer = NULL;}
}

5. text.c

#include "contach.h"
#include "SList.h"
void Realize(void) {contact* con = NULL;//初始化通讯录InitContact(con);//添加通讯录数据AddContact(&con);AddContact(&con);AddContact(&con);//删除通讯录数据DelContact(&con);//查找通讯录数据FindContact(con);//修改通讯录数据ModifyContact(&con);//展示通讯录数据ShowContact(con);//销毁通讯录数据DestroyContact(&con);
}
int main() {Realize();return 0;
}

http://www.dtcms.com/wzjs/138016.html

相关文章:

  • 重庆sem优化百度快照优化排名
  • 网站站点层叠样式怎么做市场营销案例100例
  • 广州 做网站做推广的技巧
  • 哪些网站可以接兼职做网络营销的流程和方法
  • 移动app做的好的网站百度搜索风云榜小说总榜
  • 政府网站信息化工程建设方案开封网站seo
  • my网站域名十大新媒体平台有哪些
  • c语言如何做网站百度的链接
  • 苏州优化网站排名如何用模板做网站
  • 基本的网站建设知识佛山seo技术
  • 上海营销型网站建设团队seo和sem是什么意思啊
  • 南京做网站建设的公司无锡seo培训
  • 郑州网站设计公司成都进入搜索热度前五
  • 网站建设简介淄博友情链接交换平台源码
  • 文登做网站外贸网站优化推广
  • 上海做网站找哪家好樱桃磁力bt天堂
  • 如何建立一个网站详细步骤移动建站模板
  • 网站栏目 英文中国搜索引擎份额排行
  • 南京市网站建设公司微信推广方法
  • 天河区住房和建设水务局官方网站个人网站怎么做
  • 中英文切换的网站怎么做企业品牌推广方案
  • 网站制作 呼和浩特域名查询站长工具
  • 深圳公司官网制作网站seo优化方案
  • 三拼域名做网站邀请注册推广赚钱的app
  • 企业网站建设的重要性百度seo高级优化
  • 郑州网站推广策广州最新新闻事件
  • 做网站frontpage 2003产品推广方式及推广计划
  • 建设网站的网站叫什么男企业网站模板建站
  • 儿童摄影网站建设武汉网站推广排名
  • 自己做网站代理产品怎样进行关键词推广