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.

455 lines
7.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include<windows.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#define N 100
struct student
{
char no[9];
char name[25];
char sex[10];
int age;
char jiguan[25];
char xibie[25];
char zhuanye[25];
int ban;
}stu[N];
void menu()//菜单函数
{
int choice,w1;
void add();
void find();
void shanchu();
void change();
void tongji();
void read();
void input();//函数声明
do{
puts("\t*********************");
puts("\t 欢迎使用学籍管理系统");
puts("\t 1,录入学生资料");
puts("\t 2,查找学生资料");
puts("\t 3,删除学生资料");
puts("\t 4,修改学生资料");
puts("\t 5,按学号或专业输出学生资料");
puts("\t 6,查看所有学生资料");
puts("\t 7,退出系统");
puts("\t**********************");
printf("想选择的功能");
scanf("%d,&choice");
if(choice<1||choice>8)
{
w1=1;
system("cls");
printf("菜单选择错误,请重新选择");
}
else w1=0;
} while(w1==1);
switch(choice)//根据用户的菜单选择调用相应的函数
{
case 1:
add();
break;
case 2:
find();
break;
case 3:
shanchu();
break;
case 4:
change();
break;
case 5:
tongji();
break;
case 6:
read();
break;
case 7:
break;
default:exit(0);
}
}
int load()
{
FILE *fp;
int i;
if((fp=fopen("results.txt","rb"))==NULL)
{
printf("文件打开错误");
return 0;
}
for(i=0;!feof(fp);i++)
fread(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
return (i-1);
}
//保存函数
void save(int n)
{
int i;
FILE *fp;
if((fp=fopen("results.txt","wb"))==NULL)
{
printf("文件打开错误");
}
for(i=0;i<n;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
}
//读出函数
void read()
{
int n,m;
n=load();
printf("学号\t姓名\t性别\t年龄\t籍贯\t系别\t专业\t班级\t");
for(m=0;m<n;m++)
{
printf("\n%s",stu[m].no);
printf("\t%s",stu[m].name);
printf("\t%s",stu[m].sex);
printf("\t%d",stu[m].age);
printf("\t%s",stu[m].jiguan);
printf("\t%s",stu[m].xibie);
printf("\t%s",stu[m].zhuanye);
printf("\t%d",stu[m].ban);
}
{
int xz,choice;//选择返回还是退出系统的变量
do
{
printf("\n1-返回主菜单;2-退出系统\n");
scanf("%d",&choice);
if(choice<1||choice>2)
{
xz=1;
system("cls");
printf("输入错误,请重新选择\n");
}
else xz=0;
} while(xz==1);
switch(choice)
{
case 1:
menu();
break;//调用菜单函数
case 2:
exit(0);
break;//退出系统
}
}
}
//录入学生信息
void add()
{
FILE *fp;
int n,i,m;
n=load();
if((fp=fopen("results.txt","wb"))==NULL)
{
printf("文件打开错误\n");
exit(0);
}
printf("你想录入多少个学生信息");
scanf("%d",&m);
for(i=0;i<m;i++)
{
printf("\n学号:");
scanf("%sm",stu[n+i].no);
printf("姓名:");
scanf("%s",stu[n+i].name);
printf("性别:");
scanf("%s",stu[n+i].sex);
printf("年龄:");
scanf("%d",&stu[n+i].age);
printf("籍贯:");
scanf("%s",stu[n+i].jiguan);
printf("系别:");
scanf("%s",stu[n+i].xibie);
printf("专业:");
scanf("%s",stu[n+i].zhuanye);
printf("班级:");
scanf("%d",&stu[n+i].ban);
printf("输入完成");
save(n+m);
}
for(i=0;i<m;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
for(i=0;i<m;i++)
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
{
int xz,choice;
do
{
printf("\n1-返回主菜单;2-退出系统\n");
scanf("%d",&choice);
if(choice<1||choice>2)
{
xz=1;
system("cls");
printf("输入错误,请重新输入\n");
}
else xz=0;
}while(xz==1);
switch(choice)
{
case 1:
menu();
break;
case 2:
exit(0);
break;
}
}
}
//查找函数
void find()
{
int menu();
int n,i;
char m[9];
n=load();
printf("\t\t欢迎使用学号查找功能\n请输入你需要查找的学生的学号:");
scanf("%s",&m);
for(i=0;i<n;i++)
{
if(!strcmp(stu[i].no,m))
{
printf("学号\t姓名\t性别\t年龄\t籍贯\t系别\t专业\t班级\n");
printf("%s",stu[i].no);
printf("\t%s",stu[i].name);
printf("\t%s",stu[i].sex);
printf("\t%d",stu[i].age);
printf("\t%s",stu[i].jiguan);
printf("\t%s",stu[i].xibie);
printf("\t%s",stu[i].zhuanye);
printf("\t%d\n",stu[i].ban);
}
}
{
int xz,choice;
do
{
printf("\n1-返回主菜单;2-退出系统\n");
scanf("%d",&choice);
if(choice<1||choice>2)
{
xz=1;
system("cls");
printf("输入错误,请重新选择\n");
}
else xz=0;
}while(xz==1);
switch(choice)
{
case 1:
menu();
break;
case 2:
exit(0);
break;
}
}
}
//修改函数
void change()
{
int n,i,j;
char m[9];
n=load();
printf("欢迎使用修改功能\n输入你要修改学生的学号:");
scanf("%s",&m);
for(i=0;i<n;i++)
{
if(!strcmp(stu[i].no,m))
{
printf("你要修改的项目:\n1)学号2)姓名3)性别4年龄5)籍贯6)系别7)专业8)班级\n");
printf("你选择的功能是:");
scanf("%d",&j);
switch(j)
{
case 1:
printf("输入你修改后的学号:");
scanf("%s",stu[i].no);
break;
case 2:
printf("输入你修改后的姓名:");
scanf("%s",stu[i].name);
break;
case 3:
printf("输入你修改后的性别:");
scanf("%s",stu[i].sex);
break;
case 4:
printf("输入你修改后的年龄:");
scanf("%d",&stu[i].age);
break;
case 5:
printf("输入你修改后的籍贯:");
scanf("%s",stu[i].jiguan);
break;
case 6:
printf("输入你修改后的系别:");
scanf("%s",stu[i].xibie);
break;
case 7:
printf("输入你修改后的专业:");
scanf("%s",stu[i].zhuanye);
break;
case 8:
printf("输入你修改后的班级:");
scanf("%d",&stu[i].ban);
break;
default:
printf("选择的功能错误\n");
int getch();
change();
break;
}
save(n);
}
}
{
int xz,choice;
do
{
printf("\n1-返回主菜单;2-退出系统\n");
scanf("%d",&choice);
if(choice<1||choice>2)
{
xz=1;
system("cls");
printf("输入错误,请重新选择\n");
}
else xz=0;
}while(xz==1);
switch(choice)
{
case 1:
menu();
break;
case 2:
exit(0);
break;
}
}
}
//统计函数
void tongji()
{
int k,i,n;
struct student t;
system("cls");
printf("学号 专业 籍贯\n");
for(k=0;k<n-1;k++)
{
for(i=0;i<n-k-1;i++)
{
if(stu[i].no>stu[i+1].no)
t=stu[i];
stu[i]=stu[i+1];
stu[i+1]=t;
}
}
for(i=0;i<n;i++)
{
if(stu[i].no!=0)
printf("%s %s %s",stu[i].no,stu[i].zhuanye,stu[i].jiguan);
}
{
int xz,choice;
do
{
printf("\n1-返回菜单函数;2-退出系统\n");
scanf("%d",&choice);
if(choice<1||choice>2)
{
xz=1;
system("cls");
printf("输入错误,请重新选择\n");
}
else xz=0;
}while(xz==1);
switch(choice)
{
case 1:
menu();
break;
case 2:
exit(0);
break;
}
}
}
//删除函数
void shanchu()
{
int n,i,j;
char m[9];
n=load();
printf("输入你要删除学生的学号");
scanf("%s",&m);
for(i=0;i<n;i++)
if(!strcmp(stu[i].no,m))
{
for(j=0;j<n-1;j++)
{
strcpy(stu[j].no,stu[j+1].no);
strcpy(stu[j].name,stu[j+1].name);
stu[j].age=stu[j+1].age;
strcpy(stu[j].jiguan,stu[j+1].jiguan);
strcpy(stu[j].xibie,stu[j+1].xibie);
strcpy(stu[j].zhuanye,stu[j+1].zhuanye);
strcpy(stu[j].sex,stu[j+1].sex);
stu[j].ban=stu[j+1].ban;
}
save(n-1);
}
{
int xz,choice;
do
{
printf("\n1-返回主菜单;2-退出系统\n");
scanf("%d",&choice);
if(choice<1||choice>2)
{
xz=1;system("cls");
printf("输入错误,请重新选择\n");
}
else xz=0;
} while(xz==1);
switch(choice)
{
case 1:
menu();
break;
case 2:
exit(0);
break;
}
}
}
int main()
{
menu();
}