当前位置:首页 » 编程语言 » c语言通讯录实验报告

c语言通讯录实验报告

发布时间: 2022-11-30 07:45:35

① 【急求】c语言程序设计通讯录的报告!

说个地址,我可以发给你

② C语言通讯录实践报告书怎么写啊求救!~~~

#include "stdio.h"
#include"string.h"
#include"malloc.h"
typedef struct node
{char name[20];
char ad[50];
char phone[20];
struct node *next;
}slink;

//通讯录的建立
slink * creslink(int n)
{slink *head,*p,*s;
int i;
if(n<1) return NULL;
p=head=(slink *)malloc(sizeof(slink));
printf("请依次输入联系人的姓名、地址和电话:\n");
for(i=1;i<=n;i++)
{s=(slink *)malloc(sizeof(slink));
fflush(stdin);
scanf("%s%s%s",&s->name,&s->ad,&s->phone);
p->next=s;
p=s;
}
p->next=NULL;
printf("通讯录已保存\n");
printf("按任意键继续...\n");
getch();
return head;
}

//通讯者的插入
int insert(slink *head,char n[],slink *x)
{slink *p,*q;
p=head;
while(p->next!=NULL)
{p=p->next;
if(strcmp(p->name,n)==0)
{q=(slink *)malloc(sizeof(slink));
strcpy(q->name,x->name);
strcpy(q->ad,x->ad);
strcpy(q->phone,x->phone);
q->next=p->next;
p->next=q;
printf("插入成功\n");
printf("按任意键继续...\n");
getch();
return 1;}
}
printf("所要插入的位置不存在\n");
printf("按任意键继续...\n");
getch();
return 0;
}

//通讯者的删除
int delete(slink *head,char n[])
{slink *p,*q;
p=head;
while(p->next!=NULL)
{q=p;
p=p->next;
if(strcmp(p->name,n)==0)
{q->next=q->next->next;
printf("删除成功!\n");
printf("按任意键继续...\n");
getch();
return 1;}
}
return 0;
}

//通讯者的查询
int search(slink *head,char n[])
{slink *p;
p=head;
while(p->next!=NULL)
{p=p->next;
if(strcmp(p->name,n)==0)
{printf("姓名 地址 电话\n");
printf("%-20s%-30s%-20s \n",p->name,p->ad,p->phone);
printf("查询成功\n");
printf("按任意键继续...\n");
getch();
return 1;
}
}
printf("通讯录中没有此联系人!\n");
printf("按任意键继续...\n");
getch();
return 0;
}

//通讯录表的输出
int output(slink *head)
{slink *p;
if(head->next==NULL)
{printf("通讯录空!\n");
printf("按任意键继续...\n");
getch();
return 0;}
p=head->next;
printf("姓名 地址 电话\n");
while(p!=NULL)
{printf("%-20s%-30s%-20s\n",p->name,p->ad,p->phone);
p=p->next;}
printf("输出成功\n");
printf("按任意键继续...\n");
getch();
return 1;
}

int main()
{int c,n;
char s[50];
slink *head,p;
loop:{printf("-----****************-----\n");
printf("-----****************-----\n");
printf("1 通讯录的建立 \n2 通讯者的插入 \n3 通讯者的删除 \n4 通讯者的查询 \n5 通讯录表的输出 \n6 退出\n");
for(c=0;c<5;c++)
printf(" *\n");
printf("请选择操作(1~6):\n");
fflush(stdin);
c=7;
scanf("%d",&c);
switch(c)
{case 1:printf("请输入联系人的个数:\n");
fflush(stdin);
scanf("%d",&n);
head=creslink(n);
goto loop;
case 2:printf("请输入原位置处联系人的姓名:\n");
fflush(stdin);
scanf("%s",s);
printf("请依次输入要插入联系人的姓名、地址和电话:\n");
fflush(stdin);
scanf("%s%s%s",p.name,p.ad,p.phone);
insert(head,s,&p);
goto loop;
case 3:printf("请依次输入要删除联系人的姓名:\n");
fflush(stdin);
scanf("%s",s);
delete(head,s);
goto loop;
case 4:printf("请依次输入要查询联系人的姓名:\n");
fflush(stdin);
scanf("%s",s);
search(head,s);
goto loop;
case 5:output(head);
goto loop;
case 6:return 1;
default:printf("输入有误!\n");
printf("按任意键继续...\n");
getch();
goto loop;
}
}
return 0;
}

③ c语言程序设计实验报告;学生通讯录管理系统80~100行,不要vc,要c环境的。

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
void main()
{
int number;
getch();
system("cls");
printf("\n\n\n");
printf(" |***** 班级学生管理系统 *****|\n");
printf(" |............................|\n");
printf(" |.....请选择菜单序号(0~6)....|\n");
printf(" | 1----打开文件 |\n");
printf(" | 2----保存文件 |\n");
printf(" | 3----编辑数据 |\n");
printf(" | 4----显示数据 |\n");
printf(" | 5----数据计算 |\n");
printf(" | 6----程序说明 |\n");
printf(" | 0----退出系统 |\n");
printf(" |............................|\n");
printf("\t\t请选择序号:");
scanf("%d",&number);
if(number==1)
printf("打开文件!\n");
else
if(number==2)
printf("保存文件!\n");
else
if(number==3)
{
system("cls");
printf("\n\n\n");
printf(" |***** 编辑子菜单 *****|\n");
printf(" |..............................|\n");
printf(" | 请选择菜单序号(0~3) |\n");
printf(" |..............................|\n");
printf(" | 1----增加记录 |\n");
printf(" | 2----删除记录 |\n");
printf(" | 3----修改记录 |\n");
printf(" | 0----返回上级菜单 |\n");
printf(" |..............................|\n");
}
else
if(number==4)
{
system("cls");
printf("\n\n\n");
printf(" |***** 显示子菜单 *****|\n");
printf(" |..............................|\n");
printf(" | 请选择菜单序号(0~4) |\n");
printf(" |..............................|\n");
printf(" | 1----查看选定记录 |\n");
printf(" | 2----显示全部记录 |\n");
printf(" | 3----显示排序记录 |\n");
printf(" | 4----显示不及格记录 |\n");
printf(" | 0----返回上级菜单 |\n");
printf(" |..............................|\n");
}
else
if(number==5)
{
system("cls");
printf("\n\n\n");
printf(" |***** 计算子菜单 *****|\n");
printf(" |..............................|\n");
printf(" | 请选择菜单序号(0~3) |\n");
printf(" |..............................|\n");
printf(" | 1----计算总成绩和平均成绩|\n");
printf(" | 2----计算最高分 |\n");
printf(" | 3----计算最低分 |\n");
printf(" | 0----返回上级菜单 |\n");
printf(" |..............................|\n");
}
else
if(number==6)
printf("程序说明!\n");
else
if(number==0)
printf("退出程序!\n");
else
printf("输入错误!\n");
}

④ c语言通讯录管理设计的实训总结

我于 年 月 日参加了为期 天的C语言开发实训,实训课题为《通讯录管理设计》。在本次实训过程中,我们小组 人通过精诚合作,共通努力,在 老师的耐心指导下,圆满完成实训任务。
通过本次实训,巩固了平时所学的c语言基础知识,对C语言系统有了一个比较直观的了解和应用。特别是在解决问题的过程当中,我学到了书本上学不到的知识,获取宝贵的开发经验。(据一两个例子说明)
借此机会我衷心地感谢知道老师在整个实训过程中给予我的帮助和指导,没有老师的孜孜不倦,就没有我对于这门学科的深入理解;同时还要感谢小组成员在实训过程中对我的宽容和帮助,没有我们的共通努力,就没有实训的完美收局。
总的来说,本次实训给我启发很大,我希望以后还有机会和同学们参加更多的相关实训,借以提升自己的专业能力和实战能力,完善理论知识!

⑤ 用C语言写一个通讯录

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
typedef struct { //通讯录结点类型
char num[5]; //编号
char name[9]; //姓名
char sex[3]; //性别
char phone[13]; //电话
char addr[31]; //地址
} DataType;
typedef struct node { //结点类型定义
DataType data; //结点数据域
struct node *next; //结点指针域
} ListNode;
typedef ListNode *LinkList;
LinkList head;
ListNode *p;
//函数说明
int menu_select();
LinkList CreateList(void);
void InsertNode(LinkList head,ListNode *p);
ListNode *ListFind(LinkList head);
void DelNode(LinkList head);
void printList(LinkList head);
//主函数
void main()
{
for( ; ; ){
switch(menu_select( ) )
{
case 1:
printf("**********************************\n");
printf("* 通 讯 录 链 表 的 建 立 *\n");
printf("**********************************\n");
head=CreateList( );
break;
case 2:
printf("**********************************\n");
printf("* 通 讯 者 信 息 的 添 加 *\n");
printf("**********************************\n");
printf("编号(4) 姓名(8) 性别(3) 电话(11) 地址(31)\n");
printf("************************************* \n");
p=(ListNode *)malloc(sizeof(ListNode)); //申请新结点
scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.sex,
p->data.phone,p->data.addr);
InsertNode(head,p);
break;
case 3:
printf("***********************************\n");
printf("* 通 讯 录 信 息 的 查 询 *\n");
printf("***********************************\n");
p=ListFind(head);
if (p!=NULL) {
printf("编号 姓 名 性别 联系电话 地址 \n");
printf("--------------------------------------------------\n");
printf("%s,%s,%s,%s,%s\n",p->data.num,p->data.name,
p->data.sex,p->data.phone,p->data.addr);
printf("---------------------------------------------------\n");
}
else
printf("没有查到要查询的通讯者!\n");
break;
case 4:
printf("***********************************\n");
printf("* 通 讯 录 信 息 的 删 除 *\n");
printf("***********************************\n");
DelNode(head); //删除结点
break;
case 5:
printf("************************************\n");
printf("* 通 讯 录 链 表 的 输 出 *\n");
printf("************************************\n");
printList(head);
break;
case 0:
printf("\t 再 见! \n");
return;
}
}
}
/*******************/
/* 菜单选择函数程序 */
/***************************/
int menu_select( )
{
int sn;
printf(" 通讯录管理系统 \n");
printf("===================\n");
printf(" 1.通讯链表的建立\n");
printf(" 2.通讯者结点的插入\n");
printf(" 3.通讯者结点的查询\n");
printf(" 4.通讯者结点的删除\n");
printf(" 5.通讯录链表的输出\n");
printf(" 0.退出管理系统\n");
printf("==========================\n");
printf(" 请 选 择 0-5: ");
for( ; ; )
{
scanf("%d",&sn);
if (sn<0||sn>5)
printf("\n\t输入错误,重选0-5:");
else
break;
}
return sn;
}
/**************************/
/*用尾插法建立通讯录链表函数 */
/**************************/
LinkList CreateList(void)
{//尾插法建立带头结点的通讯录链表算法
LinkList head=(ListNode *)malloc(sizeof(ListNode)); //申请头结点
ListNode *p,*rear;
int flag=0; //结束标志置0
rear=head; //尾指针初始指向头结点
while (flag==0)
{ p=(ListNode *)malloc(sizeof(ListNode)); //申新结点
printf("编号(4) 姓名(8) 性别 电话(11) 地址(31)\n");
printf("--------------------------------------------------------------------------------------\n");
scanf("%s%s%s%s%s",p->data.num,p->data.name,p->data.sex,p->data.phone,
p->data.addr);
rear->next=p; //新结点连接到尾结点之后
rear=p; //尾指针指向新结点
printf("结束建表吗?(1/0):");
scanf("%d",&flag);
}
rear->next=NULL; //终端结点指针置空
return head; //返回链表头指针
}
/******************************/
/*在通讯录链表head中插入结点 */
/******************************/
void InsertNode(LinkList head,ListNode *p)
{
ListNode *p1,*p2;
p1=head;
p2=p1->next;
while(p2!=NULL && strcmp(p2->data.num,p->data.num)<0)
{
p1=p2; //p1指向刚访问过的结点
p2=p2->next; //p2指向表的下一个结点
}
p1->next=p; //插入p所指向的结点
p->next=p2; //连接表中剩余的结点
}
/******************************************/
/* 有序通讯录链表的查找 */
/******************************************/
ListNode *ListFind(LinkList head)
{// 有序通讯录链表上的查找
ListNode *p;
char num[5];
char name[9];
int xz;
printf("==================\n");
printf(" 1. 按编号查询 \n");
printf(" 2. 按姓名查询 \n");
printf("==================\n");
printf(" 请 选 择: ");
p=head->next; //假定通讯 录表带头结点
scanf("%d",&xz);
if (xz==1) {
printf("请输入要查找者的编号:");
scanf("%s",num);
while (p&&strcmp(p->data.num,num)<0)
p=p->next;
if ((p==NULL)||strcmp(p->data.num,num))0;
p=NULL; //没有查到要查找的通讯者
}
else
if (xz==2) {
printf(" 请输入要查找者的姓名:");
scanf("%s",name);
while(p&&strcmp(p->data.name,name)!=0)
p=p->next;
}
return p;
}
/*******************************/
/* 通讯录链表上的结点删除 */
/*********************************/
void DelNode(LinkList head)
{
char jx;
ListNode *p,*q;
p=ListFind(head); //调用查找函数
if (p==NULL) {
printf("没有查到要删除的通讯者!\n");
return;
}
printf("真的要删除该结点吗?(y/n):");
scanf("%c",&jx);
if (jx=='y'||jx=='Y') {
q=head;
while ((q!=NULL) &&(q->next!=p))
q=q->next;
q->next=p->next; //删除结点
free(p); //释放被删结点空间
printf("通讯者已被删除!\n");
}
}
/**********************************/
/* 通讯录链表的输出函数 */
/**********************************/
void printList(LinkList head)
{
ListNode *p;
p=head->next;
printf("编号 姓 名 性别 联系电话 地址 \n");
printf("--------------------------------------------------------------------------------\n");
while (p!=NULL)
{ printf("%s,%s,%s,%s,%s\n",p->data.num,p->data.name,p->data.sex,
p->data.phone,p->data.addr);
printf("---------------------------------------------------------------------------------\n");
p=p->next; //后移一个结点
}
}

⑥ 实验内容:c语言编写通讯录管理系统 通讯录中的联系人包含以下信息项:姓名、联系电话、电子邮箱。

用雅奇990,不用写代码,自动编程

⑦ C语言程序设计:通讯录程序设计

#include "stdlib.h"
#include "string.h"
#include "conio.h"
#include "stdio.h"
#include "dos.h"
FILE *fp;
int i; //i是全局变量 可代替length
struct address
{ char postnum[10];
char a[40]; //家庭地址
};
struct birthday
{ int year;
int month;
int day;
};
struct ffriend
{ int num; //序号
char name[20];
char sex;
char telephone[13];
struct birthday birthday;
struct address address;

}
friends[50];

void Load()
{
int j;
long k;
fp=fopen("friend.txt","a+"); //打开文件friend.txt
if(fp!=NULL)
{
for(i=1;i<50;i++)

{
j=fgetc(fp);
if(j==EOF) //判断是否到了文件尾
return;
k=i-1;
fseek(fp,k*sizeof(struct ffriend),SEEK_SET);
fread(&friends[i],sizeof(struct ffriend),1,fp); //从文件中读取一条记录
}

}
else
{
fp=fopen("friend.txt","w");
i=1;
}

}
void Show(int j)
{
// friends[j].num=i;
printf("\n\n\t编号-Nnumber: %3d",friends[j].num);
printf("\n\t姓名-Name:%-20s",friends[j].name);
printf("\n\t性别-Sex:%c",friends[j].sex);
printf("\n\t联系电话-Telephone:%-13s",friends[j].telephone);
printf("\n\t出生日期-Birthday:%4d-%2d-%3d",friends[j].birthday.year,friends[j].birthday.month,friends[j].birthday.day);
printf("\n\t邮编-Postnum:%-10s",friends[j].address.postnum);
printf("\n\t通信地址-address:%-40s",friends[j].address.a);
}
void Append(int j)
{
fflush(stdin); //区内清除文件缓冲区,文件以写方式打开时将缓冲容写入文件
//stdin是一个标准FILE*(文件型指针)指向通常是用键盘的输入的输入流
friends[j].num=j;
printf("\n\t\t\t序号-Number:%d",j);
printf("\n\t\t\t姓名-Name:");
scanf("%s",friends[j].name);
fflush(stdin); //为什么没有fflush(stdin); 的效果会自动跳过呢?
printf("\t\t\t性别-Sex(m/w):"); //为什么输入汉字男女也会自动跳过联系电话呢
scanf("%c",&friends[j].sex);
printf("\t\t\t联系电话-telephone:");
scanf("%s",friends[j].telephone);
printf("\t出生日期-birthday");
printf("\n\t\t\t年份-year:");
scanf("%d",&friends[j].birthday.year);
printf("\t\t\t月份-month:");
scanf("%d",&friends[j].birthday.month);
printf("\t\t\t日-day:");
scanf("%d",&friends[j].birthday.day);
printf("\t\t\t邮编-Postnumber:");
scanf("%s",friends[j].address.postnum);
printf("\t\t\t通信地址-Address:");
scanf("%s",friends[j].address.a);
getchar();
}
void Delete()
{
int k;
printf("\n\tDelete 序号-Number:");
scanf("%d",&k);
if(k<=i)
{
for(int j=k;j<i+1;j++) /*插入位置后的元素顺序后移*/
{
strcpy(friends[j].name,friends[j+1].name); /*交换元素内容*/
friends[j].sex=friends[j+1].sex;
strcpy(friends[j].telephone,friends[j+1].telephone);
friends[j].birthday.year=friends[j+1].birthday.year;
friends[j].birthday.month=friends[j+1].birthday.month;
friends[j].birthday.day=friends[j+1].birthday.day;
strcpy(friends[j].address.postnum,friends[j+1].address.postnum);
strcpy(friends[j].address.a,friends[j+1].address.a);

}
i--;
}
else
{
printf("输入的序号太大!");
}
}
void Modify(int j)
{
Append(j);
}
void Save()
{
int j;
fp=fopen("friend.txt","w");
for(j=1;j<=i;j++)
{
fwrite(&friends[j],sizeof(struct ffriend),1,fp);
}
fclose(fp);

}

void main()
{
int j;
char grade;
char searchname[10];
Load();
i--;
do
{
printf("\t\t\t\t简易通讯录\n\n");
printf("功能选择(Function choose)\n");
printf("\1A.读取(Read)\n");
printf("\2B.增添(Append)\n");
printf("\6C.插入(Insert)\n");
printf("\5D.删除(Delete)\n");
printf("\5E.查询(Search)\n");
printf("\6F.修改(Modify)\n");
printf("\2G.保存(Save)\n");
printf("\1H.退出(Quit)\n");
printf("请选择(Choice)\n注:输入A~H的大写字母\n");
scanf("%c",&grade);
switch(grade)
//加个大写和小写 都可以啊
{
case 'A': j=1; //显示功能
while(getchar()!=0x1b&&j<=i) //增添按Esc键退出
{
Show(j++);
printf("\n请按回车键继续!");
}
if(j-1<1)
{
printf("\n\t空文档,无任何记录-Empty Note\n");
printf("\n请按回车键继续!");
getchar();

}
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'B': //增加功能
while(i<=50) //增加按ESC键退出的功能
{
i++;
Append(i);
printf("\t是否继续增加?y/n");
//修改 加上else if 其他就跳出或强制打印出出错
char a=getchar();
if(a=='n'||a=='N')
break;
}
if(i==51)
printf("\n\t文档已满,无法增加记录-note full");
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
getchar();
break;
case 'C':
int k;
printf("\n\t输入要插入的位置:");
scanf("%d",&k);
j=i+1;
friends[j].num=j;
for(j;j>k;j--) //插入功能
{
strcpy(friends[j].name,friends[j-1].name); //数据后移
friends[j].sex=friends[j-1].sex;
strcpy(friends[j].telephone,friends[j-1].telephone);
friends[j].birthday.year=friends[j-1].birthday.year;
friends[j].birthday.month=friends[j-1].birthday.month;
friends[j].birthday.day=friends[j-1].birthday.day;
strcpy(friends[j].address.postnum,friends[j-1].address.postnum);
strcpy(friends[j].address.a,friends[j-1].address.a);

}
Append(k);
i++;
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'D': //删除功能 //增添随意删除多条记录的功能
Delete();
if(i<1)
printf("\n没有记录-No records\n");
printf("\n请按回车键继续!");
getchar();
getchar();
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'E': //查询功能
printf("\n\t请输入要查询记录的相关姓名:"); //增添查询按列号的
scanf("%s",searchname);
for(j=1;j<=i;j++)
{
if(strcmp(searchname,friends[j].name)==0) //比较字符串
{
Show(j);
break;
}
}
if(i<1)
{
printf("\n 没有您所查询的记录-No records");
printf("\n 请按回车键继续!");
getchar();
}
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
getchar();
break;
case 'F': //修改功能 / /增添按序列号查询
printf("\n\t请输入要修改记录的相关姓名:");
gets(searchname);
scanf("%s",searchname);
for(j=1;j<=i;j++)
{
if(strcmp(searchname,friends[j].name)==0) //比较字符串
{
Modify(j);
// getchar(); //加个输出确定修改吗
}
}
if(i<1) //修改功能
{ printf("\n 没有您所要修改的记录-No records");
printf("\n 请按回车键继续!");
getchar();
getchar();
}
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;
case 'G':
Save(); //存盘功能
getchar();
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
break;

case 'H': //退出功能
char x;
printf("是否保存?yes/no\n");
scanf("%s",&x);
//getchar();
// getchar();
if(x=='y')
{
Save();
exit(0);
}
else
exit(0);

default:
printf("\n\t输入有误,请输入正确的序列号!");
printf("\n请按回车键继续!");
getchar();
printf("\n\t\t\t\t\t\t\t此次操作结束");
printf("\n\t------------------------------------------------------------\t\t\n");
}
}while(1);
}

⑧ 用c语言程序设计一个学生通讯录系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
struct record
{
char name[20]; //姓名
char phone[12]; //电话
char adress[50]; //地址
char postcode[8]; //邮政编码
char e_mail[20]; //电子邮件。
}student[100]; //假设最大数为100.
//定义全局变量num,表示已经输入的人数 。
int num; //这里使用数组解决通讯录的问题,实际上使用链表更好。
int menu_select()
{
char s[80];
int a;/*定义整形变量*/
system("cls");
printf("\t\t***********欢迎进入通讯管理界面********\n\n");
printf("\t\t\t0. 输入记录\n");
printf("\t\t\t1. 显示记录\n");
printf("\t\t\t2. 按姓名查找\n");
printf("\t\t\t3. 按电话号码查找\n");
printf("\t\t\t4. 插入记录 \n");
printf("\t\t\t5. 按姓名排序\n");
printf("\t\t\t6. 删除记录\n");
printf("\t\t\t7. Quit\n");
printf("\t\t***********************************************\n\n");
do{
printf("Enter you choice(0~7):");
scanf("%s",s);
a=atoi(s);
}
while (a<0 || a>7);
return a;
}
int adser()
{
printf("\t\t\t**************** 请输入用户信息 ****************\n");
printf("\t\t\t输入姓名:\n");
scanf("%s",student[num].name);
printf("\t\t\t输入电话号码:\n");
scanf("%s",student[num].phone);
printf("\t\t\t输入地址:\n");
scanf("%s",student[num].adress);
printf("\t\t\t输入邮编:\n");
scanf("%s",student[num].postcode);
printf("\t\t\t输入e-mail:\n");
scanf("%s",student[num].e_mail);
num++;
printf("\t\t\t是否继续添加?(Y/N):\n");
if(getch()=='y' || getch()=='Y')
adser();
return(0);
}
void list()
{
int i;
system("cls");
if(num!=0)
{
printf("\t\t\t*************** 以下为通讯录所有信息************\n");
for (i=0;i<num;i++)
{
printf("\t\t\t姓名:%s\n",student[i].name);
printf("\t\t\t电话:%s\n",student[i].phone);
printf("\t\t\t地址:%s\n",student[i].adress);
printf("\t\t\t邮编:%s\n",student[i].postcode);
printf("\t\t\te-mail:%s\n",student[i].e_mail);
if(i+1<num)
{
system("pause");
}
}
printf("\t\t\t************************************************\n");
}
else
printf("\t\t\t通讯录中无任何纪录\n");
printf("\t\t\t按任意键返回主菜单:\n");
getch(); //这里是无回显的输入字符,你输入的字符不会显示在屏幕上。
return;
}
int searchbyname()
{
int mark=0;
int i;
printf("\t\t\t***************** 按姓名查找 *******************\n");
char name[20];
printf("\t\t\t请输入姓名:\n");
scanf("%s",name);
for(i=0;i<num;i++)
{
if (strcmp(student[i].name,name)==0)
{
printf("\t\t\t************* 以下是您查找的用户信息 ***********\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t************************************************\n");
mark++;
if((i+1)<num)
{
printf("\t\t\t是否继续查找相同名字的用户信息:(y/n)\n");
if(getch()=='y' || getch()=='Y')
{
continue;
}
else
return(0);
}
else
{
printf("\t\t\t按任意键返回主菜单");
getch();
return(0);
}
}
}
if(mark == 0)
{
printf("\t\t\t没有相同姓名的用户纪录\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return(0);
}
return 0;
}
int searchbyphone()
{
int mark=0;
int i;
printf("\t\t\t****************** 按电话查找 ******************\n");
char phone[10];
printf("\t\t\t请输入电话号码:\n");
scanf("%s",phone);
for(i=0;i<num;i++)
{
if (strcmp(student[i].phone,phone)==0)
{
printf("\t\t\t************** 以下是您查找的用户信息 **********\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t************************************************\n");
printf("\t\t\t按任意键返回主菜单\n");
mark++;
getch();
return(0);
}
}
if (mark==0)
{
printf("\t\t\t没有改用户的信息\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return(0);
}
return(0);
}
void deletebyphone()
{
int i,j;
int deletemark=0;
char phone[20];
printf("\t\t\t请输入要删除用户电话号码:\n");
scanf("%s",phone);
if(num==0)
{
printf("\t\t\t对不起,文件中无任何纪录\n");
printf("\t\t\t按任意键返回主菜单\n");
getch();
return;
}
for (i=0;i<num;i++)
{
if (strcmp(student[i].phone,phone)==0)
{
printf("\t\t\t以下是您要删除的用户纪录:\n");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t是否删除?(y/n)");
if (getch()=='y' || getch()=='Y')
{
for (j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf("\t\t\t删除成功");
printf("\t\t\t是否继续删除?(y/n)");
if (getch()=='y' || getch()=='Y')
deletebyphone();
return;
}
else
return;
}
continue;
}
if (deletemark==0)
{
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch()=='Y')
deletebyphone();
return;
}
return;
}
void deletebyname()
{
int a=0;
int findmark=0;
int j;
int deletemark=0;
int i;
char name[20];
printf("\t\t\t请输入要删除用户姓名:\n");
scanf("%s",name);
for (i=a;i<num;i++)
{
if(strcmp(student[i].name,name)==0)
{
printf("\t\t\t以下是您要删除的用户纪录:");
findmark++;
printf("\t\t\t________________________________");
printf("\t\t\t姓名: %s",student[i].name);
printf("\t\t\t电话: %s",student[i].phone);
printf("\t\t\t地址: %s",student[i].adress);
printf("\t\t\te-mail:%s",student[i].e_mail);
printf("\t\t\t________________________________");
printf("\t\t\t是否删除?(y/n)");
if (getch()=='y' || getch() == 'Y')
{
for(j=i;j<num-1;j++)
student[j]=student[j+1];
num--;
deletemark++;
printf("\t\t\t删除成功");
if((i+1)<num)
{
printf("\t\t\t是否继续删除相同姓名的用户信息?(y/n)");
if (getch()=='y')
{
a=i;
continue;
}
}
printf("\t\t\t是否继续删除?(y/n)");
if (getch()=='y')
deletebyname();
return;
}
if((i+1)<num)
{
printf("\t\t\t是否继续删除相同姓名的用户信息?(y/n)");
if (getch()=='y' || getch() == 'Y')
{
a=i;
continue;
}
}
}
else
continue;
}
if ((deletemark==0)&&(findmark==0))
{
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch() == 'Y')
deletebyphone();
return;
}
else if (findmark!=0)
{
printf("\t\t\t没有重名信息");
printf("\t\t\t没有该用户的纪录");
printf("\t\t\t是否继续删除?(y/n)");
if(getch()=='y' || getch() == 'Y')
deletebyphone();
return;
}
}
int dele()
{
char choic;
printf("\t\t\t1-按电话号码删除 2-按姓名删除");
printf("\t\t\t请选择:");
choic=getch();
switch (choic)
{
case '1':deletebyphone();break;
case '2':deletebyname();break;
}
return(0);
}
int sortbyname() //按姓名进行排序
{
int i,j;
struct record tmp;
for (i=1;i<num;i++)
{
if(strcmp(student[i].name,student[i-1].name)<0)
{
tmp=student[i];
j=i-1;
do
{
student[j+1]=student[j];
j--;
}while ((strcmp(tmp.name,student[j].name)<0&&j>=0));
student[j+1]=tmp;
}
}
printf("\t\t\t排序成功,是否显示?(y/n)");
if (getch()=='y')
list();
return(0);
}
int main()
{
printf("\t\t************************************************\n");
printf("\t\t********welcome to TONGXUNLU *******************\n");
printf("\t\t###########code by XXXXX ###################\n");
printf("\t\t*************************************************\n");
printf("按任意键进入主菜单\n");
getch();
int selectnum;
while(1)
{
selectnum = menu_select();
switch(selectnum)
{
case 0:
{
adser();
break;
}
case 1:
{
list();
break;
}
case 2:
{
searchbyname();
break;
}
case 3:
{
searchbyphone();
break;
}
case 4:
{
adser(); //这里插入,应该能指定位置,不过意义不大,所以和添加记录一样了。
break;
}
case 5:
{
sortbyname();
break;
}
case 6:
{
dele();
break;
}
case 7:
{
printf("BYE BYE!\n");
system("pause");
getchar();
exit(0);
}
}
}
getchar();
return 0;
}

热点内容
如何选择服务器业务量 发布:2024-04-29 22:49:28 浏览:445
php怎样实现页面跳转页面 发布:2024-04-29 22:32:39 浏览:695
山东烟台电信dns服务器ip地址 发布:2024-04-29 21:22:59 浏览:136
数据库数据互通 发布:2024-04-29 21:19:02 浏览:154
pythonor的语法 发布:2024-04-29 21:07:48 浏览:703
方易通安卓机怎么样 发布:2024-04-29 21:06:30 浏览:766
广饶编程 发布:2024-04-29 20:39:07 浏览:120
长城服务器管理口ip 发布:2024-04-29 20:15:24 浏览:376
java静态成员变量 发布:2024-04-29 20:04:52 浏览:875
现代伊兰特女生选哪个配置 发布:2024-04-29 19:59:44 浏览:508