数据的增删改查
学院教学系统中需要存储学生的基本情况,信息包括:学号、姓名、性别(1代表男,0代表女)、班级、联系电话。该文件名为SICE.dat。且每个学生的信息的完整的,即不存在某个数据没有的情况。
需求分析:
1.向该系统中录入一批数据,要求录入格式为:
INSERT INTO SICE VALUES(XX,XX,XX,XX,XX) (注:每个XX中只包含数字、英文字母)
2.按照某个条件,修改已录入的数据
UPDATESICESETCOLUMN1=XXWHERECOLUMN2=YY (注:COLUMN1、COLUMN2分别是学号、姓名、性别、班级、联系电话中的任意一个,涉及到中文的录入可能造成的乱码,建议采用英文形式,即sno、name、gender、class、phone;XX是修改后的值;YY是某个查询条件)
3.按照某个条件,对已有的数据进行删除
DELETE FROM SICEWHERE COLUMN = YY (说明同2)
4.按照某个条件,对已有数据进行查询
SELECT * FROM SICEWHERE COLUMN= YY (说明同2;* 代表所有的信息)
例如:
1.一开始,SICE.dat文件中没有任何数据。即是个空文件。
2.录入数据
INSERT INTO SICE VALUES(07001,zhangsan,1,CS171,13012345678)
INSERT INTO SICE VALUES(07006,lisi,1,CS172,13023456789)
INSERT INTO SICE VALUES(07003,wangwu,0,CS171,13034567890)
录入后,SICE.dat文件中就有了如下数据
学号 | 姓名 | 性别 | 班级 | 联系电话 |
07001 | zhangsan | 1 | CS171 | 13012345678 |
07006 | lisi | 1 | CS172 | 13023456789 |
07003 | wangwu | 0 | CS171 | 13034567890 |
3.修改数据
UPDATESICESETclass=CS173WHEREgender=1
修改后,SICE.dat文件中就有了如下数据
学号 | 姓名 | 性别 | 班级 | 联系电话 |
07001 | zhangsan | 1 | CS173 | 13012345678 |
07006 | lisi | 1 | CS173 | 13023456789 |
07003 | wangwu | 0 | CS171 | 13034567890 |
4.删除数据
DELETE FROM SICEWHERE name= lisi
删除后,SICE.dat文件中就有了如下数据
学号 | 姓名 | 性别 | 班级 | 联系电话 |
07001 | zhangsan | 1 | CS173 | 13012345678 |
07003 | wangwu | 0 | CS171 | 13034567890 |
5.查询数据
SELECT * FROM SICEWHERE class= CS171
假设SICE.dat文件中有如下数据
学号 | 姓名 | 性别 | 班级 | 联系电话 |
07001 | zhangsan | 1 | CS171 | 13012345678 |
07006 | lisi | 1 | CS172 | 13023456789 |
07003 | wangwu | 0 | CS171 | 13034567890 |
07010 | zhaoliu | 1 | CS173 | 13045678901 |
07030 | qianqi | 0 | CS174 | 13056789012 |
07090 | sunba | 0 | CS171 | 13067890123 |
07008 | zhoujiu | 1 | CS171 | 13078901234 |
查询结果如下
学号 | 姓名 | 性别 | 班级 | 联系电话 |
07001 | zhangsan | 1 | CS171 | 13012345678 |
07003 | wangwu | 0 | CS171 | 13034567890 |
07090 | sunba | 0 | CS171 | 13067890123 |
07008 | zhoujiu | 1 | CS171 | 13078901234 |
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{
char sno[6];
char name[20];
char gender[2];
char cla[6];
char phone[12];
struct student *next;
};
typedef struct student stu;
void wrfi(stu *head)
{
FILE *wr;
head=head->next;
if((wr=fopen("C:\\SICE.dat","wb+"))==NULL)
{
printf("Can not open this file!\n");
exit(0);
}
while(head!=NULL)
{
fprintf(wr,"%5s%20s",head->sno,head->name);
fprintf(wr,"%3s%8s%20s\n",head->gender,head->cla,head->phone);
head=head->next;
}
fclose(wr);
}
stu *iput(stu *head)
{
char sno[6];
char name[20];
char gender[2];
char cla[6];
char phone[12];
stu *s;
stu *r;
head=(stu *)malloc(sizeof(stu));
r=head;
int op=1;
while(op)
{
printf("Insert into SICE values\n");
scanf("%s",sno);
getchar();
scanf("%s",name);
getchar();
scanf("%s",gender);
getchar();
scanf("%s",cla);
getchar();
scanf("%s",phone);
getchar();
s=(stu *)malloc(sizeof(stu));
strcpy(s->sno,sno);
strcpy(s->name,name);
strcpy(s->gender,gender);
strcpy(s->cla,cla);
strcpy(s->phone,phone);
r->next=s;
r=s;
printf("Input 1 to continue or input 0 to finish:");
scanf("%d",&op);
}
r->next='\0';
return head;
wrfi(head);
}
stu *chge(stu *head)
{
stu *ch;
ch=head->next;
char id[7]= {"sno"},nam[7]= {"name"},gen[7]= {"gender"},cl[7]= {"class"},pho[7]= {"phone"};
char cp[7],cq[7];
char cd[20],co[20];
printf("Update SICE set ");
scanf("%s",cp);
getchar();
scanf("%s",cd);
printf("where ");
scanf("%s",cq);
getchar();
scanf("%s",co);
if(strcmp(cq,id)==0)
{
if(strcmp(cp,id)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->sno,co)==0)
{
strcpy(ch->sno,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,nam)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->sno,co)==0)
{
strcpy(ch->name,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,gen)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->sno,co)==0)
{
strcpy(ch->gender,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,cl)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->sno,co)==0)
{
strcpy(ch->cla,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,pho)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->sno,co)==0)
{
strcpy(ch->phone,cd);
}
ch=ch->next;
}
}
}
if(strcmp(cq,nam)==0)
{
if(strcmp(cp,id)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->name,co)==0)
{
strcpy(ch->sno,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,nam)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->name,co)==0)
{
strcpy(ch->name,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,gen)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->name,co)==0)
{
strcpy(ch->gender,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,cl)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->name,co)==0)
{
strcpy(ch->cla,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,pho)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->name,co)==0)
{
strcpy(ch->phone,cd);
}
ch=ch->next;
}
}
}
if(strcmp(cq,gen)==0)
{
if(strcmp(cp,id)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->gender,co)==0)
{
strcpy(ch->sno,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,nam)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->gender,co)==0)
{
strcpy(ch->name,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,gen)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->gender,co)==0)
{
strcpy(ch->gender,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,cl)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->gender,co)==0)
{
strcpy(ch->cla,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,pho)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->gender,co)==0)
{
strcpy(ch->phone,cd);
}
ch=ch->next;
}
}
}
if(strcmp(cq,cl)==0)
{
if(strcmp(cp,id)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->cla,co)==0)
{
strcpy(ch->sno,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,nam)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->cla,co)==0)
{
strcpy(ch->name,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,gen)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->cla,co)==0)
{
strcpy(ch->gender,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,cl)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->cla,co)==0)
{
strcpy(ch->cla,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,pho)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->cla,co)==0)
{
strcpy(ch->phone,cd);
}
ch=ch->next;
}
}
}
if(strcmp(cq,pho)==0)
{
if(strcmp(cp,id)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->phone,co)==0)
{
strcpy(ch->sno,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,nam)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->phone,co)==0)
{
strcpy(ch->name,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,gen)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->phone,co)==0)
{
strcpy(ch->gender,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,cl)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->phone,co)==0)
{
strcpy(ch->cla,cd);
}
ch=ch->next;
}
}
if(strcmp(cp,pho)==0)
{
while(ch!=NULL)
{
if(strcmp(ch->phone,co)==0)
{
strcpy(ch->phone,cd);
}
ch=ch->next;
}
}
}
stu *c7;
c7=head->next;
while(c7!=NULL)
{
printf("%5s",c7->sno);
printf("%20s",c7->name);
printf("%3s",c7->gender);
printf("%8s",c7->cla);
printf("%20s\n",c7->phone);
c7=c7->next;
}
wrfi(head);
return (head);
}
stu *dele(stu *head)
{
char des[7]= {"sno"},den[7]= {"name"},deg[7]= {"gender"},dec[7]= {"class"},dep[7]= {"phone"};
stu *p1,*p2;
p1=head->next;
char dp[7],dc[20];
printf("DELETE FROM SICE WHERE ");
scanf("%s",dp);
getchar();
scanf("%s",dc);
if(strcmp(dp,des)==0)
{
while(p1!=NULL)
{
if(strcmp(p1->sno,dc)!=0)
{
p2=p1;
p1=p1->next;
}
else
{
p2->next=p1->next;
p1=p1->next;
}
}
}
if(strcmp(dp,den)==0)
{
while(p1!=NULL)
{
if(strcmp(p1->name,dc)!=0)
{
p2=p1;
p1=p1->next;
}
else
{
p2->next=p1->next;
p1=p1->next;
}
}
}
if(strcmp(dp,deg)==0)
{
while(p1!=NULL)
{
if(strcmp(p1->gender,dc)!=0)
{
p2=p1;
p1=p1->next;
}
else
{
p2->next=p1->next;
p1=p1->next;
}
}
}
if(strcmp(dp,dec)==0)
{
while(p1!=NULL)
{
if(strcmp(p1->cla,dc)!=0)
{
p2=p1;
p1=p1->next;
}
else
{
p2->next=p1->next;
p1=p1->next;
}
}
}
if(strcmp(dp,dep)==0)
{
while(p1!=NULL)
{
if(strcmp(p1->phone,dc)!=0)
{
p2=p1;
p1=p1->next;
}
else
{
p2->next=p1->next;
p1=p1->next;
}
}
}
stu *d7;
d7=head->next;
while(d7!=NULL)
{
printf("%5s",d7->sno);
printf("%20s",d7->name);
printf("%3s",d7->gender);
printf("%8s",d7->cla);
printf("%20s\n",d7->phone);
d7=d7->next;
}
wrfi(head);
return(head);
}
stu*find(stu *head)
{
char fis[7]= {"sno"},fin[7]= {"name"},fig[7]= {"gender"},fic[7]= {"class"},fip[7]= {"phone"};
stu *f1;
f1=head->next;
char fp[7],fc[20];
printf("SELETE FROM SICE WHERE");
scanf("%s",fp);
getchar();
scanf("%s",fc);
if(strcmp(fp,fis)==0)
{
while(f1!=NULL)
{
if(strcmp(f1->sno,fc)!=0)
{
f1=f1->next;
}
else
{
printf("%5s",f1->sno);
printf("%15s",f1->name);
printf("%3s",f1->gender);
printf("%8s",f1->cla);
printf("%15s\n",f1->phone);
f1=f1->next;
}
}
}
if(strcmp(fp,fin)==0)
{
while(f1!=NULL)
{
if(strcmp(f1->name,fc)!=0)
{
f1=f1->next;
}
else
{
printf("%5s",f1->sno);
printf("%15s",f1->name);
printf("%3s",f1->gender);
printf("%8s",f1->cla);
printf("%15s\n",f1->phone);
f1=f1->next;
}
}
}
if(strcmp(fp,fig)==0)
{
while(f1!=NULL)
{
if(strcmp(f1->gender,fc)!=0)
{
f1=f1->next;
}
else
{
printf("%5s",f1->sno);
printf("%15s",f1->name);
printf("%3s",f1->gender);
printf("%8s",f1->cla);
printf("%15s\n",f1->phone);
f1=f1->next;
}
}
}
if(strcmp(fp,fic)==0)
{
while(f1!=NULL)
{
if(strcmp(f1->cla,fc)!=0)
{
f1=f1->next;
}
else
{
printf("%5s",f1->sno);
printf("%15s",f1->name);
printf("%3s",f1->gender);
printf("%8s",f1->cla);
printf("%15s\n",f1->phone);
f1=f1->next;
}
}
}
if(strcmp(fp,fip)==0)
{
while(f1!=NULL)
{
if(strcmp(f1->phone,fc)!=0)
{
f1=f1->next;
}
else
{
printf("%5s",f1->sno);
printf("%15s",f1->name);
printf("%3s",f1->gender);
printf("%8s",f1->cla);
printf("%15s\n",f1->phone);
f1=f1->next;
}
}
}
return head;
}
int main()
{
stu *head;
head=NULL;
int op;
printf("Please input 1 to continue:\n");
scanf("%d",&op);
while(op)
{
printf("\t\t0.exit\n");
printf("\t\t1.input the record\n");
printf("\t\t2.change the record\n");
printf("\t\t3.delete the record\n");
printf("\t\t4.find the record\n");
printf("Please enter your choice:\n");
scanf("%d",&op);
switch(op)
{
case 0:
return 0;
case 1:
head=iput(head);
break;
case 2:
head=chge(head);
break;
case 3:
head=dele(head);
break;
case 4:
find(head);
break;
}
}
return 0;
}