C语言课程设计-通讯录管理系统说明书1(4)

2019-04-16 20:05

flag=1; break; }

s=s->next; }

if(flag==1) /*提示用户是否重新输入*/ {

printf(\编号 %s 已经存在,是否重试?\ } else

{break;} }

p=(Node *)malloc(sizeof(Node)); /*申请内存空间*/ if(!p) {

printf(\申请内存空间失败 \如没有申请到,打印提示信息*/ return ; /*返回主界面*/ }

strcpy(p->data.num,num); /*将字符串num拷贝到p->data.num中*/ stringinput(p->data.name,15,\ stringinput(p->data.phone,12,\ p->data.age=numberinput(\

stringinput(p->data.address,10,\ stringinput(p->data.email,20,\ p->next=NULL; /*表明这是链表的尾部结点*/ r->next=p; /*将新建的结点加入链表尾部中*/ r=p; save=1; }

return ; }

/*查询记录*/

void Find(Link l) /*按编号或姓名,查询电话记录*/ {

int select; /*1:按编号查,2:按姓名查,3:按地址查找,其他:返回主界面(菜单)*/

char searchinput[20]; /*保存用户输入的查询内容*/ Node *p;

if(!l->next) /*若链表为空*/ {

printf(\无!\\n\ return; }

printf(\按编号查询 =====>2 按姓名查询 =====>3 按地址查询\\n\

printf(\请选择[1,2,3]:\ scanf(\

if(select==1) /*按编号查询*/ {

stringinput(searchinput,6,\请输入已存在的编号:\

p=Locate(l,searchinput,\在l中查找学号为searchinput值的节点,并返回节点的指针*/

if(p) /*若p!=NULL*/ {

printhead(); printdata(p); printf(END);

printf(\按任意键返回\ } else

printf(\找不到此人!\\n\ } else

if(select==2) /*按姓名查询*/ {

stringinput(searchinput,15,\请输入已存在的姓名:\ p=Locate(l,searchinput,\ if(p) {

printhead(); printdata(p); printf(END);

printf(\按任意键返回\ } else

printf(\找不到此人!\\n\ }

if(select==3) /*按地址查询*/ {

stringinput(searchinput,15,\请输入已存在的地址:\ p=Locate(l,searchinput,\ if(p) {

printhead(); printdata(p); printf(END);

printf(\按任意键返回\

} else

printf(\找不到此人!\\n\ } else

printf(\输入错误! 按任意键继续**\\n\}

/*按姓名删除学生记录:先找到保存该联系人记录的节点,然后删除该节点*/ void Del(Link l) {

Node *p,*r;

char findmess[20]; if(!l->next) {

printf(\找不到此人的记录!\\n\ return; }

stringinput(findmess,15,\ p=Locate(l,findmess,\ if(p) {

r=l;

while(r->next!=p) r=r->next; r->next=p->next; free(p);

printf(\ save=1; } else

printf(\ }

/*修改电话记录。先按输入的编号查询到该记录,然后提示用户修改编号之外的值,编号不能修改*/

void Modify(Link l) {

Node *p;

char findmess[20]; if(!l->next) {

printf(\ return; }

printf(\ Disp(l);

stringinput(findmess,6,\输入并检验该学号*/

p=Locate(l,findmess,\查询到该节点*/ if(p) /*若p!=NULL,表明已经找到该节点*/ {

printf(\ printf(\

stringinput(p->data.name,15,\ p->data.age=numberinput(\

stringinput(p->data.phone,12,\ stringinput(p->data.address,10,\ stringinput(p->data.email,20,\ printf(\ Disp(l); save=1; } else

printf(\ }

/*数据存盘,若用户没有专门进行此操作且对数据有修改,在退出系统时, 会提示用户

存盘*/

void Save(Link l) {

FILE* fp; Node *p;

fp=fopen(\以只写方式打开二进制文件*/

if(fp==NULL) /*打开文件失败*/ {

printf(\ return ; }

p=l->next; while(p) {

if(fwrite(p,sizeof(Node),1,fp)==1)/*每次写一条记录或一个节点信息至文件*/

{

p=p->next; } else

{break; } }

save=0;

fclose(fp); /*关闭此文件*/ }

/*主函数*/ void main() {

Link l; /*定义链表*/ FILE *fp; /*文件指针*/

int select; /*保存选择结果变量*/ char ch; /*保存(y,Y,n,N)*/

Node *p,*r; /*定义记录指针变量*/ l=(Node*)malloc(sizeof(Node)); if(!l) {

printf(\如没有申请到,打印提示信息*/ return ; /*返回主界面*/ }

l->next=NULL; r=l;

fp=fopen(\以追加方式打开一个二进制文件,可读可写,若此文件不存在,会创建此文件*/

if(fp==NULL) {

printf(\ exit(0); }

while(!feof(fp)) {

p=(Node*)malloc(sizeof(Node)); if(!p) {

printf(\没有申请成功*/

exit(0); /*退出*/ }

if(fread(p,sizeof(Node),1,fp)==1) /*一次从文件中读取一条学生成绩记录*/

{

p->next=NULL; r->next=p;

r=p; /*r指针向后移一个位置*/ } }

fclose(fp); /*关闭文件*/

while(l) {

menu(); p=r;

printf(\请选择服务(0~6):\显示提示信息*/ scanf(\ if(select==0) {

if(save==1) /*若对链表的数据有修改且未进行存盘操作,则此标志为1*/ {

printf(\是否保存之文件?(y/n):\ scanf(\ if(ch=='y'||ch=='Y') Save(l); }

printf(\谢谢使用!\

break; }

switch(select)

{

case 1:Add(l);break; /*增加电话记录*/ case 2:Del(l);break; /*删除电话记录*/ case 3:Modify(l);break; /*修改电话记录*/ case 4:Find(l);break; /*查询电话记录*/ case 5:Disp(l);break; /*打印电话记录*/ case 6:Save(l);break; /*保存电话记录*/

default: printf(\错误:输入错误! 按任意键继续*\\n\ break; /*按键有误,必须为数值0-6*/ } } }


C语言课程设计-通讯录管理系统说明书1(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:小学数学课程实施方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: