📄 stu.c
字号:
}
/*修改功能的具体操作*/
void Rewrite(int x,int n)
{
FILE *fp;
char num[20],name[20],age[20],sex[20],birth[20],address[20],tel[20],email[20];
switch(x)
{
case 0:
gotoxy(35,4);
printf("修改为:");
gets(num);
strcpy(Student[i].num,num);/*修改学号*/
flag1=1;
break;
case 1:
gotoxy(35,5);
printf("修改为:");
gets(name);
strcpy(Student[i].name,name);/*修改姓名*/
flag1=1;
break;
case 2:
gotoxy(35,6);
printf("修改为:");
gets(age);
strcpy(Student[i].age,age);/*修改年龄*/
flag1=1;
break;
case 3:
gotoxy(35,7);
printf("修改为:");
gets(sex);
strcpy(Student[i].sex,sex);/*修改性别*/
flag1=1;
break;
case 4:
gotoxy(35,8);
printf("修改为:");
gets(birth);
strcpy(Student[i].birth,birth);/*修改生日*/
flag1=1;
break;
case 5:
gotoxy(35,9);
printf("修改为:");
gets(address);
strcpy(Student[i].address,address);/*修改地址*/
flag1=1;
break;
case 6:
gotoxy(35,10);
printf("修改为:");
gets(tel);
strcpy(Student[i].tel,tel);/*修改电话*/
flag1=1;
break;
case 7:
gotoxy(35,11);
printf("修改为:");
gets(email);
strcpy(Student[i].email,email);/*修改Email*/
flag1=1;
break;
case 8:/*保存所作的修改*/
fp=fopen("students.txt","wb");/*只写方式打开文件*/
for(i=0;i<n;i++)
fwrite(&Student[i],sizeof(struct StudentInfo),1,fp);/*逐条将修改处理后的学生信息写入文件*/
fclose(fp);/*关闭文件*/
ClrScr();
DrawFrame(29,11,51,13,0,7);
gotoxy(32,12);
cprintf("学生信息修改成功!");
gotoxy(79,1);
getch();
ClrScr();
flag1=0;
break;
case 9:/*退出不进行修改或不保存修改*/
flag1=0;
puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/
break;
}
}
/*删除学生信息*/
void Delete()
{
FILE *fp;
char string[20];
fp=fopen("students.txt","rb");
if(fp==NULL)/*如果没有students.txt文件就打印提示*/
{
ClrScr();
DrawFrame(27,11,57,13,0,7);
gotoxy(30,12);
cprintf("目前还没有学生信息,请添加");
fclose(fp);
gotoxy(79,1);
getch();
ClrScr();
}
else
{
for(i=0;fread(&Student[i],sizeof(struct StudentInfo),1,fp)!=0;i++);/*逐条读取文件中的学生记录*/
fclose(fp);/*关闭文件*/
n=i;/*把学生信息的数目赋值给n*/
ClrScr();
printf("请输入学生姓名或学号:");/*输入要删除的学生姓名或学号*/
gets(string);
for(flag=1,i=0;flag&&i<n;i++)/*逐条比较姓名或学号*/
{
if(strcmp(Student[i].num,string)==0||strcmp(Student[i].name,string)==0)/*如果找到同样姓名或学号,将下一条记录的姓名学号和成绩复制到该条记录中,并且循环将后面的下一条记录复制到前一条中(口才不好,表述的不是太清楚,也就是说将要删除的信息后面的所有信息全部往前移,把要删除的信息挤出去)*/
{
for(j=i;j<n-1;j++)
{
Student[j]=Student[j+1];
}
flag=0;
}
}
if(flag==0)/*如果成功删除...*/
{
n=n-1;/*信息数目减一*/
fp=fopen("students.txt","wb");/*只写方式打开文件*/
for(i=0;i<n;i++)
fwrite(&Student[i],sizeof(struct StudentInfo),1,fp);/*逐条将删除处理过的记录信息写入文件*/
fclose(fp);/*关闭文件*/
ClrScr();
DrawFrame(29,11,51,13,0,7);
gotoxy(32,12);
cprintf("学生信息删除成功!");
gotoxy(79,1);
getch();
ClrScr();
}
else/*如果没有找到同样的姓名,输出相关信息*/
{
ClrScr();
DrawFrame(29,11,56,13,0,7);
gotoxy(32,12);
cprintf("没有%s的相关信息!",string);
gotoxy(79,1);
getch();
ClrScr();
}
}
}
/*按学号查询学生信息*/
void ConsultNum()
{
FILE *fp;
char number[20];
flag=0;
fp=fopen("students.txt","rb");/*只读方式打开文件*/
if(fp==NULL)/*如果没有students.txt文件就打印提示*/
{
ClrScr();
DrawFrame(27,11,57,13,0,7);
gotoxy(30,12);
cprintf("目前还没有学生信息,请添加");
fclose(fp);
getch();
ClrScr();
}
else/*如果有students.txt文件就进行查询操作*/
{
ClrScr();
printf("请输入要查询的学生学号:");
gets(number);
for(i=0;fread(&Student[i],sizeof(struct StudentInfo),1,fp)!=0;i++);/*逐一读取文件中的学生信息*/
fclose(fp);/*关闭文件*/
for(t=0;t<=i;t++)/*逐一比较学号,如果找到同样学号,输出相关信息*/
{
if(strcmp(Student[t].num,number)==0)
{
ClrScr();
gotoxy(2,3);
printf("已搜索到%s的相关信息:",number);
gotoxy(2,4);
printf("学号:%s",Student[t].num);
gotoxy(2,5);
printf("姓名:%s",Student[t].name);
gotoxy(2,6);
printf("年龄:%s",Student[t].age);
gotoxy(2,7);
printf("性别:%s",Student[t].sex);
gotoxy(2,8);
printf("生日:%s",Student[t].birth);
gotoxy(2,9);
printf("地址:%s",Student[t].address);
gotoxy(2,10);
printf("电话:%s",Student[t].tel);
gotoxy(2,11);
printf("Email:%s",Student[t].email);
gotoxy(79,1);
flag=1;
break;
}
}
if(flag==0)/*如果没有找到相同的学号,输出相关信息*/
{
ClrScr();
DrawFrame(29,11,56,13,0,7);
gotoxy(32,12);
cprintf("没有%s的相关信息!",number);
gotoxy(79,1);
getch();
ClrScr();
}
}
}
/*按姓名查询学生信息*/
void ConsultName()
{
FILE *fp;
char name[20];
flag=0;
fp=fopen("students.txt","rb");/*只读方式打开文件*/
if(fp==NULL)/*如果没有students.txt文件就打印提示*/
{
ClrScr();
DrawFrame(27,11,57,13,0,7);
gotoxy(30,12);
cprintf("目前还没有学生信息,请添加");
fclose(fp);
gotoxy(79,1);
getch();
ClrScr();
}
else/*如果有students.txt文件就进行查询操作*/
{
ClrScr();
printf("请输入要查询的学生姓名:");
gets(name);
for(i=0;fread(&Student[i],sizeof(struct StudentInfo),1,fp)!=0;i++);/*逐一读取文件中的学生信息*/
fclose(fp);/*关闭文件*/
for(t=0;t<=i;t++)/*逐条比较姓名,如果找到同样姓名,输出相关信息*/
{
if(strcmp(Student[t].name,name)==0)
{
ClrScr();
gotoxy(2,3);
printf("已搜索到%s的相关信息:",name);
gotoxy(2,4);
printf("学号:%s",Student[t].num);
gotoxy(2,5);
printf("姓名:%s",Student[t].name);
gotoxy(2,6);
printf("年龄:%s",Student[t].age);
gotoxy(2,7);
printf("性别:%s",Student[t].sex);
gotoxy(2,8);
printf("生日:%s",Student[t].birth);
gotoxy(2,9);
printf("地址:%s",Student[t].address);
gotoxy(2,10);
printf("电话:%s",Student[t].tel);
gotoxy(2,11);
printf("Email:%s",Student[t].email);
gotoxy(79,1);
flag=1;
break;
}
}
if(flag==0)/*如果没有找到相同的姓名,输出相关信息*/
{
ClrScr();
DrawFrame(29,11,57,13,0,7);
gotoxy(32,12);
cprintf("没有%s的相关信息!",name);
gotoxy(79,1);
getch();
ClrScr();
}
}
}
void Help() /*帮助*/
{
ClrScr();
DrawFrame(27,10,60,12,0,7); /*画边框*/
gotoxy(30,11);
cprintf("通过选择菜单来运行相应的功能");/*输出字符串*/
gotoxy(79,1);
getch();
ClrScr();
}
void ClrScr()/*自定义清屏函数*/
{
int i,j;
puttext(2,3,78,23,c);/*刚开始已经用gettext把蓝色的一块地方保存下来,现在再还原*/
gotoxy(2,3);
}
/*初始化界面前的设置,不能删除!*/
void Set()
{
system("cls");
textbackground(BLUE);
window(1,1,25,80);
clrscr();
textx=3;
texty=2;
gotoxy(79,1);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -