📄 高校学生学籍管理系统.cpp
字号:
#include<stdio.h>
#include<string.h>
#define N 10
struct date_type
{
int year;
int month;
}date;
struct student_type
{
char academy[10];
char class1[10];
int num;
char name[10];
char sex[4];
struct date_type date;
char address[10];
int score[3];
float average;
int sum;
int record;
};
struct student_type stu[N],*p,*q[N];
void Read(struct student_type stu[]); /*数据读入*/
void Add(struct student_type stu[]); /*增加学生*/
void Delete(struct student_type stu[]); /*删除学生*/
void Modify(struct student_type stu[]); /*修改学生*/
void Search(struct student_type stu[]); /*查询学生*/
void Print(struct student_type stu[]); /*输出所有学生信息*/
void Stat(struct student_type stu[]); /*统计*/
void Save(struct student_type stu[]); /*数据存盘*/
int r=0;
void main()
{
int x; /*/加入有记录才能读如数据/*/
Read(stu);
do
{ /*/改成需要y启动,n退出/*/
printf("\t\t|※※※※※※※※※※※※※※※※※※※※※※※|\n");
printf("\t\t|※ 欢迎使用本软件 ※|\n");
printf("\t\t ------------------------------------------------ \n");
printf("\t\t|※ ※|\n");
printf("\t\t|※ 制作者: 游道义 孙兰 ※|\n");
printf("\t\t|※ ※|\n");
printf("\t\t|※※※※※※※※※※※※※※※※※※※※※※※|\n");
printf("\t\t ------------------------------------------------ \n");
printf("\t\t|★★★★★★★★学籍管理系统★★★★★★★★★|\n");
printf("\t\t|★------------------------------------------★|\n");
printf("\t\t|★ 1.录入学生信息 ★|\n");
printf("\t\t|★ ★|\n");
printf("\t\t|★ 2.修改学生信息 ★|\n");
printf("\t\t|★ ★|\n");
printf("\t\t|★ 3.查询学生信息 ★|\n");
printf("\t\t|★ ★|\n");
printf("\t\t|★ 4.浏览所有学生信息 ★|\n");
printf("\t\t|★ ★|\n");
printf("\t\t|★ 5.删除学生信息 ★|\n");
printf("\t\t|★ ★|\n");
printf("\t\t|★ 6.综合统计 ★|\n");
printf("\t\t|★ ★|\n");
printf("\t\t|★ 0.保存并退出系统 ★|\n");
printf("\t\t|★★★★★★★★★★★★★★★★★★★★★★★|\n");
printf("\t\t ----------------------------------------------- \n");
printf("请在0-6中选择: ");
scanf("%d",&x);
switch(x)
{
case 1:Add(stu); /*录入模块*/
break;
case 2:Modify(stu); /*修改模块*/
break;
case 3:Search(stu); /*查询模块*/
break;
case 4:Print(stu); /*输出模块*/
break;
case 5:Delete(stu); /*删除模块*/
break;
case 6:Stat(stu); /*统计模块*/
break;
case 0:Save(stu);
break;
}
}
while(x!=0);
}
void Add (struct student_type stu[]) /*录入模块*/
{
int i;
char k;
for(i=r;i<N;i++)
{
printf("\n 请输入学院:");
scanf("%s",stu[i].academy);
printf("\n 请输入班级:");
scanf("%s",stu[i].class1);
printf("\n 请输入学号:");
scanf("%d",&stu[i].num);
printf("\n 请输入姓名:");
scanf("%s",stu[i].name);
printf("\n 请输入性别:");
scanf("%s",stu[i].sex);
printf("\n请输入出生年月:");
scanf("%d%d",&stu[i].date.year,&stu[i].date.month);
printf("\n 请输入住址:");
scanf("%s",stu[i].address);
printf("\n 请输入成绩:");
scanf("%d%d%d",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
r=r+1;
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
stu[i].average=stu[i].sum/3;
printf("----------是否继续??(y/n):");
scanf("%s",&k);
if(k=='y'||k=='Y') continue;
else
printf("----------录入结束!----------\n\n");
return;
}
}
void Save(struct student_type stu[]) /*保存模块*/
{
int i;
stu[0].record=r;
FILE *fp1; /*指向文件的指针*/
if((fp1=fopen("E:\\xj.txt","wb"))==NULL) /*打开文件,并判断打开是否正常*/
{
printf("----------打开文件失败!----------\n\n");
return;
}
printf("开始存盘!\n");
for(i=0;i<r;i++)
if(fwrite(&stu[i],sizeof(struct student_type),1,fp1)==0)
printf("----------数据存盘失败!----------\n\n");
fclose(fp1);
printf("----------存盘成功!----------\n"); /*显示保存成功*/
}
void Search(struct student_type stu[]) /*查询模块*/
{
int y=0,i,k;
printf("请输入学号:");
scanf("%d",&k);
for(i=0;i<r;i++)
{
if(k==stu[i].num)
{
printf("学院:%s\n班级:%s\n学号:%d\n姓名:%s\n性别:%s\n出生年月:%d%d\n地址:%s\n成绩:\nC语言:%d高数:%d英语:%d\n",stu[i].academy,stu[i].class1,stu[i].num,stu[i].name,stu[i].sex,stu[i].date.year,stu[i].date.month,stu[i].address,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
y=1;
}
}
if(y==0)
printf("----------该学生不存在,请咨询再查!----------\n\n");
return;
}
void Delete(struct student_type stu[]) /*删除模块*/
{
int i,j,k,y=0;
int m=110,n;
printf("请输入密码:");
scanf("%d",&n);
if(n==m);
else
{printf("----------密码错误!----------\n\n");
return;
}
printf("请输入学号:");
scanf("%d",&k);
for(i=0;i<r;i++)
{
if(k==stu[i].num)
{
for(j=i;j<r;j++)
stu[j]=stu[j+1];
r=r-1;
printf("----------删除成功!----------\n\n");
y=1;
}
}
if(y==0)
printf("----------该学生不存在,请咨询再查!----------\n\n");
}void Print(struct student_type stu[]) /*输出模块*/
{
int i,j,k,n;
struct student_type t;
printf(" 1.按学号排序,2.按总分排序(由高到低)\n");
printf("\n请在1和2中选择:");
scanf("%d",&n);
if(n==1) /*选择排序*/
for(i=0;i<r-1;i++)
{
k=i;
for(j=i+1;j<r;j++)
if(stu[k].num>stu[j].num)
k=j;
if(k!=i)
{
t=stu[i];
stu[i]=stu[k];
stu[k]=t;
}
}
if(n==2)
for(i=0;i<r-1;i++)
{
k=i;
for(j=i+1;j<r;j++)
if(stu[k].sum<stu[j].sum)
k=j;
if(k!=i)
{
t=stu[i];
stu[i]=stu[k];
stu[k]=t;
}
}
for(i=0;i<r;i++)
{
printf("\n学院\t班级\t学号\t姓名\t性别\t出生年月\t地址\n");
printf("%s\t%s\t%d\t%s\t%s\t%d %d\t\t%s\n",stu[i].academy,stu[i].class1,stu[i].num,stu[i].name,stu[i].sex,stu[i].date.year,stu[i].date.month,stu[i].address);
printf("C语言\t高数\t英语\t平均分\t总分\n");
printf("%d\t%d\t%d\t%0.1f\t%d\n",stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].average,stu[i].sum);
}
}
void Stat(struct student_type stu[]) /*统计模块*/
{
int i,j,k;
printf("0.C语言 1.高数 2.英语");
printf("请在0-2中选择:");
scanf("%d",&j);
k=j;
printf("90-100:\n");
printf(" 学号\t姓名\t成绩\n");
for(i=0;i<r;i++)
{
if(stu[i].score[k]>=90)
printf(" %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);
}
printf("80-90:\n");
printf(" 学号\t姓名\t成绩\n");
for(i=0;i<r;i++)
{
if(stu[i].score[k]<90&&stu[i].score[k]>=80)
printf(" %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);
}
printf("70-80:\n");
printf(" 学号\t姓名\t成绩\n");
for(i=0;i<r;i++)
{
if(stu[i].score[k]<80&&stu[i].score[k]>=70)
printf(" %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);
}
printf("60-70:\n");
printf(" 学号\t姓名\t成绩\n");
for(i=0;i<r;i++)
{
if(stu[i].score[k]<70&&stu[i].score[k]>=60)
printf(" %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);
}
printf("60分以下:\n");
printf(" 学号\t姓名\t成绩\n");
for(i=0;i<r;i++)
{
if(stu[i].score[k]<60)
printf(" %d\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score[k]);
}
}
void Modify(struct student_type stu[]) /*修改模块*/
{
int k,i,y=0;
int m=110,n;
printf("请输入密码:");
scanf("%d",&n);
if(n==m);
else
{
printf("----------密码错误!----------\n\n");
return;
}
printf("------------------修改学生信息----------------\n");
printf("\n请输入要修改学生的学号: ");
scanf("%d",&k);
for(i=0;i<r;i++)
{
if(k==stu[i].num)
{
printf("\n请输入新内容:\n");
printf("\n 请输入学院:");
scanf("%s",stu[i].academy);
printf("\n 请输入班级:");
scanf("%s",stu[i].class1);
printf("\n 请输入学号:");
scanf("%d",&stu[i].num);
printf("\n 请输入姓名:");
scanf("%s",stu[i].name);
printf("\n 请输入性别:");
scanf("%s",stu[i].sex);
printf("\n请输入出生年月:");
scanf("%d%d",&stu[i].date.year,&stu[i].date.month);
printf("\n 请输入地址:");
scanf("%s",stu[i].address);
printf("\n 请输入成绩:");
scanf("%d%d%d",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
printf("\n----------修改成功!----------\n\n");
y=1;
}
}
if(y==0)
printf("----------该学生不存在,请咨询再查!----------\n\n");
return;
}
void duru(struct student_type stu[]) /*数据读入模块*/
{
int i;
FILE *fp; /*指向文件的指针*/
if((fp=fopen("E:\\xj.txt","rb"))==NULL) /*打开文件,并判断打开是否正常*/
{
printf("打开文件失败!\n");
return;
}
printf("文件开始读取!\n");
rewind(fp);
for(i=0;i<=r;i++)
{
fread(&stu[i],sizeof(struct student_type),1,fp);
r=stu[0].record;
}
printf("\n文件成功读取!\n");
fclose(fp);
r=stu[0].record;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -