c语言电话薄管理系统
① 怎么介绍c语言制作的通讯录管理系统
1. 任务描述
设计一个管理通讯录的程序。
完成:1、数据的插入、删除、修改和显示功能;
2、实现按人名或电话号码进行查询的功能;
3、提供键盘式选择菜单以实现功能选择。
提示:信息记录要求放到文件中,因而要实现文件的输入输出操作,整个系统可以设计为多模块结构,由数据插入模块、数据修改模块、数据删除模块、数据显示模块和数据查询模块组成。
2.本课程涉及的知识点
变量的定义、输入和输出函数、结构体类型的定义、结构体数组、循环语句、选择语句,文件的操作等。
3. 要求完成的任务
完成整个规定任务的设计及调试,最后得出正确结果,并经教师检查及答辩;
写出规范的课程设计报告,在设计思想描述时一定要画出程序算法流程图;
课程设计结束后交设计说明书等文档和设计内容:
从2月26日起,学生每天至少要到设计教室半天以上;
设计报告撰写格式要求:
设计报告的主要内容是详细写出在设计过程中所用到的主要技术或方法;
课程设计报告按通用格式书写,具体要求见资料:“课程设计说明书的书写内容与格式”
时间安排:
第一天: 学生先在实验室集中,由指导教师介绍课程设计的目的、布置任务后选题;
第二天-第四天:学生在实验室完成设计,经教师检查并回答提问,确认设计完成;
第五天: 教师在计算机上先检查设计报告、学生修改后打印提交
② C语言设计个人通讯录管理系统
1、创建学生社团管理系统的欢迎界面,该欢迎界面以图片的方式呈现,系统启动时再屏幕中居中显示。
③ C语言电话薄管理系统
http://..com/question/51700570.html 自己去看 多加点分给我 0.0
采纳哦
④ c语言 电话簿管理系统
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <iostream>
//主函数
int main()
{
LinkQueue Q;
initAddressBook(Q);
int flag=0;
while(flag!=8)
{
printf("※※※※※主※※※※※菜※※※※※单※※※※※\n");
printf("※1、增加联系人 2、删除联系人 ※\n");
printf("※3、修改联系人 4、清空通讯录 ※\n");
printf("※5、查找联系人 6、按组显示 ※\n");
printf("※7、显示全部联系人 8、退出 ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("请输入编号(1-8):\n");
scanf("%d",&flag);
if(flag<1||flag>8)
{
printf("输入错误请重新输入!\n");
continue;
}
else
{
switch(flag){
case 1:
if(enAddressBook(Q))
printf("增加联系人成功!\n");
else
printf("增加联系人失败!\n");
break;
case 2:
if(delPerson(Q))
printf("删除联系人成功!\n");
else
printf("联系人删除失败!\n");
break;
case 3:
if(update(Q))
printf("修改联系人成功!\n");
else
printf("修改联系人失败!\n");
break;
case 4:
if(clearAddressBook(Q))
printf("通讯录已清空!\n");
else
printf("通讯录清空失败!\n");
break;
case 5:
findByName(Q);
break;
case 6:
findByGroup(Q);
break;
case 7:
disAll(Q);
break;
case 8:
system("cls");
break;
}
}
}
printf("※※※※※感谢您使用本系统!※※※※※※\n");
return 0;
}
//初始化通讯录
void initAddressBook(LinkQueue &Q)
{
Q.front=Q.rear=(QNode *)malloc(sizeof(QNode));
if(!Q.front)
exit(1);
else
Q.front->next=NULL;
}
//清空通讯录
bool clearAddressBook(LinkQueue &Q)
{
system("cls");
while(addressBookLength(Q)!=0)
{
QNode *p;
p=Q.front->next;
Q.front->next=p->next;
if(p==Q.rear)
Q.rear=Q.front;
free(p);
}
return true;
}
//通讯录当前人数
int addressBookLength(LinkQueue &Q)
{
int i=0;
QNode *p;
p=Q.front;
if(Q.front==Q.rear)
i=0;
else
{
while(p!=Q.rear)
{
p=p->next;
i++;
}
}
return i;
}
//删除联系人
bool delPerson(LinkQueue &Q)
{
char _name[20];
system("cls");
printf("请输入要删除的联系人的姓名:\n");
scanf("%s",_name);
QNode *p,*q;
if(Q.front==Q.rear)
{
printf("通讯录为空!\n");
return false;
}
else
{
p=Q.front;
q=Q.front->next;
while(q!=Q.rear){
if(strcmp(q->name,_name)==0)
{
p->next=q->next;
free(q);//删除节点
return true;
}
else
{
p=p->next;
q=q->next;
}
}
if((strcmp(q->name,_name)==0))
{
free(q);
Q.front=Q.rear;
return true;
}
else
{
printf("无此联系人!\n");
return false;
}
}
}
//查找联系人
bool findByName(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!\n");
return false;
}
else
{
char _name[20];
printf("请输入要查询的联系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("姓名:%s 号码:%s 分组:%s\n",p->name,p->tel,p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("姓名:%s 号码:%s 分组:%s\n",p->name,p->tel,p->group);
return true;
}
else
{
printf("查无此人!\n");
return false;
}
}
}
//按组显示联系人
bool findByGroup(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!\n");
return false;
}
else
{
char _group[20];
printf("请输入要查询的分组:\n");
scanf("%s",_group);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->group,_group)==0)
{
printf("姓名:%s 号码:%s \n",p->name,p->tel);
}
p=p->next;
}
if(strcmp(p->group,_group)==0){
printf("姓名:%s 号码:%s \n",p->name,p->tel);
return true;
}
else
{
printf("无此分组!\n");
return false;
}
}
}
//增加联系人
bool enAddressBook(LinkQueue &Q)
{
system("cls");
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(!p)
return false;
else
{
printf("请输入联系人姓名:\n");
scanf("%s",p->name);
printf("请输入联系人号码:\n");
scanf("%s",&p->tel);
printf("请输入联系人分组:\n");
scanf("%s",p->group);
if(Q.front->next==NULL)
{
Q.front->next=p;
Q.rear=p;
Q.rear->next=NULL;
}
else
{
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
return true;
}
}
//修改联系人
bool update(LinkQueue &Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人!\n");
return false;
}
else
{
char _name[20];
printf("请输入要修改的联系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("请输入新联系人姓名:\n");
scanf("%s",p->name);
printf("请输入新联系人号码:\n");
scanf("%s",&p->tel);
printf("请输入新联系人分组:\n");
scanf("%s",p->group);
return true;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("请输入新联系人姓名:\n");
scanf("%s",p->name);
printf("请输入新联系人号码:\n");
scanf("%s",&p->tel);
printf("请输入新联系人分组:\n");
scanf("%s",p->group);
return true;
}
else
{
printf("查无此人!\n");
return false;
}
}
}
//显示所有联系人
void disAll(LinkQueue &Q)
{
system("cls");
int i=0;
QNode *p;
p=Q.front->next;
if(Q.front==Q.rear)
printf("无联系人!\n");
else
{
printf(" 姓名 号码 分组\n");
while(p!=NULL){
printf("%15s %15s %15s\n",p->name,p->tel,p->group);
p=p->next;
}
}
}
⑤ c语言程序设计 电话簿管理系统
intmain()
{
LinkQueueQ;
initAddressBook(Q);
intflag=0;
while(flag!=8)
{
printf("※※※※※主※※※※※菜※※※※※单※※※※※ ");
printf("※1、增加联系人2、删除联系人※ ");
printf("※3、修改联系人4、清空通讯录※ ");
printf("※5、查找联系人6、按组显示※ ");
printf("※7、显示全部联系人8、退出※ ");
printf("※※※※※※※※※※※※※※※※※※※※※※※ ");
printf("请输入编号(1-8): ");
scanf("%d",&flag);
if(flag<1||flag>8)
{
printf("输入错误请重新输入! ");
continue;
}
else
{
switch(flag){
case1:
if(enAddressBook(Q))
printf("增加联系人成功! ");
else
printf("增加联系人失败! ");
break;
case2:
if(delPerson(Q))
printf("删除联系人成功! ");
else
printf("联系人删除失败! ");
break;
case3:
if(update(Q))
printf("修改联系人成功! ");
else
printf("修改联系人失败! ");
break;
case4:
if(clearAddressBook(Q))
printf("通讯录已清空! ");
else
printf("通讯录清空失败! ");
break;
case5:
findByName(Q);
break;
case6:
findByGroup(Q);
break;
case7:
disAll(Q);
break;
case8:
system("cls");
break;
}
}
}
printf("※※※※※感谢您使用本系统!※※※※※※ ");
return0;
}
//初始化通讯录
voidinitAddressBook(LinkQueue&Q)
{
Q.front=Q.rear=(QNode*)malloc(sizeof(QNode));
if(!Q.front)
exit(1);
else
Q.front->next=NULL;
}
//清空通讯录
boolclearAddressBook(LinkQueue&Q)
{
system("cls");
while(addressBookLength(Q)!=0)
{
QNode*p;
p=Q.front->next;
Q.front->next=p->next;
if(p==Q.rear)
Q.rear=Q.front;
free(p);
}
returntrue;
}
//通讯录当前人数
intaddressBookLength(LinkQueue&Q)
{
inti=0;
QNode*p;
p=Q.front;
if(Q.front==Q.rear)
i=0;
else
{
while(p!=Q.rear)
{
p=p->next;
i++;
}
}
returni;
}
//删除联系人
booldelPerson(LinkQueue&Q)
{
char_name[20];
system("cls");
printf("请输入要删除的联系人的姓名: ");
scanf("%s",_name);
QNode*p,*q;
if(Q.front==Q.rear)
{
printf("通讯录为空! ");
returnfalse;
}
else
{
p=Q.front;
q=Q.front->next;
while(q!=Q.rear){
if(strcmp(q->name,_name)==0)
{
p->next=q->next;
free(q);//删除节点
returntrue;
}
else
{
p=p->next;
q=q->next;
}
}
if((strcmp(q->name,_name)==0))
{
free(q);
Q.front=Q.rear;
returntrue;
}
else
{
printf("无此联系人! ");
returnfalse;
}
}
}
//查找联系人
boolfindByName(LinkQueue&Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人! ");
returnfalse;
}
else
{
char_name[20];
printf("请输入要查询的联系人姓名: ");
scanf("%s",_name);
QNode*p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("姓名:%s号码:%s分组:%s ",p->name,p->tel,p->group);
returntrue;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("姓名:%s号码:%s分组:%s ",p->name,p->tel,p->group);
returntrue;
}
else
{
printf("查无此人! ");
returnfalse;
}
}
}
//按组显示联系人
boolfindByGroup(LinkQueue&Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人! ");
returnfalse;
}
else
{
char_group[20];
printf("请输入要查询的分组: ");
scanf("%s",_group);
QNode*p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->group,_group)==0)
{
printf("姓名:%s号码:%s ",p->name,p->tel);
}
p=p->next;
}
if(strcmp(p->group,_group)==0){
printf("姓名:%s号码:%s ",p->name,p->tel);
returntrue;
}
else
{
printf("无此分组! ");
returnfalse;
}
}
}
//增加联系人
boolenAddressBook(LinkQueue&Q)
{
system("cls");
QNode*p;
p=(QNode*)malloc(sizeof(QNode));
if(!p)
returnfalse;
else
{
printf("请输入联系人姓名: ");
scanf("%s",p->name);
printf("请输入联系人号码: ");
scanf("%s",&p->tel);
printf("请输入联系人分组: ");
scanf("%s",p->group);
if(Q.front->next==NULL)
{
Q.front->next=p;
Q.rear=p;
Q.rear->next=NULL;
}
else
{
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
returntrue;
}
}
//修改联系人
boolupdate(LinkQueue&Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手机中无联系人! ");
returnfalse;
}
else
{
char_name[20];
printf("请输入要修改的联系人姓名: ");
scanf("%s",_name);
QNode*p;
p=Q.front->next;
while(p->next!=NULL)
{
if(strcmp(p->name,_name)==0)
{
printf("请输入新联系人姓名: ");
scanf("%s",p->name);
printf("请输入新联系人号码: ");
scanf("%s",&p->tel);
printf("请输入新联系人分组: ");
scanf("%s",p->group);
returntrue;
}
p=p->next;
}
if(strcmp(p->name,_name)==0){
printf("请输入新联系人姓名: ");
scanf("%s",p->name);
printf("请输入新联系人号码: ");
scanf("%s",&p->tel);
printf("请输入新联系人分组: ");
scanf("%s",p->group);
returntrue;
}
else
{
printf("查无此人! ");
returnfalse;
}
}
}
//显示所有联系人
voiddisAll(LinkQueue&Q)
{
system("cls");
inti=0;
QNode*p;
p=Q.front->next;
if(Q.front==Q.rear)
printf("无联系人! ");
else
{
printf("姓名号码分组 ");
while(p!=NULL){
printf("%15s%15s%15s ",p->name,p->tel,p->group);
p=p->next;
}
}
}
⑥ C语言程序设计,通讯录管理系统
/*【用C语言编写具有数据插入、修改、删除、显示和查询功能的电话薄管理程序】
1、数据包括:人名、工作单位、电话号码和E-mail地址。
2、可对记录中的姓名和电话号码进行修改。
3、可增加或删除记录。
4、可显示所有保存的记录。
5、可按人名或电话号码进行查询。
另:采用结构体数组和文件系统实现。结构体包括人名、工作单位、电话号码和E-mail
绝对原创,2010年7月12日晚刚写完测试通过的,纯C语言! */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define szSTR 64
#define fileDB "c:\\contact.txt"
struct CONTACT {
char name[szSTR];/*姓名*/
char unit[szSTR];/*工作单位*/
char tele[szSTR];/*电话*/
char mail[szSTR];/*mail*/
};
typedef struct CONTACT CON;
#define BNAME 1
#define BUNIT 2
#define BTELE 4
#define BMAIL 8
#define BFULL 0xFF
int OPER[5] = {BFULL, BNAME, BUNIT, BTELE, BMAIL};
void input(CON * s, int mask)
{
if(mask & BNAME) { printf("请输入学生姓名:"); scanf("%s", s->name); }
if(mask & BUNIT) { printf("请输入工作单位:"); scanf("%s", s->unit); }
if(mask & BTELE) { printf("请输入联系电话:"); scanf("%s", s->tele); }
if(mask & BMAIL) { printf("请输入电子邮件:"); scanf("%s", s->mail); }
}/*end input*/
void show (int id, CON * s)
{
if(!s) return ;
if(id)
printf("%d\t%s\t%s\t%s\t%s\n",
id, s->name , s->unit , s->tele , s->mail );
else
printf("【姓名】%s【工作单位】%s【电话】%s【电邮】%s\n",
s->name , s->unit , s->tele , s->mail );
/*end if*/
}/*end show*/
void regist(void)
{
CON s; FILE * f = 0;
input(&s, BFULL);
f = fopen(fileDB, "ab");
fwrite(&s,sizeof(s),1,f);
fclose(f);
printf("资料已保存!\n");
}/*end regist*/
int browse(char * key, fpos_t * p, CON * s)
{
FILE * f =0; int i = 0, r = 0; CON t;
char * a = 0, * b = 0; fpos_t q;
if(!s) return 0;
f = fopen(fileDB, "rb");
if(!f) {
printf("数据库暂无记录\n");
return 0;
}/*end if*/
printf("编号\t姓名\t单位\t电话\t电邮\n");
printf("------------------------------------------------\n");
while(!feof(f)) {
fgetpos(f, &q);
r = fread(&t, sizeof(t), 1, f);
if(r<1)break;
if(t.name[0]==0) continue;
if(key) {
a = strstr(t.name , key);
b = strstr(t.tele , key);
if(a == 0 && b == 0) continue;
}/*end if*/
if(p) *p = q;
if(s) memcpy(s, &t, sizeof(t));
i++;
show(i, &t);
}/*end while*/
fclose(f);
printf("------------------------------------------------\n");
return i;
}/*end browse*/
fpos_t query(CON * s)
{
char key[szSTR]=""; fpos_t p = 0; int r = 0;
printf("请输入姓名或者电话号码:");
scanf("%s", key);
r = browse(key, &p, s);
return r?p:-1;
}/*end query*/
void clear(void)
{
FILE * f = 0; CON s;
fpos_t p = query(&s);
if(p<0) return;
f = fopen(fileDB, "rb+");
fsetpos(f, &p);
memset(&s, 0, sizeof(s));
fwrite(&s, sizeof(s),1, f);
fclose(f);
printf("记录已删除!\n");
}/*end clear*/
void modify(void)
{
FILE * f = 0; CON s; int cmd = 0;
fpos_t p = query(&s);
if(p<0) return;
f = fopen(fileDB, "rb+");
fsetpos(f, &p);
for(;;) {
show(0, &s);
printf("请选择:1-姓名;2-工作单位;3-电话;4-电邮;5-保存并退出;6-放弃修改并退出\n");
scanf("%d", &cmd);
switch(cmd) {
case 1:
case 2:
case 3:
case 4:
input(&s, OPER[cmd]);
break;
case 5:
fsetpos(f, &p);
fwrite(&s, sizeof(s), 1, f);
case 6:
fclose(f);
return;
default:
printf("错误的操作,请重新输入。\n");
}/*end case*/
}/*mext*/
}/*end clear*/
int main(void)
{
int cmd = 0; CON s;
for(;;) {
printf("欢迎使用通信簿!请选择:1-添加;2-查询;3-删除;4-修改;5-全部输出;0-退出\n");
scanf("%d", &cmd);
switch(cmd) {
case 0: return 0;
case 1: regist(); break;
case 2: query(&s); break;
case 3: clear(); break;
case 4: modify(); break;
case 5: browse(0, 0, &s); break;
}//end case
}
return 0;
}
⑦ c语言编程通讯录管理系统
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#define header1 "|---------------------电话簿-----------------------|\n"
#define header2 "| num | name | phonenum | address |\n"
#define header3 "|-------|----------|---------------|---------------|\n"
#define end "|----------------------结束------------------------|"
#define N 100
typedef struct tele
{
int num;
char name[10];
char phonenum[15];
char address[20];
}
telebook;
void menu()
{
system("cls");
system("color 1F");
printf("\n\n\n"); /*输出主菜单*/
printf("\t\t|* **** 欢迎进入电话薄管理系统! **** *|\n");
printf("\t\t|********************menu********************|\n");
printf("\t\t| |\n");
printf("\t\t| 1 增加 2 读取 |\n");
printf("\t\t| |\n");
printf("\t\t| 3 查找 4 修改 |\n");
printf("\t\t| |\n");
printf("\t\t| 5 删除 6 排序 |\n");
printf("\t\t| |\n");
printf("\t\t| 0 退出 |\n");
printf("\t\t|********************************************|\n");
}
void printheader() /*输出菜单头*/
{
printf(header1);
printf(header2);
printf(header3);
}
int add(telebook temp[])
{
int i;int m=0;
FILE *fp;
system("cls");
if((fp=fopen("D:\\rex.txt","ab+"))==NULL)
{
printf("打开文件有误!");
exit(0);
}
printf("每次输入一百个人的信息!\n");
printf("如果输入0推出输入!\n");
for(i=m;i<(100+m);i++)
{
printf("num:");
scanf("%d",&temp[i].num);
if(temp[i].num==0)
break;
printf("name:");
scanf("%s",&temp[i].name);
printf("phonenum:");
scanf("%s",&temp[i].phonenum);
printf("address:");
scanf("%s",&temp[i].address);
fwrite(&temp[i],sizeof(struct tele),1,fp);
}
m+=100;
fclose(fp);
system("cls");
return 0;
}
int read(telebook temp[])
{
int count,i;
FILE *fp;
system("cls");
if((fp=fopen("D:\\rex.txt","ab+"))==NULL)
{
printf("打开文件有误!");
exit(0);
}
printheader();
for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/
if(count==0)
printf("\n\n\n\t\t文件内没有信息!\n\n\n");
for(i=0;i<count;i++) /*读取文件内的信息*/
printf("|%-7d|%-10s|%-15s|%-15s|\n",temp[i].num,temp[i].name,temp[i].phonenum,temp[i].address);
printf(end);
fclose(fp);
return 0;
}
int find1(telebook temp[]) /*电话号码查询*/
{
int i,count,t=0 ;char n[20];
FILE *fp;
system("cls");
read(temp);
printf("\n");
if((fp=fopen("D:\\rex.txt","ab+"))==NULL)
{
printf("打开文件有误!");
exit(0);
}
printf("输入要查找的号码:");
scanf("%s",n);
printf("\n\n");
printheader();
getchar();
for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/
for(i=0;i<count;i++)
{
if(strcmp(temp[i].phonenum,n)==0)
{
t=1;
printf("|%-7d|%-10s|%-15s|%-15s|\n",temp[i].num,temp[i].name,temp[i].phonenum,temp[i].address);
/*输出查询到的信息*/
}
}
if(t==0)
{
printf("\a\n\n\t\t没有要查找的信息..........!\n\n\n");
printf(end);
return 0;
}
printf(end);
fclose(fp);
return 0;
}
int find2(telebook temp[]) /*姓名查询*/
{
int i,count ,t=0;
char a[20];
FILE *fp;
system("cls");
read(temp);
printf("\n");
if((fp=fopen("D:\\rex.txt","ab+"))==NULL)
{
printf("打开文件有误!");
exit(0);
}
printf("输入要查找的名字:");
scanf("%s",a);
getchar();
printf("\n\n");
printheader();
for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/
for(i=0;i<count;i++)
{
if(strcmp(temp[i].name,a)==0)
{
t=1;
printf("|%-7d|%-10s|%-15s|%-15s|\n",temp[i].num,temp[i].name,temp[i].phonenum,temp[i].address);
/*输出查询到的信息*/
}
}
if(t==0)
{
printf("\a\n\n\t\t没有要查找的信息..............!\n\n\n");
printf(end);
return 0;
}
printf(end);
fclose(fp);
return 0;
}
void find()
{
int n;
telebook message1[20];
system("cls");
system("color 4F");
printf("\n");
while(1)
{ /*输出查找函数主菜单*/
printf("\n\n\n\n");
printf(" |-------查找功能------|\n");
printf(" | |\n");
printf(" | 1 按电话号码查找 |\n");
printf(" | |\n");
printf(" | 2 按姓名查找 |\n");
printf(" | |\n");
printf(" | 0 退出 |\n");
printf(" | |\n");
printf(" |---------结束--------|\n");
printf("输入您的查找方式:");
scanf("%d",&n);
switch(n)
{
case 1:find1(message1);break;
case 2:find2(message1);break;
case 0:return;break;
}
getchar();
system("cls");
}
}
int change(telebook temp[])
{
int i,count,t=0;
FILE *fp;
struct tele ne[10];
system("cls");
read(temp);
printf("\n");
printf("按序号修改\n");
if((fp=fopen("D:\\rex.txt","ab+"))==NULL)
{
printf("打开文件有误!");
exit(0);
}
printf("输入新内容:\n");
printf("num:");
scanf("%d",&ne[0].num);
printf("name:");
scanf("%s",&ne[0].name);
printf("phonenum:");
scanf("%s",&ne[0].phonenum);
printf("address:");
scanf("%s",&ne[0].address);
for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/
fclose(fp);
for(i=0;i<count;i++) /*查找与新信息相同的信息*/
{
if(temp[i].num==ne[0].num) /*用新信息替换*/
{
t=1;
temp[i].num=ne[0].num;
strcpy(temp[i].name,ne[0].name);
strcpy(temp[i].phonenum,ne[0].phonenum);
strcpy(temp[i].address,ne[0].address);
getchar();
printf("\n\n\t\t\t修改成功..........!");
}
}
if(t==0)
{
getchar();
printf("\n\n\t\t\t没有要修改的信息.........!");
return 0;
}
fp=fopen("D:\\rex.txt","wb+");
for(i=0;i<count;i++)
fwrite(&temp[i],sizeof(struct tele),1,fp);
fclose(fp);
return 0;
}
int del(telebook temp[])
{
int i,j,count,t=0;char name1[20];
FILE *fp;
system("cls");
read(temp);
printf("\n");
if((fp=fopen("D:\\rex.txt","ab+"))==NULL)
{
printf("打开文件有误!");
exit(0);
}
printf("输入要删除的人名:");
scanf("%s",name1);
for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/
fclose(fp);
for(i=0;i<count;i++) /*查找要删除的信息*/
{
if(strcmp(temp[i].name,name1)==0)
{
for(j=i;j<count;j++)
{ /*删除找到的信息*/
t=1;
temp[j].num=temp[j+1].num;
strcpy(temp[j].name,temp[j+1].name);
strcpy(temp[j].phonenum,temp[j+1].phonenum);
strcpy(temp[j].address,temp[j+1].address);
}
count--;
printf("\n\n\n\t\t\t删除成功..................!");
}
}
if(t==0)
{
getchar();
printf("\a\n\n\n\t\t\t没有要删除的信息..................!");
return 0;
}
getchar();
fp=fopen("D:\\rex.txt","wb+");
for(i=0;i<count;i++)
fwrite(&temp[i],sizeof(struct tele),1,fp);
fclose(fp);
return 0;
}
int paixu(telebook temp[])
{
int i,j,count;
telebook tmp;
FILE *fp;
system("cls");
read(temp);
printf("\n");
fp=fopen("D:\\rex.txt","ab+");
for(count=0;fread(&temp[count],sizeof(struct tele),1,fp)==1;count++);/*读取文件内信息的个数。*/
fclose(fp);
for(i=0;i<count-1;i++) /*对文件内的信息的序号进行排序*/
{
for(j=count-2;j>=i;j--)
if(temp[j+1].num<temp[j].num)
{
tmp=temp[j+1];
temp[j+1]=temp[j];
temp[j]=tmp;
}
}
fp=fopen("D:\\rex.txt","wb+");
for(i=0;i<count;i++)
fwrite(&temp[i],sizeof(struct tele),1,fp);
fclose(fp);
read(temp);
return 0;
}
void main()
{
telebook message[N];
int n;
while(1)
{
menu();
printf("输入您的选择:");
scanf("%d",&n);
getchar();
switch(n)
{
case 1:add(message);break;
case 2:read(message);break;
case 3:find();break;
case 4:change(message);break;
case 5:del(message);break;
case 6:paixu(message);break;
case 0:exit(0);break;
}
getchar();
}
printf("press enter continue...............");
}
⑧ c语言课程设计--- 电话簿管理系统
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUM 100
struct phoneinfor
{
char name[15];
char sex[8];
char num[15];
char job[15];
char address[30];
}phoneinfor[NUM];
char Initialization()/*界面初始化*/
{
char ch;
printf(" ********Phone Information System********\n1.Show all the phone information\n2.Add phone information\n3.Delete phone information\n4.Search phone information\n5.Exit\nPlease select:");
do
{
ch=getch();
if(ch>='1'&&ch<='5')
{
printf("%c\n",ch);
getchar();
return ch;
}
}while(1);
}
void showall()/*显示所有*/
{
int i=0;
FILE *fp;
system("cls");
if((fp=fopen("C:\\phoneinfo.txt","r"))==NULL)
{
printf("ERROR:cannot open file\n");
getchar();
return;
}
printf("name sex phonenum job address\n");
while(!feof(fp))
{fread(&phoneinfor[i],sizeof(struct phoneinfor),1,fp);
printf("%-15s %-6s %-9s %-15s %-s\n",phoneinfor[i].name,phoneinfor[i].sex,phoneinfor[i].num,phoneinfor[i].job,phoneinfor[i].address);
i++;
if(!i%20)
{
printf("Press any key to continue...");
getch();
}
}
fclose(fp);
printf("Press any key to return");
getch();
return;
}
void addinfor()/*增加数据*/
{
int i=0,b=0;
char ch;
FILE *fp;
do
{
system("cls");
printf("name:");
gets(phoneinfor[i].name);
printf("sex:");
gets(phoneinfor[i].sex);
printf("phonenum:");
gets(phoneinfor[i].num);
printf("job:");
gets(phoneinfor[i].job);
printf("address:");
gets(phoneinfor[i].address);
printf("Saved!Continue?(Y/N)");
do
{
ch=getch();
if(ch=='Y'||ch=='y'||ch=='N'||ch=='n')
{
printf("%c\n",ch);
getchar();
break;
}
}while(1);
i++;
}while(ch=='Y'||ch=='y');
if((fp=fopen("C:\\phoneinfo.txt","a+"))==NULL)
{
printf("ERROR:cannot open file\n");
return;
}
for(b=0;b<i;b++)
if(fwrite(&phoneinfor[b],sizeof(struct phoneinfor),1,fp)!=1)
printf("file write error\n");
fclose(fp);
return;
}
void delinfor()/*删除信息*/
{
int i=0,b=0,k;
char delnum[9];
FILE *fp;
system("cls");
printf("Enter the Delete phonenum:");
gets(delnum);
if((fp=fopen("C:\\phoneinfo.txt","r"))==NULL)
{
printf("ERROR:cannot open file\n");
return;
}
while(!feof(fp))
{
fread(&phoneinfor[i],sizeof(struct phoneinfor),1,fp);
i++;
}
fclose(fp);
for(b=0;b<i;b++)
if(!strcmp(delnum,phoneinfor[b].num))
{
for(k=b;k<i-1;k++)
phoneinfor[k]=phoneinfor[k+1];
if((fp=fopen("C:\\phoneinfo.txt","w"))==NULL)
{
printf("ERROR:cannot open file\n");
return;
}
for(i=0;i<k;i++)
if(fwrite(&phoneinfor[i],sizeof(struct phoneinfor),1,fp)!=1)
printf("file write error\n");
fclose(fp);
printf("Delete!Press any key to return...");
getchar();
return;
}
printf("Not Found!Press any key to return...");
getchar();
return;
}
void searchinfor()/*查找信息*/
{
char ch;
char searchinfor[20];
int i=0;
FILE *fp;
system("cls");
printf("search mode:\n1.By name\n2.By phonenum\nChoose:");
do
{
ch=getch();
if(ch=='1'||ch=='2')
{
printf("%c\n",ch);
getchar();
break;
}
}while(1);
if((fp=fopen("C:\\phoneinfo.txt","r"))==NULL)
{
printf("ERROR:cannot open file\n");
return;
}
if(ch=='1')
{
printf("Enter the name:");
gets(searchinfor);
printf("name sex phonenum job address\n");
while(!feof(fp))
{
fread(&phoneinfor[i],sizeof(struct phoneinfor),1,fp);
if(!strcmp(searchinfor,phoneinfor[i].name))
{
printf("%-15s %-6s %-9s %-15s %-s\n",phoneinfor[i].name,phoneinfor[i].sex,phoneinfor[i].num,phoneinfor[i].job,phoneinfor[i].address);
printf("Press any key to return...");
getchar();
fclose(fp);
return;
}
i++;
}
}
if(ch=='2')
{
printf("Enter the phonenum:");
gets(searchinfor);
printf("name sex phonenum job address\n");
while(!feof(fp))
{
fread(&phoneinfor[i],sizeof(struct phoneinfor),1,fp);
if(!strcmp(searchinfor,phoneinfor[i].num))
{
printf("%-15s %-6s %-9s %-15s %-s\n",phoneinfor[i].name,phoneinfor[i].sex,phoneinfor[i].num,phoneinfor[i].job,phoneinfor[i].address);
printf("Press any key to return...");
getchar();
fclose(fp);
return;
}
i++;
}
}
system("cls");
printf("Not Found!Press any key to return...");
fclose(fp);
getchar();
return;
}
void main()
{
char ch;
do
{
system("cls");
ch=Initialization();
if(ch=='1') showall();
if(ch=='2') addinfor();
if(ch=='3') delinfor();
if(ch=='4') searchinfor();
if(ch=='5') break;
}while(1);
system("cls");
printf("Thank you for your use!");
getchar();
}