• 大小: 9KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: C/C++
  • 标签: file文件  增删  改查  

资源简介

把数据存在本地文件中,并通过指针实现增删改查(网上查的删除,修改原文件内容比较麻烦,我试图通过指针实现)

资源截图

代码片段和文件信息

 #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------

评论

共有 条评论