資源簡(jiǎn)介
把數(shù)據(jù)存在本地文件中,并通過(guò)指針實(shí)現(xiàn)增刪改查(網(wǎng)上查的刪除,修改原文件內(nèi)容比較麻煩,我試圖通過(guò)指針實(shí)現(xiàn))
代碼片段和文件信息
?#include
#include
#include
#include
#include
#include
#define?MAX?4
#define?_CRT_SECURE_NO_WARNINGS
#define?LEN?sizeof(struct?staff)
void?Initial();????void?Query();???void?Find_By_Name();??void?Find_By_Id();??void?Find_By_Telephone();
void?Insert();??void?Delete();??void?Change();???void?print(struct?staff?*);???void?printchoice();
int?identify();
struct?staff?{
char?id[10]name[10]sex[10]age[10]telephone[15]grade[10];
struct?staff?*next;
};
struct?staff?*head*tail;????//tail存放尾節(jié)點(diǎn)???
int?All_Flag=1Query_Flag=1Insert_Flag=1Change_Flag=1Delete_Flag=1;
int?Find_By_Id_Flag=1Find_By_Telephone_Flag=1Find_By_Name_Flag=1Identify_Flag=0;
void?main(){
char?ch;
??Initial();
??print(head);
??printf(“do?you?only?want?to?query\n“);
??ch=getche();
??if(ch==‘n‘||ch==‘N‘)???Identify_Flag=identify();
while(All_Flag){
char?ch;
printchoice();
printf(“input?your?choice\n“);
ch=getche();
switch(ch){
case?‘0‘:?
printf(“\n“);
Query();?break;
case?‘1‘:
printf(“\n“);
if(Identify_Flag==1){
Insert();break;
}
else{
printf(“no?admission\n“);?break;
}
case?‘2‘:
printf(“\n“);
if(Identify_Flag==1){
Change();break;
}
else?{
printf(“no?admission\n“);?break;
}
case?‘3‘:
printf(“\n“);
if(Identify_Flag==1){
Delete();break;
}
else?{
printf(“no?admission\n“);?break;
}
case?‘4‘:All_Flag=0;break;
default:printf(“No?such?choiceinput?again“);?break;
}
}
}
//初始化數(shù)據(jù)從文件中讀取數(shù)據(jù)正向建立鏈表并把頭指針存進(jìn)head中尾節(jié)點(diǎn)存入tail節(jié)點(diǎn)中
??void?Initial(){
FILE?*fp;???
struct?staff?*p1;
fp=fopen(“stu.txt““r“);
if(fp==NULL){
printf(“read?error“);????exit(0);???//正常退出若為非零值則為非正常退出
}
p1=(struct?staff?*)malloc(LEN);???//p1為增加的節(jié)點(diǎn)
head=p1;???
while(!feof(fp)){
fscanf(fp“%s\t%s\t%s\t%s\t%s\t%s\n“
p1->idp1->namep1->sexp1->agep1->telephonep1->grade);??//中間以空格隔開\t
tail=p1;?????????
p1=(struct?staff?*)malloc(LEN);
tail->next=p1;
}
tail->next=NULL;??
free(p1);?
p1=NULL;?
???fclose(fp);
}
??void?print(struct?staff?*head){
??struct?staff?*p=head;
??while(p!=NULL){
??printf(“%s?%s?%s?%s?%s?%s\n“p->idp->namep->sexp->agep->telephonep->grade);
??p=p->next;
??}
??}
?void?Query(){
printf(“-------0:By?Name-------\n--------1:By?Id-----\n-------2:By?Telephone-------\n----------3:Exit-------\n“);
Query_Flag=1;
while(Query_Flag){
char?ch=getche();
switch(ch){
case?‘0‘:
printf(“\n“);?
Find_By_Name();
printf(“-------0:By?Name-------\n--------1:By?Id-----\n-------2:By?Telephone-------\n----------3:Exit-------\n“);
break;
case?‘1‘:
printf(“\n“);?
Find_By_Id();??
printf(“-------0:By?Name-------\n--------1:By?Id-----\n-------2:By?Telephone-------\n----------3:Exit-------\n“);
break;
case?‘2‘:
?printf(“\n“);??
Find_By_Telephone();??
printf(“-------0:By?Name------
評(píng)論
共有 條評(píng)論