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.

380 lines
6.7 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<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#define N 100
struct student
{
char id[10];
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|------------------------------------------------------|");
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("菜单选择错,请重新选择!\n");}
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);
fclose(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].id);
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 i,n,m;
n=load();
if ((fp=fopen("results.txt","wb"))==NULL)
{
printf("文件打开错误!\n");
exit(1);
}
printf("你想要录入多少个学生信息?");
scanf("%d",&m);
for (i=0;i<m;i++)
{
printf("\n学号:");
scanf("%s",stu[n+i].id);
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);
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 meau();
int n,i;
char m[10];
n=load();
printf("\t\t\t欢迎使用学号查找功能\n请输入你需要查找的学生的学号:");
scanf("%s",&m);
for (i=0;i<n;i++)
{ if (!strcmp(stu[i].id,m))
{
printf("学号\t姓名\t性别\t年龄\t籍贯\t系别\t专业\t班级\n");
printf("%s",stu[i].id);
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[10];
n=load();
printf("欢迎使用修改功能\n输入你要修改学生的学号:");
scanf("%s",&m);
for (i=0;i<n;i++)
{
if (!strcmp(stu[i].id,m))
{
printf("你要修改的项目:\n1)学号2)姓名3)性别4)年龄5)籍贯6)系别7)专业8)班级\n");
printf("你选择的功能是:");
scanf("%d",&j);
switch (j)
{
case 1:
printf("输入你修改后的学号:");
scanf("%s",stu[i].id);
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_1()
{
int n,i,sum=0;
char m[10];
n=load();
printf("输入你要统计的学号:");
scanf("%s",&m);
printf("学号\t姓名\t性别\t年龄\t籍贯\t系别\t专业\t班级\n");
for (i=0;i<n;i++)
if (!strcmp(stu[i].id,m))
{
printf("%s",stu[i].id);
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);
sum++;
printf("%s学号的学生共有%d个\n",m,sum);}
}
void tongji_2()
{
int n,i,sum=0;
char m[25];
n=load();
printf("输入你要统计的专业:");
scanf("%s",&m);
printf("学号\t姓名\t性别\t年龄\t籍贯\t专业\t班级\n");
for (i=0;i<n;i++)
if (!strcmp(m,stu[i].zhuanye))
{
printf("%s",stu[i].id);
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);
sum++;
printf("%s专业的学生共有%d个/n",m,sum);}
}
void tongji()
{
int n,m;
n=load();
printf("欢迎使用统计功能\n你想统计的项目是:1) 学号\t2) 专业\n");
printf("输入你想选择的功能:");
scanf("%d",&m);
switch (m)
{
case 1:
tongji_1();
break;
case 2:
tongji_2();
break;
default :
printf("选择的功能错误\n");
int getch();
tongji();
break;
}
{
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;
}
}
}