📄 stu.c
字号:
puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/
if(n==2)/*往右移动越界的话移到第一个选项*/
DrawMl(0);
else
DrawMl(n+1);
flag=0;
break;
case UP:/*具体选项往上移动*/
WriteText(n,x,ml[n].str[x-3]);/*输出红色字体*/
if(x==3)/*移到最上面再按上键,就移到最下面*/
x=3+ml[n].n-1;
else
x--;/*移动到新的要显示的内容*/
BlackText(n,x,ml[n].str[x-3]);/*输出黑色字体*/
flag=1;
break;
case DOWN:/*具体选项往下移动*/
WriteText(n,x,ml[n].str[x-3]);
if(x==(3+ml[n].n-1))/*移动到最底下再按下键就移到最上面*/
x=3;
else
x++;/*移动到新的要显示的内容*/
BlackText(n,x,ml[n].str[x-3]);
flag=1;
break;
case ENTER:
puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/
Enter(n,x-3);/*菜单选项的具体功能*/
flag=0;
break;
}
gotoxy(79,1);
}
}
/*菜单选项的具体功能*/
void Enter(int m,int n)
{
switch(m)
{
case 0:switch(n) /*选择了编辑菜单选项*/
{
case 0:Add();break;/*调用添加学生信息子函数*/
case 1:Browse();break;/*调用浏览学生信息子函数*/
case 2:Arrange();break;/*调用排序学生信息子函数*/
case 3:Revise();break;/*调用修改学生信息子函数*/
case 4:Delete();break;/*调用删除学生信息子函数*/
case 5:exit(0);break;/*退出系统*/
}break;
case 1: switch(n) /*选择了查询菜单选项*/
{
case 0:ConsultNum();break;/*调用按学号查询学生信息子函数*/
case 1:ConsultName();break;/*调用按姓名查询学生信息子函数*/
}break;
case 2:switch(n) /*选择了帮助菜单选项*/
{
case 0:Help();break;
}
}/*结束外switch*/
}
/*添加学生信息*/
void Add()
{
FILE *fp;
fp=fopen("students.txt","rb");/*只读方式打开文件*/
if(fp==NULL)/*如果没有students.txt文件就新建*/
fp=fopen("students.txt","wb");/*通过只写方式新建文件*/
else/*如果有students.txt文件就添加*/
{
fclose(fp);
fp=fopen("students.txt","ab");/*追加方式打开*/
}
ClrScr();
gotoxy(2,3);
printf("请输入学生学号:");/*输入学生的资料*/
gets(operate.num);
gotoxy(2,4);
printf("请输入学生姓名:");
gets(operate.name);
gotoxy(2,5);
printf("请输入学生年龄:");
gets(operate.age);
gotoxy(2,6);
printf("请输入学生性别:");
gets(operate.sex);
gotoxy(2,7);
printf("请输入学生学号生日:");
gets(operate.birth);
gotoxy(2,8);
printf("请输入学生地址:");
gets(operate.address);
gotoxy(2,9);
printf("请输入学生电话:");
gets(operate.tel);
gotoxy(2,10);
printf("请输入学生Email:");
gets(operate.email);
fwrite(&operate,sizeof(struct StudentInfo),1,fp);/*写入学生信息*/
fclose(fp);
ClrScr();
DrawFrame(30,11,50,13,0,7); /*画边框*/
gotoxy(32,12);
cprintf("学生信息添加成功!");
gotoxy(79,1);
getch();
ClrScr();
}
/*浏览学生信息*/
void Browse()
{
FILE *fp;
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文件就浏览数据*/
{
for(i=0;fread(&Student[i],sizeof(struct StudentInfo),1,fp)!=0;i++)/*逐一读取学生信息,并打印出来(一次只打印一个学生的信息)*/
{
ClrScr();
gotoxy(2,3);
printf("学号:%s",Student[i].num);
gotoxy(2,4);
printf("姓名:%s",Student[i].name);
gotoxy(2,5);
printf("年龄:%s",Student[i].age);
gotoxy(2,6);
printf("性别:%s",Student[i].sex);
gotoxy(2,7);
printf("生日:%s",Student[i].birth);
gotoxy(2,8);
printf("地址:%s",Student[i].address);
gotoxy(2,9);
printf("电话:%s",Student[i].tel);
gotoxy(2,10);
printf("Email:%s",Student[i].email);
gotoxy(2,12);
printf("按任意键查看下一位学生的信息");
gotoxy(79,1);
getch();
flag=1;
}
if(flag==0)
{
ClrScr();
DrawFrame(27,11,57,13,0,7);
gotoxy(30,12);
cprintf("目前还没有学生信息,请添加");
fclose(fp);
gotoxy(79,1);
getch();
ClrScr();
}
else
{
fclose(fp);
ClrScr();
DrawFrame(27,11,51,13,0,7);
gotoxy(30,12);
cprintf("所有学生信息浏览完毕");
gotoxy(79,1);
getch();
ClrScr();
}
}
}
/*排序*/
void Arrange()
{
FILE *fp;
if((fp=fopen("students.txt","rb"))==NULL)/*只读方式打开文件,如果文件不存在输出提示信息*/
{
ClrScr();
DrawFrame(27,11,57,13,0,7);
gotoxy(30,12);
cprintf("目前还没有学生信息,请添加");
fclose(fp);
gotoxy(79,1);
getch();
ClrScr();
}
for(i=0;fread(&Student[i],sizeof(struct StudentInfo),1,fp)!=0;i++);/*逐一读取文件中的学生信息*/
fclose(fp);/*关闭文件*/
n=i;/*把学生信息的个数赋值给n,后面要用到*/
for(i=0;i<n;i++)/*从第一条记录起,相邻记录比较成绩*/
for(j=i+1;j<n;j++)
if(strcmp(Student[i].num,Student[j].num)>0)/*如果前一条信息的学号大于后一条信息的学号,那么两条信息对调(注意!不是学号对调!)*/
{
temp=Student[i];
Student[i]=Student[j];
Student[j]=temp;
}
fp=fopen("students.txt","wb");/*将排序后的学生信息写回文件中*/
for(i=0;i<n;i++)
fwrite(&Student[i],sizeof(struct StudentInfo),1,fp);
fclose(fp);
ClrScr();
DrawFrame(27,11,56,13,0,7);
gotoxy(30,12);
cprintf("操作成功,请用浏览功能查看");
gotoxy(79,1);
getch();
ClrScr();
}
/*修改学生信息*/
void Revise()
{
FILE *fp;
char string[20];
char strings[10][20]={{"目前该学生学号:"},{"目前该学生姓名:"},{"目前该学生年龄:"},{"目前该学生性别:"},{"目前该学生生日:"},{"目前该学生地址:"},{"目前该学生电话:"},{"目前该学生Email:"},{"保存"},{"退出"}};
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文件就进行修改操作*/
{
for(i=0;fread(&Student[i],sizeof(struct StudentInfo),1,fp)!=0;i++);/*逐一读取文件中的学生信息*/
fclose(fp);/*关闭文件*/
n=i;/*把学生信息的条目数赋值给n*/
ClrScr();
gotoxy(2,3);
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)/*如果找到同样姓名或学号,进行修改操作*/
{
ClrScr();
textx=4;
gotoxy(2,3);
printf("请选择要修改的项目:");
BlackText(0,4,&strings[-1][20]);/*输出可选择的项目菜单(不要问我这里怎么是-1,我也不知道)*/
puts(Student[i].num);/*输出该项目对应的信息内容*/
WriteText(0,5,&strings[0][20]);
puts(Student[i].name);
WriteText(0,6,&strings[1][20]);
puts(Student[i].age);
WriteText(0,7,&strings[2][20]);
puts(Student[i].sex);
WriteText(0,8,&strings[3][20]);
puts(Student[i].birth);
WriteText(0,9,&strings[4][20]);
puts(Student[i].address);
WriteText(0,10,&strings[5][20]);
puts(Student[i].tel);
WriteText(0,11,&strings[6][20]);
puts(Student[i].email);
WriteText(0,12,&strings[7][20]);
WriteText(0,13,&strings[8][20]);
flag1=1;
while(flag1)/*定义在项目菜单上操作的按键控制*/
{
gotoxy(79,1);
key=bioskey(0);/*接收按键*/
gotoxy(79,1);
switch(key)
{
case UP:/*具体选项往上移动*/
WriteText(0,textx,&strings[textx-5][20]);
if(textx==4)/*移到最上面再按上键,就移到最下面*/
textx=13;
else
textx--;/*移动到新的要显示的内容*/
BlackText(0,textx,&strings[textx-5][20]);/*输出黑色字体*/
flag1=1;
break;
case DOWN:/*具体选项往下移动*/
WriteText(0,textx,&strings[textx-5][20]);
if(textx==13)/*移动到最底下再按下键就移到最上面*/
textx=4;
else
textx++;/*移动到新的要显示的内容*/
BlackText(0,textx,&strings[textx-5][20]);
flag1=1;
break;
case ENTER:
Rewrite(textx-4,n);/*进入所选择的项目进行相应的操作*/
break;
}
gotoxy(79,1);
}
flag=0;
}
}
if(flag)/*如果没有找到要修改的学生信息,打印提示*/
{
ClrScr();
DrawFrame(27,11,55,13,0,7);
gotoxy(30,12);
cprintf("没有%s的相关信息!",string);
gotoxy(79,1);
getch();
ClrScr();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -