/* HELLO.C -- Hello, world */
專注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)阜平免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
#includestdio.h
struct person
{
char name[8];
char tel[15];
char addr[50];
};
char filename[20]="E:\\txl.txt";
FILE *fp;
void creat();
void output();
void search();
void append();
void modify();
void delete();
main( )
{
int m;
creat();
while(1)
{
printf("\n\t\t*********歡迎使用通訊錄信息管理系統(tǒng)*********\n\n");
printf("\n\t\t添加,請(qǐng)按1");
printf("\n\t\t查找,請(qǐng)按2");
printf("\n\t\t修改,請(qǐng)按3");
printf("\n\t\t刪除,請(qǐng)按4");
printf("\n\t\t輸出,請(qǐng)按5");
printf("\n\t\t退出,請(qǐng)按0\n");
printf("\n\t\t********************************************\n\n");
printf("Please select(0--5):");
scanf("%d",m);
if(m=0m=5)
{
switch(m)
{
case 1: append();
break;
case 2: search();
break;
case 3: modify();
break;
case 4: delete();
break;
case 5: output();
break;
case 0: exit();
}
printf("\n\n操作完畢,請(qǐng)?jiān)俅芜x擇!");
}
else
printf("\n\n選擇錯(cuò)誤,請(qǐng)?jiān)俅芜x擇!");
}
}
/*輸入模塊creat( ): 創(chuàng)建通訊錄的子函數(shù)。*/
void creat()
{
struct person one;
long s1;
/*printf("\n請(qǐng)輸入通訊錄文件名:");
scanf("%s",filename); */
if((fp=fopen(filename,"at+"))==NULL)
{
printf("\n不能建立通訊錄!");
exit();
}
fprintf(fp,"%-10s%-20s%-50s\n","姓名","電話號(hào)碼","住址");
printf("\n請(qǐng)輸入姓名、電話號(hào)碼及住址(以0結(jié)束)\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);
}
/*輸出模塊output( ):輸出通訊錄中聯(lián)系人通訊信息的子函數(shù)*/
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",one.name,one.tel,one.addr);
}
fclose(fp);
}
/*添加模塊append( ):向通訊錄中添加某人通訊信息的子函數(shù)*/
void append()
{
struct person one;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打開通訊錄!");
exit();
}
printf("\n請(qǐng)輸入添加的姓名、電話號(hào)碼及住址\n");
scanf("%s%s%s",one.name,one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
fclose(fp);
}
/*查找模塊search( ):在通訊錄中查找某人通訊信息的子函數(shù)*/
void search()
{
int k=0;
char namekey[8];
struct person one;
printf("\n請(qǐng)輸入姓名:");
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("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
k=1;
}
}
if(!k)
printf("\n\n對(duì)不起,通訊簿中沒有此人的記錄。");
fclose(fp);
}
/*修改模塊modify( ):在通訊錄中修改某人通訊信息的子函數(shù)*/
void modify()
{
int m,k=0;
long offset;
char namekey[8];
struct person one;
printf("\n請(qǐng)輸入姓名:");
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("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n請(qǐng)輸入新姓名、電話號(hào)碼及住址:");
scanf("%s%s%s",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對(duì)不起,通訊錄中沒有此人的記錄。");
fclose(fp);
}
/*刪除模塊delete( ):在通訊錄中刪除某人通訊信息的子函數(shù)*/
void delete()
{
int m,k=0,flag;
long offset1,offset2;
char namekey[8], valid[4];
struct person one;
printf("\n請(qǐng)輸入姓名:");
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("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n確實(shí)要?jiǎng)h除,按1;不刪除,按0:");
scanf("%d",m);
if(m)
{
fseek(fp,offset1,SEEK_SET);
fprintf(fp,"%-10s%-20s%-50s\n","","","");
}
else
printf("\n對(duì)不起,通訊錄中沒有此人的記錄。");
fclose(fp);
}
}
}
}
PIXTEL_MMI_EBOOK_20051###########################################################/PIXTEL_MMI_EBOOK_2005
/*【用C語(yǔ)言編寫具有數(shù)據(jù)插入、修改、刪除、顯示和查詢功能的電話薄管理程序】
1、數(shù)據(jù)包括:人名、工作單位、電話號(hào)碼和E-mail地址。
2、可對(duì)記錄中的姓名和電話號(hào)碼進(jìn)行修改。
3、可增加或刪除記錄。
4、可顯示所有保存的記錄。
5、可按人名或電話號(hào)碼進(jìn)行查詢。
另:采用結(jié)構(gòu)體數(shù)組和文件系統(tǒng)實(shí)現(xiàn)。結(jié)構(gòu)體包括人名、工作單位、電話號(hào)碼和E-mail
絕對(duì)原創(chuàng),2010年7月12日晚剛寫完測(cè)試通過的,純C語(yǔ)言! */
#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("請(qǐng)輸入學(xué)生姓名:"); scanf("%s", s-name); }
if(mask BUNIT) { printf("請(qǐng)輸入工作單位:"); scanf("%s", s-unit); }
if(mask BTELE) { printf("請(qǐng)輸入聯(lián)系電話:"); scanf("%s", s-tele); }
if(mask BMAIL) { printf("請(qǐng)輸入電子郵件:"); 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("數(shù)據(jù)庫(kù)暫無(wú)記錄\n");
return 0;
}/*end if*/
printf("編號(hào)\t姓名\t單位\t電話\t電郵\n");
printf("------------------------------------------------\n");
while(!feof(f)) {
fgetpos(f, q);
r = fread(t, sizeof(t), 1, f);
if(r1)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("請(qǐng)輸入姓名或者電話號(hào)碼:");
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(p0) 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(p0) return;
f = fopen(fileDB, "rb+");
fsetpos(f, p);
for(;;) {
show(0, s);
printf("請(qǐng)選擇: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("錯(cuò)誤的操作,請(qǐng)重新輸入。\n");
}/*end case*/
}/*mext*/
}/*end clear*/
int main(void)
{
int cmd = 0; CON s;
for(;;) {
printf("歡迎使用通信簿!請(qǐng)選擇: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;
}
#includestdio.h
#includestdlib.h
#includestring.h
#include iostream
//主函數(shù)
int main()
{
LinkQueue Q;
initAddressBook(Q);
int flag=0;
while(flag!=8)
{
printf("※※※※※主※※※※※菜※※※※※單※※※※※\n");
printf("※1、增加聯(lián)系人 2、刪除聯(lián)系人 ※\n");
printf("※3、修改聯(lián)系人 4、清空通訊錄 ※\n");
printf("※5、查找聯(lián)系人 6、按組顯示 ※\n");
printf("※7、顯示全部聯(lián)系人 8、退出 ※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("請(qǐng)輸入編號(hào)(1-8):\n");
scanf("%d",flag);
if(flag1||flag8)
{
printf("輸入錯(cuò)誤請(qǐng)重新輸入!\n");
continue;
}
else
{
switch(flag){
case 1:
if(enAddressBook(Q))
printf("增加聯(lián)系人成功!\n");
else
printf("增加聯(lián)系人失?。n");
break;
case 2:
if(delPerson(Q))
printf("刪除聯(lián)系人成功!\n");
else
printf("聯(lián)系人刪除失??!\n");
break;
case 3:
if(update(Q))
printf("修改聯(lián)系人成功!\n");
else
printf("修改聯(lián)系人失??!\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("※※※※※感謝您使用本系統(tǒng)!※※※※※※\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;
}
//通訊錄當(dāng)前人數(shù)
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;
}
//刪除聯(lián)系人
bool delPerson(LinkQueue Q)
{
char _name[20];
system("cls");
printf("請(qǐng)輸入要?jiǎng)h除的聯(lián)系人的姓名:\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);//刪除節(jié)點(diǎn)
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("無(wú)此聯(lián)系人!\n");
return false;
}
}
}
//查找聯(lián)系人
bool findByName(LinkQueue Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機(jī)中無(wú)聯(lián)系人!\n");
return false;
}
else
{
char _name[20];
printf("請(qǐng)輸入要查詢的聯(lián)系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front-next;
while(p-next!=NULL)
{
if(strcmp(p-name,_name)==0)
{
printf("姓名:%s 號(hào)碼:%s 分組:%s\n",p-name,p-tel,p-group);
return true;
}
p=p-next;
}
if(strcmp(p-name,_name)==0){
printf("姓名:%s 號(hào)碼:%s 分組:%s\n",p-name,p-tel,p-group);
return true;
}
else
{
printf("查無(wú)此人!\n");
return false;
}
}
}
//按組顯示聯(lián)系人
bool findByGroup(LinkQueue Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機(jī)中無(wú)聯(lián)系人!\n");
return false;
}
else
{
char _group[20];
printf("請(qǐng)輸入要查詢的分組:\n");
scanf("%s",_group);
QNode *p;
p=Q.front-next;
while(p-next!=NULL)
{
if(strcmp(p-group,_group)==0)
{
printf("姓名:%s 號(hào)碼:%s \n",p-name,p-tel);
}
p=p-next;
}
if(strcmp(p-group,_group)==0){
printf("姓名:%s 號(hào)碼:%s \n",p-name,p-tel);
return true;
}
else
{
printf("無(wú)此分組!\n");
return false;
}
}
}
//增加聯(lián)系人
bool enAddressBook(LinkQueue Q)
{
system("cls");
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
if(!p)
return false;
else
{
printf("請(qǐng)輸入聯(lián)系人姓名:\n");
scanf("%s",p-name);
printf("請(qǐng)輸入聯(lián)系人號(hào)碼:\n");
scanf("%s",p-tel);
printf("請(qǐng)輸入聯(lián)系人分組:\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;
}
}
//修改聯(lián)系人
bool update(LinkQueue Q)
{
system("cls");
if(Q.front==Q.rear)
{
printf("手機(jī)中無(wú)聯(lián)系人!\n");
return false;
}
else
{
char _name[20];
printf("請(qǐng)輸入要修改的聯(lián)系人姓名:\n");
scanf("%s",_name);
QNode *p;
p=Q.front-next;
while(p-next!=NULL)
{
if(strcmp(p-name,_name)==0)
{
printf("請(qǐng)輸入新聯(lián)系人姓名:\n");
scanf("%s",p-name);
printf("請(qǐng)輸入新聯(lián)系人號(hào)碼:\n");
scanf("%s",p-tel);
printf("請(qǐng)輸入新聯(lián)系人分組:\n");
scanf("%s",p-group);
return true;
}
p=p-next;
}
if(strcmp(p-name,_name)==0){
printf("請(qǐng)輸入新聯(lián)系人姓名:\n");
scanf("%s",p-name);
printf("請(qǐng)輸入新聯(lián)系人號(hào)碼:\n");
scanf("%s",p-tel);
printf("請(qǐng)輸入新聯(lián)系人分組:\n");
scanf("%s",p-group);
return true;
}
else
{
printf("查無(wú)此人!\n");
return false;
}
}
}
//顯示所有聯(lián)系人
void disAll(LinkQueue Q)
{
system("cls");
int i=0;
QNode *p;
p=Q.front-next;
if(Q.front==Q.rear)
printf("無(wú)聯(lián)系人!\n");
else
{
printf(" 姓名 號(hào)碼 分組\n");
while(p!=NULL){
printf("%15s %15s %15s\n",p-name,p-tel,p-group);
p=p-next;
}
}
}