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

相关文章

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除