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
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);
|
|
}
|