You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

227 lines
4.8 KiB

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student
{ long int num;
char name[20];
int age;
char sex[4];
char p[15];
}stu[100];
int n=0;
FILE *fp;
struct student *p;
void lr();
void ll();
void cx();
void px();
void xg();
void sc();
void bc();
void bc();
void main()
{
int z;
printf("/欢迎使用学生信息管理系统/\n");
do
{ printf(" 主菜单 \n");
printf(" [1]----录入学生信息 \n");
printf(" [2]----浏览学生信息 \n");
printf(" [3]----查询学生信息 \n");
printf(" [4]----排序学生信息 \n");
printf(" [5]----删除学生信息 \n");
printf(" [6]----修改学生信息 \n");
printf(" [7]----保存学生信息 \n");
printf(" [0]----退出系统 \n");
printf("请输入您的选择:");
scanf("%d", &z);
switch(z)
{ case 0 : break;
case 1 :lr();break;
case 2 :ll();break;
case 3 :cx();break;
case 4 :px();break;
case 5 :sc();break;
case 6 :xg();break;
case 7 :bc();break;
default:printf("\n无效选项");
}
}
while(z!= 0);
}
void lr()/*录入函数*/
{ int y;
if(n==0) p=stu;
do
{ printf("请输入学生的学号:");
scanf("%ld",&p->num);
printf("请输入学生的姓名:");
scanf("%s",p->name);
printf("请输入学生的年龄:");
scanf("%d",&p->age);
printf("请输入学生的性别:");
scanf("%s",p->sex);
printf("请输入学生的电话:");
scanf("%s",p->p);
n++; p++;
printf("\n1.继续输入.\n0.输入完毕.\n");
printf("请选择:");
scanf("%d",&y);
}
while(y==1);
printf("输入完毕!您一共输入%d个\n",n);
}
void ll()/*浏览函数*/
{ printf("\n学号 姓名 年龄 性别 电话\n");
char ch;
if((fp=fopen("student.txt","r"))==NULL)
{
printf("打开文件失败");
exit(0);
}
ch=fgetc(fp);
while(ch!=EOF)
{
printf("%c",ch);
ch=fgetc(fp);
}
fclose(fp);
}
void cx()/*查询函数*/
{ int c;
int w,i,j=0;
char name[20];
if(n!=0)
{ do{ printf("\n");
printf(" 按学号查询 请按 1 \n");
printf(" 按姓名查询 请按 2 \n");
printf(" 取消 请按 0 \n");
printf(" 请输入您的选择:");
scanf("%d", &c);
switch(c)
{ case 0:break;
case 1:
printf("请输入学生的学号:");
scanf("%ld", &w);
printf("\n");
for(i=0;i<n;i++)
if(stu[i].num==w)
{ printf("\n学号 姓名 年龄 性别 电话\n");/*显示查询界面1*/
printf("%ld %s %d %s %s\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].p);
j=1;
}
if(j==0)
printf("提示:没有该学生记录,请核对!");break;
case 2:printf("请输入学生的姓名:");
scanf("%s", name);
printf("\n");
for(i=0;i<n;i++)
if(strcmp(name,stu[i].name)==0)
{ printf("\n学号 姓名 年龄 性别 电话\n");/*显示查询界面2*/
j=1;
printf("%ld %s %d %s %s\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].p);
}
if(j==0)
printf("提示:没有该学生记录,请核对!");break;
default:
printf("\n提示:无效选项!");break;
}
} while(c!= 0);
} else printf("提示:无学生数据,请输入数据!");
return;
}
void px()/*排序函数*/
{ int i,j;
struct student t[100];
for(i=0;i<n;i++)
{ for(j=0;j<n-1-i;j++)
{if(stu[j].num>stu[j+1].num)
{t[i]=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t[i];
}
}
}
for(i=0;i<n;i++)
{ printf("%ld %s %d %s %s\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].p);
}
}
void xg()/*修改函数*/
{ long int num;
int i,j,c;
if(n!=0)
{ printf("请输入您要修改的学生的学号:");
scanf("%ld", &num);
printf("\n");
for(i=0;i<n;i++)
if(stu[i].num==num)
j=i;
do{
printf("请选择您要修改的学生的信息内容:\n");
printf(" 姓名 请按 1 \n");
printf(" 年龄 请按 2 \n");
printf(" 性别 请按 3 \n");
printf(" 学号 请按 4 \n");
printf(" 电话 请按 5 \n");
printf(" 取消 请按 0 \n");
printf("请输入您的选择:");
scanf("%d", &c);
printf("\n");
switch(c)
{ case 0:break;
case 1:printf("请输入新姓名:");
scanf("%s",stu[j].name);break;
case 2:printf("请输入新年龄:");
scanf("%d",&stu[j].age);break;
case 3:printf("请输入新性别:");
scanf("%s",stu[j].sex);break;
case 4:printf("请输入新学号:");
scanf("%ld",&stu[j].num);break;
case 5:printf("请输入新电话:");
scanf("%s",stu[j].p);break;
default:
printf("\n无效选项!");
break;
}
} while(c!= 0);
} else printf("提示:无学生数据,请输入数据!");
}
void sc()/*删除函数?*/
{ long int num;
int i,j,e;
if(n!=0)
{ printf("学号 姓名 年龄 性别 电话\n");/*显示删除界面*/
for(i=0;i<n;i++)
printf("%ld %s %d %s %s\n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].p);
printf("请输入您要删除的学生的学号:");
scanf("%ld", &num);
printf("\n");
for(i=0;i<n;i++)
if(num==stu[i].num)
j=i;
if(j!=(n-1))
{ for(e=i-1;e<n;e++,j++)
{ stu[j].num=stu[j+1].num;
strcpy(stu[j].name,stu[j+1].name);
strcpy(stu[j].sex,stu[j+1].sex);
stu[j].age=stu[j+1].age;
strcpy(stu[j].p,stu[j+1].p);
n--;
p--;
}
}else {n--;
p--;}
printf("提示:删除完毕!");
}else printf("提示:无学生数据,请输入数据!");
}
void bc()/*保存函数*/
{ int i;
FILE *fp;
fp=fopen("student.txt","wb+");
for(i=0;i<n;i++)
{
fprintf(fp,"%ld %s %d %s %s \n",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].p);
}
fclose(fp);
}