c语言编程通讯录

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、设计思路:

主要分为添加信息、删除信息、排序、查找四部分。将各个功能分开用函数实现,主函数只起调用作用。期中删除时需要确定删除内容,要用到查找函数,需要函数间的调用。因需要形成文本文档格式,还需专门用到函数从txt中调取数据,组成链表。需要用到函数的操作基于此链表进行。

二、程序内容:

#include "stdio.h"

#include "string.h"

#include "conio.h"

#include "stdlib.h"

int choose();//函数声明

void add();

void get();

void arrange();

struct data*search();

void del();

struct data//学生信息类型,包含学号,姓名,联系方式

{

char num[15];//学号

char name[20];

char phone[15];

int flag;

struct data *next;

}*head;

int k;//全局变量,通讯录总人数。

FILE *fp; //文件指针

void main()//主函数,只起到调用各个函数功能

{

printf(" **系*** \n ");

int a;

a=choose();

if(a==1)

{

add();

}

if(a==2)

{

del();

}

if(a==3)

{

search();

main();

}

if(a==4)

{

arrange();

}

}

int choose()//主页面,选择要执行的功能。

{

int n;

printf("***************通讯录*******************\n");

printf("请输入需要执行的功能对应的序号:\n");

printf("1、添加新同学信息\n");

printf("2、删除某同学信息\n");

printf("3、按关键字查找并输出\n");

printf("4、对已有信息按学号排序\n");

while(1)//直到输入正确为止。

{

scanf("%d",&n);

if(n==1||n==2||n==3||n==4)

{

break;

}

else

{

printf("输入序号不正确,请重新输入。\n ");

}

}

return n;

}

void add()//添加功能

int i;

struct data *stu;

stu=(struct data*)malloc(sizeof(data));

fp=fopen("address book.txt","a+"); //读写/追加方式打开文本文档。

printf("请输入新同学学号\n");

scanf("%15s",stu->num);

printf("请输入新同学姓名\n");

scanf("%20s",stu->name);

printf("请输入新同学联系方式\n");

scanf("%15s",stu->phone);

fprintf(fp,"%-15s\t\t%-20s\t\t%-15s \n",stu->num,stu->name,stu->phone); //存入文件中

fclose(fp);

free(stu);

printf("请选择下一步操作:\n");//后续操作选择

printf("1、继续添加新同学\n");

printf("2、返回主页面\n");

while(1)

{

scanf("%d",&i);

if(i==1)

{

add();

break;

}

else if(i==2)

{

main();

break;

}

else

{

printf("输入序号不正确,请重新输入。\n");

}

}

}

void get() //从TXT中读取数据,组成链表函数。查找排序函数均需调用。

{

struct data *stu,*p1;

int i=0;

k=0; //全局变量初始化

p1=(struct data*)malloc(sizeof(struct data));

head=NULL;

fp=fopen("address book.txt","r+"); //打开文件

if(fopen("address book.txt","r+")==NULL) //若无数据时

{

printf("通讯录暂无学生信息,请选择下一步操作\n");

printf(" 1:现在添加学生信息\n");

printf(" 2:返回选择操作面板\n");

while(1)

{

scanf("%d",&i);

if(i==1)

{

add();

break;

}

else if(i==2)

{

main();

break;

}

else

{

printf("输入序号不正确,请重新输入。\n");

}

}

}

else

{

while(!feof(fp)) //文件位置指针指向末尾时结束

{

stu=(struct data*)malloc(sizeof(struct data));

fscanf(fp,"%15s\t\t%20s\t\t%15s

相关文档
最新文档