資源簡介
把數據存在本地文件中,并通過指針實現增刪改查(網上查的刪除,修改原文件內容比較麻煩,我試圖通過指針實現)
代碼片段和文件信息
?#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存放尾節點???
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;
}
}
}
//初始化數據從文件中讀取數據正向建立鏈表并把頭指針存進head中尾節點存入tail節點中
??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為增加的節點
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------
- 上一篇:用C語言實現任意矩陣的相乘
- 下一篇:基于c++的簡單文件傳輸
評論
共有 條評論