c语言字母转电话号码,C语言电话本程序(只是简单的姓名和电话号码增删改查),在线等...

本文主要是介绍c语言字母转电话号码,C语言电话本程序(只是简单的姓名和电话号码增删改查),在线等...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

满意答案

00e27ab806e4881f8254fe7ae8741834.png

a897567003

2014.11.10

00e27ab806e4881f8254fe7ae8741834.png

采纳率:49%    等级:12

已帮助:8297人

#include

#include

#include

#defineOK1

#defineERROR0

#defineListNodeLensizeof(ListNode)

structlistNode{/*self-referentialstructure*/

charname[20];

charteleNo[15];

charEmail[35];

structlistNode*nextPtr;

};

typedefstructlistNodeListNode;

typedefListNode*ListNodePtr;

voidinsert(ListNodePtr*,char*,char*,char*);

intdel(ListNodePtr*,char*);

ListNodePtrsearch(ListNodePtr*,char*);

intisEmpty(ListNodePtr);

voidprintList(ListNodePtr);

voidinstructions(void);

ListNodePtrload(void);

voidsave(ListNodePtr);

voidcreatfile(void);

intmain()

{

ListNodePtrstartPtr=NULL,elemPtr;

charjudge,choice;

charitem1[20],item2[15],item3[35];

if((startPtr=load())==NULL)creatfile();/*文件不存在则创建*/

instructions();/*显示菜单*/

printf("\nCommand>");/*命令提示符*/

scanf("%c",&choice);

if(choice>='A'&&choice<='Z')choice=choice+32;/*大小写转换*/

while(choice!='q'){

switch(choice){

case'a':

printf("请输入要添加的姓名、电话号码和Email:(eg.NameTelNo.Email)\n");

scanf("\n%s",item1);

scanf("\n%s",item2);

scanf("\n%s",item3);

insert(&startPtr,item1,item2,item3);

break;

case'd':

if(!isEmpty(startPtr)){

printf("请输入要删除的姓名:");

scanf("\n%s",item1);

if(del(&startPtr,item1)){

printf("%s已经被删除.\n",item1);

}

else

printf("%s未找到\n\n",item1);

}

else

printf("电话本是空的!\n\n");

break;

case's':

if(!isEmpty(startPtr)){

printf("请输入要查找的姓名:");

scanf("\n%s",item1);

if((elemPtr=search(&startPtr,item1))!=NULL){

printf("\n%-20s%-15s%-35s\n","姓名:","电话号码:","Email:");

printf("%-20s%-15s%-35s\n",elemPtr->name,elemPtr->teleNo,elemPtr->Email);

}

else

printf("%s未找到!\n\n",item1);

}

else

printf("电话本是空的!\n\n");

break;

case'p':

printList(startPtr);

break;

default:

printf("无效的选择!\n\n");

instructions();

break;

}

printf("\nCommand>");

scanf("\n%c",&choice);

if(choice>='A'&&choice<='Z')choice=choice+32;/*大小写转换*/

}

printf("是否保存(Y/N)?");

scanf("\n%c",&judge);

if(judge=='Y'||judge=='y')

save(startPtr);

printf("结束!\n");

returnOK;

}

/*Printtheinstructions*/

voidinstructions(void)

{

printf("q.Quit(退出)"

"\ta.Add(添加)"

"\td.Delete(删除)"

"\ts.Search(查找)"

"\tp.Print(打印)\n"

"请选择命令:(Q/q、A/a、D/d、S/s、P/p)\n");

}

/*Insertanewvalueintothelistinsortedorder*/

voidinsert(ListNodePtr*sPtr,charvalue1[],charvalue2[],charvalue3[])

{

ListNodePtrnewPtr,previousPtr,currentPtr;

newPtr=(ListNodePtr)malloc(ListNodeLen);

if(newPtr!=NULL){/*isspaceavailable*/

strcpy(newPtr->name,value1);

strcpy(newPtr->teleNo,value2);

strcpy(newPtr->Email,value3);

newPtr->nextPtr=NULL;

previousPtr=NULL;

currentPtr=*sPtr;

while(currentPtr!=NULL&&strcmp(value1,currentPtr->name)==1){

previousPtr=currentPtr;/*walkto...*/

currentPtr=currentPtr->nextPtr;/*...nextnode*/

}

if(previousPtr==NULL){

newPtr->nextPtr=*sPtr;

*sPtr=newPtr;

}

else{

previousPtr->nextPtr=newPtr;

newPtr->nextPtr=currentPtr;

}

}

else

printf("%s无法添加,没有可用内存!\n",value1);

}

/*Deletealistelement*/

intdel(ListNodePtr*sPtr,charvalue[])

{

ListNodePtrpreviousPtr,currentPtr,tempPtr;

if(!strcmp(value,(*sPtr)->name)){

tempPtr=*sPtr;

*sPtr=(*sPtr)->nextPtr;/*删除头结点*/

free(tempPtr);/*释放头结点*/

returnOK;

}

else{

previousPtr=*sPtr;

currentPtr=(*sPtr)->nextPtr;

while(currentPtr!=NULL&&strcmp(currentPtr->name,value)){

previousPtr=currentPtr;/*移动...*/

currentPtr=currentPtr->nextPtr;/*...下一个结点*/

}

if(currentPtr!=NULL){

tempPtr=currentPtr;

previousPtr->nextPtr=currentPtr->nextPtr;

free(tempPtr);

returnOK;

}

}

returnERROR;

}

/*Searchelementinthelist*/

ListNodePtrsearch(ListNodePtr*sPtr,charvalue[])

{

ListNodePtrcurrentPtr;

if(!strcmp(value,(*sPtr)->name))

return*sPtr;

else{

currentPtr=(*sPtr)->nextPtr;

while(currentPtr!=NULL&&strcmp(currentPtr->name,value)){

currentPtr=currentPtr->nextPtr;/*...下一个结点*/

}

if(currentPtr!=NULL){

returncurrentPtr;

}

}

returnNULL;

}

/*Return1ifthelistisempty,0otherwise*/

intisEmpty(ListNodePtrsPtr)

{

returnsPtr==NULL;

}

/*Printthelist*/

voidprintList(ListNodePtrheadPtr)

{

ListNodePtrcurrentPtr=headPtr;

inti=0;

if(currentPtr==NULL)

printf("电话本是空的.\n\n");

else{

printf("\n%31s\n","********");

printf("%30s\n","电话本");

printf("%31s\n","********");

printf("%-20s%-15s%-35s\n","姓名:","电话号码:","Email:");

printf("------------------------------------------------------------\n");

while(currentPtr!=NULL){

printf("%-20s%-15s%-35s\n",currentPtr->name,currentPtr->teleNo,currentPtr->Email);

currentPtr=currentPtr->nextPtr;

i++;

}

printf("------------------------------------------------------------\n");

printf("总计%d个.\n",i);

}

}

/*Savefile*/

voidsave(ListNodePtrheadPtr)

{

FILE*fp;

ListNodePtrcurrentPtr=headPtr;

if((fp=fopen("tele.dat","wb"))==NULL){

printf("无法打开文件.\n");

return;

}

while(currentPtr!=NULL){

if(fwrite(currentPtr,ListNodeLen,1,fp)!=1){

printf("文件写入出错.\n");

break;

}

else

currentPtr=currentPtr->nextPtr;

}

fclose(fp);

}

/*Loadfile*/

ListNodePtrload()

{

FILE*fp;

ListNodePtrheadPtr,currentPtr;

headPtr=currentPtr=NULL;

if((fp=fopen("tele.dat","rb"))==NULL)

returnNULL;

while(!feof(fp)){

currentPtr=(ListNodePtr)malloc(ListNodeLen);

if(fread(currentPtr,ListNodeLen,1,fp)!=1){

printf("文件读取失败.\n");

free(currentPtr);

break;

}

else

insert(&headPtr,currentPtr->name,currentPtr->teleNo,currentPtr->Email);

}

fclose(fp);

returnheadPtr;

}

/*creatfile*/

voidcreatfile(){

FILE*fp;

if((fp=fopen("tele.dat","wb"))==NULL){

printf("文件创建失败.\n");

return;

}

fclose(fp);

}

00分享举报

这篇关于c语言字母转电话号码,C语言电话本程序(只是简单的姓名和电话号码增删改查),在线等...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/227867

相关文章

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient