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

相关文章

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st