second commit

master
Tmb115115 6 years ago
parent 25df5eddbc
commit 6230424530

@ -0,0 +1,246 @@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 50
struct TX{
char name[10];
char jiguan[20];
char d1[20],d2[20];
char ema[30];
}inf [SIZE];
void luru(){
system("cls"); //清屏
int i,n;
FILE *fp;
fp=fopen("date.dat","wb");//创建二进制文件进行写
//rewind(fp);
printf("\t\t\t\t\t\t请输入需要录入的个数:");
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("\t\t\t\t\t\t请输入录入的第%d个人的姓名",i);
scanf("%s",inf[i].name);
printf("\t\t\t\t\t\t请输入籍贯:");
scanf("%s",inf[i].jiguan);
printf("\t\t\t\t\t\t请输入电话号码1");
scanf("%s",inf[i].d1);
printf("\t\t\t\t\t\t请输入电话号码2: ");
scanf("%s",inf[i].d2);
printf("\t\t\t\t\t\t请输入电子邮箱:");
scanf("%s",inf[i].ema);
printf("\n\n\n");
fwrite(&inf[i],sizeof(struct TX),1,fp);//将信息写入二进制文件
}if(n>=1)printf("\t\t\t\t\t\t信息录入完成!\n\n\n\n");
else
printf("\t\t\t\t\t\t输入错误!\n\n\n\n");
fclose(fp);//打开文件后要关闭文件,否则可能会造成数据的丢失
}
void addmore(){
system("cls"); //清屏
int i,n;
FILE *fp;
fp=fopen("date.dat","ab+");//打开二进制文件进行读,写,追加
//rewind(fp);
printf("\t\t\t\t\t\t请输入需要增加的个数:");
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("\t\t\t\t\t\t请输入增加的第%d个人的姓名",i);
scanf("%s",inf[i].name);
printf("\t\t\t\t\t\t请输入籍贯:");
scanf("%s",inf[i].jiguan);
printf("\t\t\t\t\t\t请输入电话号码1");
scanf("%s",inf[i].d1);
printf("\t\t\t\t\t\t请输入电话号码2: ");
scanf("%s",inf[i].d2);
printf("\t\t\t\t\t\t请输入电子邮箱:");
scanf("%s",inf[i].ema);
printf("\n\n\n");
fwrite(&inf[i],sizeof(struct TX),1,fp);//将信息写入二进制文件
}if(n>=1)printf("\t\t\t\t\t\t信息录入完成!\n\n\n\n");
else
printf("\t\t\t\t\t\t输入错误!\n\n\n\n");
fclose(fp);//打开文件后要关闭文件,否则可能会造成数据的丢失
}
void browse(){
system("cls");
FILE *fp;int i=0;
fp=fopen("date.dat","rb");//打开二进制文件进行只读;
printf("\t\t\t****************************************************************\n");
printf("\t\t\t***** 信息列表 *****\n");
printf("\t\t\t*****------------------------------------------------------*****\n");
for(i=0;fread(&inf[i],sizeof(struct TX),1,fp)==1;i++){//从二进制文件中读出信息。若fread(&inf[i],sizeof(struct TX),1,fp)=1代表文件到末尾。
printf("\t\t\t*****姓名:%s\n",inf[i].name);
printf("\t\t\t*****籍贯:%s\n",inf[i].jiguan);
printf("\t\t\t*****电话号码1%s\n",inf[i].d1);
printf("\t\t\t*****电话号码2%s\n",inf[i].d2);
printf("\t\t\t*****邮箱:%s\n\n\n\n",inf[i].ema);
}printf("\n\n\n");
fclose(fp);
}
void change(){
system("cls");
FILE *fp;
char a[20],b[20];
int i,flag=0,n,f=0;
fp=fopen("date.dat","rb");//打开二进制文件进行只读;
printf("\t\t\t\t\t\t请输入需要修改信息的姓名:");
scanf("%s",a);
for(i=0;fread(&inf[i],sizeof(struct TX),1,fp)==1;i++){
if(strcmp(a,inf[i].name)==0){//strcmp为比较函数若a=inf[i].name则返回0
printf("\t\t\t\t\t\t当前信息:\n");
printf("\t\t\t\t\t\t姓名:%s\n",inf[i].name);
printf("\t\t\t\t\t\t籍贯:%s\n",inf[i].jiguan);
printf("\t\t\t\t\t\t电话号码1%s\n",inf[i].d1);
printf("\t\t\t\t\t\t电话号码2%s\n",inf[i].d2);
printf("\t\t\t\t\t\t邮箱:%s\n\n\n",inf[i].ema);
flag=1;
break;
}
}fclose(fp);
fp=fopen("date.dat","rb+");
fseek(fp,i*sizeof(struct TX),0);//将文件指针移到需要改变数据的位置,否则会出错
if(flag==0)printf("\t\t\t\t\t\t输入错误!\n\n\n\n\n") ;
if(flag==1){
printf("\t\t\t请输入需要修改的信息1.姓名 2.籍贯 3.电话号码1 4.电话号码2 5.邮箱 6.不需要继续修改了\n");
printf("\t\t\t\t\t\t修改信息:");
for(;f==0;){
scanf("%d",&n);
switch(n){
case 1:printf("\t\t\t\t\t\t将姓名修改为:");
scanf("%s",inf[i].name);
printf("\n");break;
case 2:printf("\t\t\t\t\t\t将籍贯修改为:");
scanf("%s",inf[i].jiguan);printf("\n");break;
case 3:printf("\t\t\t\t\t\t将电话号码1修改为");
scanf("%s",inf[i].d1);printf("\n");break;
case 4:printf("\t\t\t\t\t\t将电话号码2修改为");
scanf("%s",inf[i].d2);printf("\n");break;
case 5:printf("\t\t\t\t\t\t将邮箱修改为:");
scanf("%s",inf[i].ema);printf("\n");break;
case 6:f=1;printf("\n\n\n");break;
}if(n!=6){
printf("\t\t\t\t\t\t还需修改的信息是:");
fwrite(&inf[i],sizeof(struct TX),1,fp);//将修改后的信息写入文件
}
}
fclose(fp);
}
}
void del(){
system("cls");
FILE *fp;
int i,j,flag=1;
char a[20],n;
fp=fopen("date.dat","rb");//以只读的方式打开文件
printf("\t\t\t\t\t\t请输入要删除的联系人:");
scanf("%s",a);
for(i=0;fread(&inf[i],sizeof(struct TX),1,fp)==1;i++){//从文件中读取信息
if(strcmp(a,inf[i].name)==0)flag=0;//比较
}
if(flag==1){
printf("\t\t\t\t\t\t输入错误,此联系人不存在!\n\n\n\n");
} if(flag==0){
printf("\t\t\t\t\t\t确定删除请输入Y否则输入N");
getchar();
scanf("%c",&n);
if(n=='N')printf("\t\t\t\t\t\t删除失败!\n\n\n");
if(n=='Y'){
fp=fopen("date.dat","wb+");//打开新二进制文件进行读,写 ,将原有信息覆盖。(替换掉原文件)
for(j=0;j<i;j++){
if(strcmp(a,inf[j].name)!=0)fwrite(&inf[j],sizeof(struct TX),1,fp);//将除了要删除的姓名外的信息写入文件;
}printf("\t\t\t\t\t\t删除成功!\n\n\n\n");
}else
printf("\t\t\t\t\t\t输入错误!\n\n\n\n");
}
fclose(fp);
}
void search(){
system("cls");
FILE *fp;
int i,flag=0;
char a[20];
fp=fopen("date.dat","rb");//以只读方式打开二进制文件
rewind(fp); //将指针指向文件开头,从文件开头查找
printf("\t\t\t\t\t\t请输入需要查询信息的姓名:");
scanf("%s",a);
for(i=0;fread(&inf[i],sizeof(struct TX),1,fp)==1;i++){
if(strcmp(a,inf[i].name)==0){//找到对应的信息则输出
printf("\n\n\n");
printf("\t\t\t\t\t\t------------------------\t\t\t\n");
printf("\t\t\t\t\t\t姓名:%s\n",inf[i].name);
printf("\t\t\t\t\t\t籍贯:%s\n",inf[i].jiguan);
printf("\t\t\t\t\t\t电话号码1%s\n",inf[i].d1);
printf("\t\t\t\t\t\t电话号码2%s\n",inf[i].d2);
printf("\t\t\t\t\t\t邮箱:%s\n",inf[i].ema);
printf("\t\t\t\t\t\t------------------------\t\t\t\n\n\n\n\n");
flag=1;
break;
}
}if(flag==0)printf("\t\t\t\t\t\t输入错误!\n\n\n");
fclose(fp);
}
int main(){
int n;
while(1){
printf("\t\t\t\t\t\t**************\t\t\t\n");
printf("\t\t\t\t\t\t通讯录管理系统\t\t\t\n");
printf("\t\t\t\t\t\t 0.录入信息 \t\t\t\n");
printf("\n");
printf("\t\t\t\t\t\t 1.增加信息 \t\t\t\n");
printf("\n");
printf("\t\t\t\t\t\t 2.浏览信息 \t\t\t\n");
printf("\n");
printf("\t\t\t\t\t\t 3.查询信息 \t\t\t\n");
printf("\n");
printf("\t\t\t\t\t\t 4.修改信息 \t\t\t\n");
printf("\n");
printf("\t\t\t\t\t\t 5.删除信息 \t\t\t\n");
printf("\n");
printf("\t\t\t\t\t\t 6.退出系统 \t\t\t\n");
printf("\t\t\t\t\t\t**************\t\t\t\n");
printf("\t\t\t\t\t\t请输入操作(1-6)");
scanf("%d",&n);
switch(n){
case 0:luru();break;
case 1:addmore();break;
case 2:browse();break;
case 3:search();break;
case 4:change();break;
case 5:del();break;
case 6:printf("\n\n\n\n");
printf("\t\t\t\t\t\t**************\t\t\t\n\n\n");
printf("\t\t\t\t\t\t感谢您的使用 再见!\n\n\n");
printf("\t\t\t\t\t\t**************\n\n\n\n\n");
return 0;
}
}
return 0;
}

@ -1,45 +0,0 @@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 50
void addmore(){
system("cls"); //清屏
struct TX{
char name[10];
char jiguan[20];
char d1[20],d2[20];
char ema[30];
}inf [SIZE];
int i,n;
FILE *fp;
fp=fopen("date.dat","ab+");//打开二进制文件进行读,写,追加
//rewind(fp);
printf("\t\t\t\t\t\t请输入需要增加的个数:");
scanf("%d",&n);
for(i=1;i<=n;i++){
printf("\t\t\t\t\t\t请输入增加的第%d个人的姓名",i);
scanf("%s",inf[i].name);
printf("\t\t\t\t\t\t请输入籍贯:");
scanf("%s",inf[i].jiguan);
printf("\t\t\t\t\t\t请输入电话号码1");
scanf("%s",inf[i].d1);
printf("\t\t\t\t\t\t请输入电话号码2: ");
scanf("%s",inf[i].d2);
printf("\t\t\t\t\t\t请输入电子邮箱:");
scanf("%s",inf[i].ema);
printf("\n\n\n");
fwrite(&inf[i],sizeof(struct TX),1,fp);//将信息写入二进制文件
}if(n>=1)printf("\t\t\t\t\t\t信息录入完成!\n\n\n\n");
else
printf("\t\t\t\t\t\t输入错误!\n\n\n\n");
fclose(fp);//打开文件后要关闭文件,否则可能会造成数据的丢失
}

@ -1,27 +0,0 @@
#include<stdio.h>
#include<stdlib.h>
#define SIZE 50
void browse(){
system("cls");
struct TX{
char name[10];
char jiguan[20];
char d1[20];
char d2[20];
char ema[30];
}inf [SIZE];
FILE *fp;int i=0;
fp=fopen("date.dat","rb");//打开二进制文件进行只读;
printf("\t\t\t****************************************************************\n");
printf("\t\t\t***** 信息列表 *****\n");
printf("\t\t\t*****------------------------------------------------------*****\n");
for(i=0;fread(&inf[i],sizeof(struct TX),1,fp)==1;i++){//从二进制文件中读出信息。若fread(&inf[i],sizeof(struct TX),1,fp)=1代表文件到末尾。
printf("\t\t\t*****姓名:%s\n",inf[i].name);
printf("\t\t\t*****籍贯:%s\n",inf[i].jiguan);
printf("\t\t\t*****电话号码1%s\n",inf[i].d1);
printf("\t\t\t*****电话号码2%s\n",inf[i].d2);
printf("\t\t\t*****邮箱:%s\n\n\n\n",inf[i].ema);
}printf("\n\n\n");
fclose(fp);
}

@ -1,71 +0,0 @@
/*fseek()
fseek(fp, 0L, SEEK_END);
0
fseek(fp,50L,0)fseek(fp,50L,SEEK_SET);
50
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 50
void change(){
system("cls");
struct TX{
char name[10];
char jiguan[20];
char d1[20],d2[20];
char ema[30];
}inf [SIZE];
FILE *fp;
char a[20],b[20];
int i,flag=0,n,f=0;
fp=fopen("date.dat","rb");//打开二进制文件进行只读;
printf("\t\t\t\t\t\t请输入需要修改信息的姓名:");
scanf("%s",a);
for(i=0;fread(&inf[i],sizeof(struct TX),1,fp)==1;i++){
if(strcmp(a,inf[i].name)==0){//strcmp为比较函数若a=inf[i].name则返回0
printf("\t\t\t\t\t\t当前信息:\n");
printf("\t\t\t\t\t\t姓名:%s\n",inf[i].name);
printf("\t\t\t\t\t\t籍贯:%s\n",inf[i].jiguan);
printf("\t\t\t\t\t\t电话号码1%s\n",inf[i].d1);
printf("\t\t\t\t\t\t电话号码2%s\n",inf[i].d2);
printf("\t\t\t\t\t\t邮箱:%s\n\n\n",inf[i].ema);
flag=1;
break;
}
}fclose(fp);
fp=fopen("date.dat","rb+");
fseek(fp,i*sizeof(struct TX),0);//将文件指针移到需要改变数据的位置,否则会出错
if(flag==0)printf("\t\t\t\t\t\t输入错误!\n\n\n\n\n") ;
if(flag==1){
printf("\t\t\t请输入需要修改的信息1.姓名 2.籍贯 3.电话号码1 4.电话号码2 5.邮箱 6.不需要继续修改了\n");
printf("\t\t\t\t\t\t修改信息:");
for(;f==0;){
scanf("%d",&n);
switch(n){
case 1:printf("\t\t\t\t\t\t将姓名修改为:");
scanf("%s",inf[i].name);
printf("\n");break;
case 2:printf("\t\t\t\t\t\t将籍贯修改为:");
scanf("%s",inf[i].jiguan);printf("\n");break;
case 3:printf("\t\t\t\t\t\t将电话号码1修改为");
scanf("%s",inf[i].d1);printf("\n");break;
case 4:printf("\t\t\t\t\t\t将电话号码2修改为");
scanf("%s",inf[i].d2);printf("\n");break;
case 5:printf("\t\t\t\t\t\t将邮箱修改为:");
scanf("%s",inf[i].ema);printf("\n");break;
case 6:f=1;printf("\n\n\n");break;
}if(n!=6){
printf("\t\t\t\t\t\t还需修改的信息是:");
fwrite(&inf[i],sizeof(struct TX),1,fp);//将修改后的信息写入文件
}
}
fclose(fp);
}
}

@ -1,43 +0,0 @@
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 50
void del(){
system("cls");
struct TX{
char name[10];
char jiguan[20];
char d1[20],d2[20];
char ema[30];
}inf [SIZE];
FILE *fp;
int i,j,flag=1;
char a[20],n;
fp=fopen("date.dat","rb");//以只读的方式打开文件
printf("\t\t\t\t\t\t请输入要删除的联系人:");
scanf("%s",a);
for(i=0;fread(&inf[i],sizeof(struct TX),1,fp)==1;i++){//从文件中读取信息
if(strcmp(a,inf[i].name)==0)flag=0;//比较
}
if(flag==1){
printf("\t\t\t\t\t\t输入错误,此联系人不存在!\n\n\n\n");
} if(flag==0){
printf("\t\t\t\t\t\t确定删除请输入Y否则输入N");
getchar();
scanf("%c",&n);
if(n=='N')printf("\t\t\t\t\t\t删除失败!\n\n\n");
if(n=='Y'){
fp=fopen("date.dat","wb+");//打开新二进制文件进行读,写 ,将原有信息覆盖。(替换掉原文件)
for(j=0;j<i;j++){
if(strcmp(a,inf[j].name)!=0)fwrite(&inf[j],sizeof(struct TX),1,fp);//将除了要删除的姓名外的信息写入文件;
}printf("\t\t\t\t\t\t删除成功!\n\n\n\n");
}else
printf("\t\t\t\t\t\t输入错误!\n\n\n\n");
}
fclose(fp);
}

Binary file not shown.

@ -1,46 +0,0 @@
/*rewind(fp) 该函数是:将文件指针重新指向一个流的开头。
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 50
void search(){
system("cls");
struct TX{
char name[10];
char jiguan[20];
char d1[20],d2[20];
char ema[30];
}inf [SIZE];
FILE *fp;
int i,flag=0;
char a[20];
fp=fopen("date.dat","rb");//以只读方式打开二进制文件
rewind(fp); //将指针指向文件开头,从文件开头查找
printf("\t\t\t\t\t\t请输入需要查询信息的姓名:");
scanf("%s",a);
for(i=0;fread(&inf[i],sizeof(struct TX),1,fp)==1;i++){
if(strcmp(a,inf[i].name)==0){//找到对应的信息则输出
printf("\n\n\n");
printf("\t\t\t\t\t\t------------------------\t\t\t\n");
printf("\t\t\t\t\t\t姓名:%s\n",inf[i].name);
printf("\t\t\t\t\t\t籍贯:%s\n",inf[i].jiguan);
printf("\t\t\t\t\t\t电话号码1%s\n",inf[i].d1);
printf("\t\t\t\t\t\t电话号码2%s\n",inf[i].d2);
printf("\t\t\t\t\t\t邮箱:%s\n",inf[i].ema);
printf("\t\t\t\t\t\t------------------------\t\t\t\n\n\n\n\n");
flag=1;
break;
}
}if(flag==0)printf("\t\t\t\t\t\t输入错误!\n\n\n");
fclose(fp);
}

Binary file not shown.

Binary file not shown.

@ -1,48 +0,0 @@
#include<stdio.h>
#include<stdlib.h>
#define SIZE 50
#include"DEL.h"
#include"BROWSE.h"
#include"SEARCH.h"
#include"CHANGE.h"
#include"ADDMORE.h"
struct TX{
char name[10];
char jiguan[20];
char d1[20],d2[20];
char ema[30];
}inf [SIZE];
int main(){
int n;
while(1){
printf("\t\t\t\t\t\t**************\t\t\t\n");
printf("\t\t\t\t\t\t通讯录管理系统\t\t\t\n");
printf("\t\t\t\t\t\t 1.增加信息 \t\t\t\n");
printf("\n");
printf("\t\t\t\t\t\t 2.浏览信息 \t\t\t\n");
printf("\n");
printf("\t\t\t\t\t\t 3.查询信息 \t\t\t\n");
printf("\n");
printf("\t\t\t\t\t\t 4.修改信息 \t\t\t\n");
printf("\n");
printf("\t\t\t\t\t\t 5.删除信息 \t\t\t\n");
printf("\n");
printf("\t\t\t\t\t\t 6.退出系统 \t\t\t\n");
printf("\t\t\t\t\t\t**************\t\t\t\n");
printf("\t\t\t\t\t\t请输入操作(1-6)");
scanf("%d",&n);
switch(n){
case 1:addmore();break;
case 2:browse();break;
case 3:search();break;
case 4:change();break;
case 5:del();break;
case 6:printf("\n\n\n\n");
printf("\t\t\t\t\t\t**************\t\t\t\n\n\n");
printf("\t\t\t\t\t\t感谢您的使用 再见!\n\n\n");
printf("\t\t\t\t\t\t**************\n\n\n\n\n");
return 0;
}
}
return 0;
}
Loading…
Cancel
Save