资源简介
把数据存在本地文件中,并通过指针实现增删改查(网上查的删除,修改原文件内容比较麻烦,我试图通过指针实现)
代码片段和文件信息
#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++的简单文件传输
评论
共有 条评论