电话储存系统。最基础的设计了`~不过我C水平也就到这了。

到百度贴吧首页
新闻   网页   贴吧   知道   MP3   图片   视频   百科
    吧内搜索 | 帮助

电话储存系统。最基础的设计了`~不过我C水平也就到这了。

1楼

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void add();
void name();
void dz();
void xm();
void del();
char flag='y';
int i,j,l,n;
struct tels
{
char name[50];
int  dh;
char  dz[20];
};
void main()
{
printf("/*****************************电话号码存储系统*******************************/\n");
printf("    /*****************************制作:刘山*******************************/\n");
while(n!=6)
{

printf("1.增加电话\n2.按姓名修改纪录\n3.按地址查询\n4.按姓名查询\n5.删除\n6.退出\n请选择:");
scanf("%d",&n);
if(n==1)
add();//增加电话
else if(n==2)
   name();//按姓名修改
else if(n==3)
     dz();//按地址查询
else if(n==4)
     xm();//按姓名查询
else if(n==5)
     del();
}
}
void add()
{
char flag='y';
struct tels tel;
FILE *fp;
if((fp=fopen("d:/c.txt","a+b"))==NULL)
{
   exit(0);
   }
while(flag=='y')
{   
printf("请输入姓名:");
scanf("%s",tel.name);
printf("请输入电话:");
scanf("%d",&tel.dh);
printf("请输入地址:");
scanf("%s",tel.dz);
    fwrite(&tel,sizeof(struct tels),1,fp);
printf("是否继续y/n:\n");
scanf(" %c",&flag);
}
fclose(fp);
}
void name()
{
FILE *fp;
struct tels tel;
char flag='y',find;
char name[30];
if((fp=fopen("d:/c.txt","r+w"))==NULL)
printf("\n\tThe system can't open the file!!");
while(flag=='y')
{

printf("请输入您要修改的用户名");
scanf("%s",name);
find='n';
rewind(fp);

while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n')
{
if(strcmp(tel.name,name)==0)
{
find='y';
break;
}
}
if(find=='y')
{

             printf("姓名%s\n",tel.name);
printf("地址%s\n",tel.dz);
printf("电话:%d\n",tel.dh);
   printf("请输入姓名");
scanf("%s",tel.name);
printf("请输入地址");
scanf("%s",tel.dz);
printf("请输入电话:");
scanf("%d",&tel.dh);

fseek(fp,-(long)(sizeof(struct tels)),1);/*文件标记向下*/
fwrite(&tel,sizeof(tel),1,fp);

}
printf("是否继续:");/*提示是否继续修改另一已存用户信息*/
scanf(" %c",&flag);
}
fclose(fp); /*关闭文件*/
}
void dz()
{
char flay='y';
char find='n';
char dz[30];
FILE *fp;
struct tels tel;
if((fp=fopen("d:/c.txt","r+b"))==NULL)
printf("\n\tThe system can't open the file!!");
while(flay=='y')
{
printf("请输入您要查的地址:");
scanf("%s",dz);
      rewind(fp);
while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n')
{
if(strcmp(dz,tel.dz)==0)
{
               find='y';
   break;
}
}
if(find=='y')
{
    printf("姓名%s\n",tel.name);
printf("地址%s\n",tel.dz);
printf("电话:%d\n",tel.dh);
            }
     printf("是否继续y/n\n");
 scanf(" %c",&flay);
}
fclose(fp);

}
void xm()//姓名查询
{
char flay='y';
char find='n';
char xm[30];
FILE *fp;
struct tels tel;
if((fp=fopen("d:/c.txt","r+b"))==NULL)
printf("\n\tThe system can't open the file!!");
while(flay=='y')
{
printf("请输入您要查的姓名:");
scanf("%s",xm);
      rewind(fp);
while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n')
{
if(strcmp(xm,tel.name)==0)
{
               find='y';
   break;
}
}
if(find=='y')
{
    printf("姓名%s\n",tel.name);
printf("地址%s\n",tel.dz);
printf("电话:%d\n",tel.dh);
            }
     printf("是否继续y/n\n");
 scanf(" %c",&flay);
}
fclose(fp);

}
void del()
{
struct tels tel;
FILE *fp;
  if((fp=fopen("d:/c.txt","r+w"))==NULL)
  printf("打开文件出错");
char flag='y';
char find='n';
    char xm[30];   
char n;

while(flag=='y') 
{
printf("请输入姓名:");
               scanf("%s",xm);
            rewind(fp);
while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n')
{
if(strcmp(xm,tel.name)==0)
{
find='y';
break;
}
}
if(find=='y')
{
 printf("姓名%s\n",tel.name);
     printf("地址%s\n",tel.dz);
     printf("电话:%d\n",tel.dh);
    printf("是否确定删除y/n:");
scanf(" %c",&n);
if(n=='y')
strcpy(tel.name,"");
strcpy(tel.dz,"");
tel.dh=0;
fseek(fp,-(long)(sizeof(struct tels)),1);
    fwrite(&tel,sizeof(tel),1,fp);
printf("删除成功\n");
}
printf("是否继续删除y/n:\n");
scanf(" %c",&flag);
}
fclose(fp);
}

61.149.79.*

2楼

good
220.174.176.*

3楼

怎么有错误啊??
222.17.252.*

4楼

有错误
221.216.70.*

5楼

错误。。我怎么没发现错误?
61.49.237.*

6楼

good
218.87.193.*

7楼

太长了,我都不知道你在说些什么,不过我是一个外行

8楼

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define NOFOUND -1
typedef struct {
 char name[16]; /* 名字 */
 char no[16]; /* 号码 */
}info;

int load(char* filename, info* head) /* 从文件load */
{
 FILE* fp;
 char tmp[16] = "";
 int flag, count;
 fp = fopen(filename, "rb");
 if (fp) {
 flag = 0;
 count = 0;
 while (fscanf(fp, "%s", tmp) != EOF) {
 if (flag == 0) {
 strcpy(head->name, tmp);
 flag = 1;
 } else {
 strcpy(head->no, tmp);
 flag = 0;
 head++;
 count++;
 }
 }
 fclose(fp);
 return count;
 } else {
 return 0;
 }
}

int save(char* filename, info* head, int count) /*保存到文件*/
{
 FILE* fp;
 int i = 0;
 fp = fopen(filename, "wb");
 if (fp) {
 while (i < count) {
 fprintf(fp, "%s\n%s\n", head->name, head->no);
 head++;
 i++;
 }
 fclose(fp);
 return 1;
 } else {
 return 0;
 }
}

int find(info* head, char* name, int count) /* 查找 name 从head里 */
{
 int i;
 for (i = 0; i < count ; i++,head++) {
 if (strcmp(name, head->name) == 0)
 return i;
 }
 return NOFOUND;
}

int del(info* head, char* name, int count) /* 从head里删除 name的那人 */
{
 int i;
 i = find(head, name, count);
 if (i != NOFOUND) {
 while (i < count - 1) {
 strcpy((head + i)->name, (head + i + 1)->name);
 strcpy((head + i)->no, (head + i + 1)->no);
 i++;
 }
 count -= 1;
 }
 return count;
}

void list(info* head, int count) /* 列表 */
{
 int i;
 printf("Name\t\tNumber\n---------------------------------------\n");
 for (i = 0; i < count ; i++) {
 printf("%s\t\t%s\n", (head + i)->name, (head + i)->no);
 }
}

int input(info* head, int count) /* 输入新人 */
{
 printf("Name ? : ");
 scanf("%s", (head + count)->name);
 printf("Number ? : ");
 scanf("%s", (head + count)->no);
 return count + 1;
}

void help(void)
{
 printf("usage : help list new delete find save quit\n");
}

int main(void)
{
 int i;
 int count = 0; /* myinfo数组中保存数据的个数 */ 
 info myinfo[100]; /* 信息储存在这个数组里 */
 char command[80]; /* 接受命令行 */

 if (count = load("t.txt", myinfo)) {
 printf("Load default file successed.\n");
 }

 while (1) {
 printf("> ");
 scanf("%s", command);
 if (strcmp(command, "quit") == 0) {
 save("t.txt", myinfo, count);
 exit(0);
 } else if (strcmp(command, "new") == 0) {
 if (count < 100)
 count = input(myinfo, count);
 } else if (strcmp(command, "delete") == 0) {
 printf("Name ? : ");
 scanf("%s", command);
 count = del(myinfo, command, count);
 } else if (strcmp(command, "save") == 0) {
 if (save("t.txt", myinfo, count))
 printf("saved!\n");
 } else if (strcmp(command, "list") == 0) {
 list(myinfo, count);
 } else if (strcmp(command, "help") == 0) {
 help();
 } else if (strcmp(command, "find") == 0) {
 printf("Name ? : ");
 scanf("%s", command);
 i = find(myinfo, command, count);
 if (i != NOFOUND) {
 printf("name : %s\n", command);
 printf("number : %s\n", myinfo[i].no);
 } else {
 printf("No found!\n");
 }
 }
 } 
 return 0;
}

221.232.181.*

9楼

靠....
你们怎么都没考虑到
如果有同名呢.....

219.144.73.*

10楼

执行后什么也没有

11楼

...传说中的。。
222.90.139.*

12楼

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define N 100

void input();//添加新用户函数
void amend();//修改用户信息函数
void delete_client();//删除用户信息函数
void demand_client();//用户信息查询函数
void collect_telephone();//用户信息汇总函数
void save_client(struct telephone message);//保存函数
void demand_name();//按用户名查询
void demand_telephone();//按电话号码查询
void paixu();//排序


struct telephone
{
char client_name[20];
char client_address[30];
char client_telephone[15];
};

void main()
{
char choice[10]="";
int len=0;
while (choice[0]!='7')
{
system("cls");
printf("\n电话管理系统\n");
printf("\n===========================\n");
printf("\n 1、添加新用户\n");
printf("\n 2、修改用户信息\n");
printf("\n 3、删除用户信息\n");
printf("\n 4、用户信息查询\n");
printf("\n 5、用户信息汇总\n");
printf("\n 6、排序\n");
printf("\n 7、退出\n");
printf("\n===========================\n");
printf("\n请选择(1-7):");
scanf("%s",choice);
len=strlen(choice);
if (len>1)
{
printf("\n请输入1-6之间的整数\n");
printf("\n按任意键返回主菜单……\n");
getchar();
getchar();
continue;
}

switch (choice[0])

{
case '1':
input();
break;
case '2':
amend();
break;
case '3':
delete_client();
break;
case '4':
demand_client();
break;
case '5':
collect_telephone();
break;
case '6':
char show();
break;
default:
break;
 
}
}
}

//添加新用户函数
void input()
{
struct telephone message;
char reply='y';
char save='y';
while (reply=='y')
{
system("cls");
printf("\n用户姓名:");
scanf("%s",message.client_name);
printf("\n家庭住址:");
scanf("%s",message.client_address);
printf("\n电话号码:");
scanf("%s",message.client_telephone);
printf("\n要保存吗?(y/n):");
scanf(" %c",&save);
if (save=='y')
{
save_client(message);
}
printf("\n要继续吗?(y/n):");
scanf(" %c",&reply);
}
printf("\n按任意键返回主菜单……\n");
getchar();
getchar();
}

//保存函数
void save_client(struct telephone message)
{
FILE *fp;
fp=fopen("message.dat","a+");
if (fp!=NULL)
{
fwrite(&message,sizeof(struct telephone),1,fp);
}
else
{
printf("\n打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
}

//修改用户信息函数
void amend()
{
struct telephone message;
FILE *fp;
char amend_name[20];
char reply='y';
char found='y';
char save='y';
int size=sizeof(struct telephone);
while (reply=='y')
{
found='n';
fp=fopen("message.dat","r+w");
if (fp!=NULL)
{
system("cls");
printf("\n请输入你要修改的姓名:");
scanf("%s",amend_name);
while ((fread(&message,size,1,fp))==1)
{
if ((strcmp(amend_name,message.client_name))==0)
{
found='y';
break;
}
}
if (found=='y')
{

printf("\n==========================================\n");
printf("\n用户姓名:%s\n",message.client_name);

222.90.139.*

13楼

printf("\n家庭地址:%s\n",message.client_address);
printf("\n电话号码:%s\n",message.client_telephone);
printf("\n==========================================\n");
printf("\n修改用户信息:\n");
printf("\n用户姓名:");
scanf("%s",message.client_name);
printf("\n家庭住址:");
scanf("%s",message.client_address);
printf("\n电话号码:");
scanf("%s",message.client_telephone);
printf("\n要保存吗?(y/n):");
scanf(" %c",&save);
if (save=='y')
{
fseek(fp,-size,1);
fwrite(&message,sizeof(struct telephone),1,fp);
}
}
else
{
printf("\n无此人信息!\n");
}
}
else
{
printf("\n打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
printf("\n要继续吗?(y/n):");
scanf(" %c",&reply);
}
printf("\n按任意键返回主菜单……\n");
getchar();
getchar();
}

//删除用户信息函数
void delete_client()
{
struct telephone message[N];
struct telephone temp_str;
struct telephone delete_str;
int i=0,j=0;
char reply='y';
char found='y';
char confirm='y';
char delete_name[20];
FILE *fp;
while (reply=='y')
{
system("cls");
fp=fopen("message.dat","r");
if (fp!=NULL)
{
i=0;
found='n';
printf("\n请输入你的姓名:");
scanf("%s",delete_name);
while ((fread(&temp_str,sizeof(struct telephone),1,fp))==1)
{
if ((strcmp(delete_name,temp_str.client_name))==0)
{
found='y';
delete_str=temp_str;
}//查找要删除的记录
else
{
message[i]=temp_str;
i++;
}//将其它无关记录保存起来
}
}
else
{
printf("\n打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
if (found=='y')
{
printf("\n==========================================\n");
printf("\n用户姓名:%s\n",delete_str.client_name);
printf("\n家庭地址:%s\n",delete_str.client_address);
printf("\n电话号码:%s\n",delete_str.client_telephone);
printf("\n==========================================\n");
}
else
{
printf("\n无此人信息,按任意键返回……\n");
getchar();
break;
}
printf("\n确定要删除吗?(y/n):");
scanf(" %c",&confirm);
if (confirm=='y')
{
fp=fopen("message.dat","w");
if (fp!=NULL)
{
for(j=0;j<i;j++)
{
fwrite(&message[j],sizeof(struct telephone),1,fp);
}
printf("\n记录已删除!!!\n");
}
else
{
printf("\n打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
}
printf("\n要继续吗?(y/n):");
scanf(" %c",&reply);
}
printf("\n按任意键返回主菜单……\n");
getchar();
}


//用户信息查询函数
void demand_client()
{
int choice=1;
while (choice!=3)
{
system("cls");
printf("\n电话查询菜单\n");
printf("\n 1 按用户姓名查询\n");
printf("\n 2 按电话号码查询\n");
printf("\n 3 返回主菜单\n");
printf("\n请选择(1-3):");
scanf("%d%*c",&choice);
if (choice>3)
{
printf("\n请输入1-6之间的整数\n");
printf("\n按任意键返回菜单……\n");

222.90.139.*

14楼

getchar();
continue;
}
if (choice==1)
{
demand_name();
}
else if (choice==2)
{
demand_telephone();
}
}
}

//按用户名查询
void demand_name()
{
struct telephone message;
FILE *fp;
char amend_name[20];
char reply='y';
char found='y';
while (reply=='y')
{
found='n';
fp=fopen("message.dat","r+w");
if (fp!=NULL)
{
system("cls");
printf("\n请输入你的姓名:");
scanf("%s",amend_name);
while ((fread(&message,sizeof(struct telephone),1,fp))==1)
{
if ((strcmp(amend_name,message.client_name))==0)
{
found='y';
break;
}
}
if (found=='y')
{

printf("\n==========================================\n");
printf("\n用户姓名:%s\n",message.client_name);
printf("\n家庭地址:%s\n",message.client_address);
printf("\n电话号码:%s\n",message.client_telephone);
printf("\n==========================================\n");
}
else
{
printf("\n无此人信息!\n");
}
}
else
{
printf("\n打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
printf("\n要继续吗?(y/n):");
scanf(" %c",&reply);
}
printf("\n按任意键返回主菜单……\n");
getchar();
getchar();
}

//按电话号码查询
void demand_telephone()
{
struct telephone message;
FILE *fp;
char telephone[20];
char reply='y';
char found='y';
while (reply=='y')
{
found='n';
fp=fopen("message.dat","r+w");
if (fp!=NULL)
{
system("cls");
printf("\n请输入你的电话号码:");
scanf("%s",telephone);
while ((fread(&message,sizeof(struct telephone),1,fp))==1)
{
if ((strcmp(telephone,message.client_telephone))==0)
{
found='y';
break;
}
}
if (found=='y')
{

printf("\n==========================================\n");
printf("\n用户姓名:%s\n",message.client_name);
printf("\n家庭地址:%s\n",message.client_address);
printf("\n电话号码:%s\n",message.client_telephone);
printf("\n==========================================\n");
}
else
{
printf("\n无此电话号码的有关信息!\n");
}
}
else
{
printf("\n打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
printf("\n要继续吗?(y/n):");
scanf(" %c",&reply);
}
printf("\n按任意键返回主菜单……\n");
getchar();
getchar();
}

//用户信息汇总函数
void collect_telephone()
{
struct telephone message;
FILE *fp;
fp=fopen("message.dat","r");
if (fp!=NULL)
{
system("cls");
printf("\n用户姓名\t\t家庭地址\t\t电话号码\n");
while ((fread(&message,sizeof(struct telephone),1,fp))==1)
{
printf("\n%-24s",message.client_name);
printf("%-25s",message.client_address);
printf("%-12s\n",message.client_telephone);
}
}
else
{
printf("\n打开文件时出现错误,按任意键返回……\n");
getchar();
return;
}
fclose(fp);
printf("\n按任意键返回主菜单……\n");
getch();
}


//按照用户的姓名进行排序
void paixu()
{
FILE *fp;

struct telephone message,temp[N],a;

int i,j,k;

fp=fopen("message.dat","r");

for (i=0;(fread(&message,sizeof(struct telephone),1,fp))==1;i++)
{
temp[i]=message;
}
for (k=0;k<i-1;k++)
{
for (j=k+1;j<i;j++)
{
if ((strcmp(temp[k].client_name,temp[j].client_name))>0)
{
a=temp[k];
temp[k]=temp[j];
temp[j]=a;
}
}
}
fclose(fp);
fp=fopen("message.dat","w");
if (fp!=NULL)
{
for (j=0;j<i;j++)
{
fwrite(&temp[j],sizeof(struct telephone),1,fp);
}
}
fclose(fp);
getch();
}

61.167.60.*

15楼

这是体力劳动
61.177.161.*

16楼

流比
220.166.100.*

17楼

没有做到排序功能
193.63.37.*

18楼

应该按字母顺序排序阿。
220.169.1.*

19楼

已经不错了
218.94.94.*

20楼

怎么按字母顺序排序阿
218.62.34.*

21楼

第一次运行完add()后,不能yong "y/n"来选择啊,指教指教啊!!!
222.182.119.*

22楼

#include<stdio.h> 
#include<string.h> 
#include<stdlib.h> 
void add(); 
void name(); 
void address(); 
void index(); 
void del(); 
int i,j,l,n; 
struct tels 

 char name[20]; 
 int numbers; 
 char address[50]; 
}; 
void main() 

 printf("/*****************************电话号码存储系统*******************************/\n"); 
 while(n!=6) 
 { 
 printf("1.增加电话\n2.按姓名修改纪录\n3.按地址查询\n4.按姓名查询\n5.删除\n6.退出\n请选择:"); 
 scanf("%d",&n); 
 if(n==1) 
 add();//增加电话 
 else if(n==2) 
 name();//按姓名修改 
 else if(n==3) 
 address();//按地址查询 
 else if(n==4) 
 index();//按姓名查询 
 else if(n==5) 
 del(); 
 } 

/******************** 增加电话记录 ********************/
void add() 

 char flag='y'; 
 struct tels tel; 
 FILE *fp; 
 if((fp=fopen("d:/c.txt","ab+"))==NULL) 
 { 
 exit(0); 
 } 
 while(flag=='y') 
 { 
 printf("请输入姓名:"); 
 scanf("%s",tel.name); 
 printf("请输入电话:"); 
 scanf("%d",&tel.numbers); 
 printf("请输入地址:"); 
 scanf("%s",tel.address); 
 fwrite(&tel,sizeof(struct tels),1,fp); 
 printf("是否继续y/n:\n"); 
 scanf(" %c",&flag); 
 } 
 fclose(fp); 

/******************** 按姓名修改纪录 ********************/
void name() 

 FILE *fp; 
 struct tels tel; 
 char flag='y',find; 
 char name[20]; 
 if((fp=fopen("d:/c.txt","a+"))==NULL) 
 printf("\n\tThe system can't open the file!!"); 
 while(flag=='y') 
 { 
 printf("请输入您要修改的用户名"); 
 scanf("%s",name); 
 find='n'; 
 rewind(fp); 
 while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n') 
 { 
 if(strcmp(tel.name,name)==0) 
 { 
 find='y'; 
 break; 
 } 
 } 
 if(find=='y') 
 { 
 printf("姓名%s\n",tel.name); 
 printf("地址%s\n",tel.address); 
 printf("电话:%d\n",tel.numbers); 
 printf("请输入姓名"); 
 scanf("%s",tel.name); 
 printf("请输入地址"); 
 scanf("%s",tel.address); 
 printf("请输入电话:"); 
 scanf("%d",&tel.numbers); 
 fseek(fp,-(long)(sizeof(struct tels)),1);/*文件标记向下*/ 
 fwrite(&tel,sizeof(tel),1,fp); 
 } 
 printf("是否继续:");/*提示是否继续修改另一已存用户信息*/ 
 scanf(" %c",&flag); 
 } 
 fclose(fp); /*关闭文件*/ 

/******************** 按地址查询 ********************/
void address() 

 char flay='y'; 
 char find='n'; 
 char address[50]; 
 FILE *fp; 
 struct tels tel; 
 if((fp=fopen("d:/c.txt","r+"))==NULL) 
 printf("\n\tThe system can't open the file!!"); 
 while(flay=='y') 
 { 
 printf("请输入您要查的地址:"); 
 scanf("%s",address); 
 rewind(fp); 
 while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n') 
 { 
 if(strcmp(address,tel.address)==0) 
 { 
 find='y'; 
 break; 
 } 
 } 
 if(find=='y') 
 { 
 printf("姓名%s\n",tel.name); 
 printf("地址%s\n",tel.address); 
 printf("电话:%d\n",tel.numbers); 
 } 
 printf("是否继续y/n\n"); 
 scanf(" %c",&flay); 
 } 
 fclose(fp); 

/******************** 按姓名查询 ********************/
void index() 

 char flay='y'; 
 char find='n'; 
 char index[20]; 
 FILE *fp; 
 struct tels tel; 
 if((fp=fopen("d:/c.txt","r+"))==NULL) 
 printf("\n\tThe system can't open the file!!"); 
 while(flay=='y') 
 { 
 printf("请输入您要查的姓名:"); 
 scanf("%s",index); 
 rewind(fp); 
 while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n') 
 { 
 if(strcmp(index,tel.name)==0) 
 { 
 find='y'; 
 break; 
 } 
 } 
 if(find=='y') 
 { 
 printf("姓名%s\n",tel.name); 
 printf("地址%s\n",tel.address); 
 printf("电话:%d\n",tel.numbers); 
 } 
 printf("是否继续y/n\n"); 
 scanf(" %c",&flay); 
 } 
 fclose(fp); 

/******************** 删除一条记录 ********************/
void del() 

 struct tels tel; 
 FILE *fp; 
 char flag='y'; 
 char find='n'; 
 char index[20]; 
 char n; 
 if((fp=fopen("d:/c.txt","a+"))==NULL) 
 printf("打开文件出错");
 while(flag=='y') 
 { 
 printf("请输入姓名:"); 
 scanf("%s",index); 
 rewind(fp); 
 while((fread(&tel,sizeof(tel),1,fp))==1&&find=='n') 
 { 
 if(strcmp(index,tel.name)==0) 
 { 
 find='y'; 
 break; 
 } 
 } 
 if(find=='y') 
 { 
 printf("姓名%s\n",tel.name); 
 printf("地址%s\n",tel.address); 
 printf("电话:%d\n",tel.numbers); 
 printf("是否确定删除y/n:"); 
 scanf(" %c",&n); 
 if(n=='y') 
 strcpy(tel.name,""); 
 strcpy(tel.address,""); 
 tel.numbers=0; 
 fseek(fp,-(long)(sizeof(struct tels)),1); 
 fwrite(&tel,sizeof(tel),1,fp); 
 printf("删除成功\n"); 
 } 
 printf("是否继续删除y/n:\n"); 
 scanf(" %c",&flag); 
 } 
 fclose(fp); 
}

218.83.192.*

23楼

谁能分析下??呵呵,
210.29.252.*

24楼

我们的C语言课程设计作业中也有这道题 
我选的也是它 
做成了字符界面和键盘控制的哦 
源代码和EXE说明都在邮箱里 
jurozn@163.com 
密码是171835 
谁有兴趣可以去看一下 
值得一看啊 
我交作业的时候老师都很满意啊

60.167.112.*

26楼

还用到内存,汗,不懂,24楼的

27楼

24楼这是什么精神?这是共产主义精神!!
218.22.69.*

29楼

#include<stdio.h>
#include<string.h>
struct ps
{
 char num[10];
 char name[10];
 char sex[3];
 int age;
 char addr[40];
 char phone[12];
}; 
int total=0;
char RecFile[]="class.dat";

main()

 void SaveRec(struct ps *pt); 
 void InputRec(struct ps *pt);
 void ProcessList(struct ps *pt);
 void ProcessSearch(struct ps *pt);
 void ProcessInsert(struct ps *pt);
 void ProcessDelete(struct ps *pt);
 void ProcessCmd(struct ps *pt);
 struct ps person[100],*pt;
 int i,j;
 FILE *fp;
 pt=person;
 fp=fopen(RecFile,"r");
 if(fp==NULL){
 InputRec(pt);
 }else{
 printf("Loading exists file %s\n",RecFile);
 for(i=0;i<100;i++){
 if (fread(&person[i],sizeof(struct ps),1,fp)==0) break;
 total++;
 }
 fclose(fp);
 printf("Completed!\n\n");
 ProcessList(pt);
 }
 pt=person;
 ProcessCmd(pt);
}

void SaveRec(struct ps *pt)
{
 FILE *fp;
 int i;
 fp=fopen(RecFile,"w");
 for(i=0;i<total;i++){
 fwrite(pt,sizeof(struct ps),1,fp);
 pt++;
 }
 fclose(fp);
}

void InputRec(struct ps *pt)
{
 int b;
 struct ps *temppt;
 b=1;
 temppt=pt;
 pt+=total;
 while(b){
 printf("Please input No.%d student info\n",total+1);
 do{
 printf("Num:");
 gets(pt->num);
 } while(!strcmp(pt->num,"\0"));
 do{
 printf("Name:");
 gets(pt->name);
 } while(!strcmp(pt->name,"\0"));
 do{
 printf("Sex:");
 gets(pt->sex);
 } while(!strcmp(pt->sex,"\0"));
 printf("Age:");
 scanf("%d",&pt->age);
 getchar();
 do{
 printf("Address:"); 
 gets(pt->addr);
 } while(!strcmp(pt->addr,"\0"));
 do{
 printf("Phone:");
 gets(pt->phone);
 } while(!strcmp(pt->phone,"\0"));
 pt++;
 total++;
 printf("\nInserted! Continue? (y/n)");
 if(getchar()=='n') b=0;
 printf("\n");
 getchar();
 }
 SaveRec(temppt);
}

void ProcessList(struct ps *pt)
{
 int i;
 printf("No.\tNum\tName\t Sex\tAge\tPhone\t Address\n");
 for(i=0;i<total;i++){
 printf("%d%10s\t%-10s%-3s%5d\t%-12s%-26s\n",i+1,pt->num,pt->name,pt->sex,pt->age,pt->phone,pt->addr);
 pt++;
 }
}

void ProcessSearch(struct ps *pt)
{
 char cmd[10];
 int i,found=0;
 printf(">search:");
 gets(cmd);
 printf("No.\tNum\tName\t Sex\tAge\tPhone\t Address\n");
 for(i=0;i<total;i++){
 if((!strcmp(cmd,pt->num))||(!strcmp(cmd,pt->name))){
 printf("%d%10s\t%-10s%-3s%5d\t%-12s%-26s\n",i+1,pt->num,pt->name,pt->sex,pt->age,pt->phone,pt->addr);
 found++;
 }
 pt++;
 }
 printf("\n");
 if(found==0) printf("Not Found!");
 else if(found==1) printf("Found 1 Record!");
 else printf("Found %d Records!",found); 
 printf("\n"); 
}

void ProcessInsert(struct ps *pt) 
{
 InputRec(pt);
}
 
void ProcessDelete(struct ps *pt) 
{
 int i,j,count=0;
 char cmd[10];
 struct ps *temppt;
 temppt=pt;
 printf(">delete:");
 gets(cmd);
 for(i=0;i<total;i++){
 if((!strcmp(cmd,pt->num))||(!strcmp(cmd,pt->name))){
 for(j=0;j<total-i-1;j++){
 strcpy(pt[j].num,pt[j+1].num);
 strcpy(pt[j].name,pt[j+1].name);
 strcpy(pt[j].sex,pt[j+1].sex);
 pt[j].age=pt[j+1].age;
 strcpy(pt[j].addr,pt[j+1].addr);
 strcpy(pt[j].phone,pt[j+1].phone);
 }
 count++;
 total--; 
 }
 pt++;
 }
 if(count==0) printf("Can't Find the Record!\nNo Record Deleted!");
 else if(count==1) printf("Deleted 1 Record!");
 else printf("Deleted %d Records!",count);
 printf("\n");
 SaveRec(temppt);
}
 
void ProcessCmd(struct ps *pt)
{
 char cmd[10];
 while(1){
 printf("\t--------------------------------\n");
 printf("\t|List|Search|Insert|Delete|Exit|\n");
 printf("\t--------------------------------\n");
 printf(">");
 gets(cmd);
 if(!strcmp(cmd,"list")) ProcessList(pt);
 if(!strcmp(cmd,"search")) ProcessSearch(pt);
 if(!strcmp(cmd,"insert")) ProcessInsert(pt);
 if(!strcmp(cmd,"delete")) ProcessDelete(pt);
 if(!strcmp(cmd,"exit")) break;;
 }
}

30楼

挺不错的,我刚开始学C三天.看得有点困难,但基本能读下来,那的循环语句有点不懂.
221.12.26.*

31楼

good

32楼

#include <stdio.h>
#include <string.h>
struct person
{
char name[18];
char tel[15];
char addr[50];
};
char filename[20];
FILE *fp;
void create();
void output();
void search();
void append();
void modify();
void delet();
main()
{
int m;
create();
while(1)
{
printf("\n\n添加,请按1");
printf("\n查找,请按2");
printf("\n修改,请按3");
printf("\n删除,请按4");
printf("\n输出,请按5");
printf("\n退出,请按0\n");
 scanf("%d",&m);
if(m>=0&&m<=5)

 switch(m)
 {
 case 1 : append();
 break;
 case 2 : search();
 break;
 case 3 : modify();
 break;
 case 4 : delet();
 break;
 case 5 : output();
 break;
 case 0 : exit();
 }
 printf("\n\n操作完毕,请再次选择!");
}
else
 printf("\n\n操作错误,请重新选择!");

}

void create()
{
struct person one;
//long s1;
printf("\n 请输入通讯簿名:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("\n不能建立通讯簿!");
//exit();
}
fprintf(fp,"%-10s%-20s%-50s%\n","姓名","电话号码","住址");
printf("\n请输入姓名,电话号码及住址(以0结束)\n");
scanf("%s",one.name);
while(strcmp(one.name,"0"))
{
scanf("%s%s",one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);
scanf("%s",one.name);
}
fclose(fp);
}

void output()
{
struct person one;
if((fp=fopen(filename,"r"))==NULL)
{
printf("\n不能打开通讯簿!");
//exit();
}
printf("\n\n%20s\n","通 讯 簿");
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
printf("%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);

fclose(fp);
}

void append()
{
struct person one;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打开通讯簿!");
//exit();
}
printf("\n请输入添加的姓名,电话号码及住址\n");
scanf("%s%s%s\n",one.name,one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);
fclose(fp);
}

void search()
{
int k=0;
char namekey[8];
struct person one;
printf("\n请输入要查找的姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\n不能打开通讯簿!");
//exit();
}
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
printf("\n\n已查找到,记录为:");
printf("%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);
k=1;
}
}
if(!k)
printf("\n\n对不起!通讯簿中没有此人。");
fclose(fp);
}
// 修改以前的打开方式!
void modify()
{
int k=0;
long offset;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯簿!");
//exit();
}
while(!feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
printf("\n已找到,记录为:");
printf("%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);
printf("\n请输入新姓名,电话号码及住址:");
scanf("%s%s%s\n",one.name,one.tel,one.addr);
fseek(fp,offset,SEEK_SET);
printf("%ld",ftell(fp));
fprintf(fp,"%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);
}
else
printf("\n对不起!通讯簿中没有此人");
fclose(fp);
}

void delet()
{
int m,k=0;
long offset1;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯簿!");
//exit();
}
while(!feof(fp))
{
offset1=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
 {
 k=1;
 break;
 }
}

if(k)
{
printf("\n已找到,记录为:");
printf("%-10s%-20s%-50s%\n",one.name,one.tel,one.addr);
printf("\n确实要删除,按1,不删除,按0:");
scanf("%d",&m);
if(m)
 {
 fseek(fp,offset1,SEEK_SET);
 fprintf(fp,"%-10s%-20s%-50s%\n","","","");
 }
}

else
printf("\n对不起!通讯簿中没有此人");
fclose(fp);
}

发表回复

内 容:
用户名:
  
©2010 Baidu 贴吧协议  意见反馈