📄 skt.txt
字号:
// 学校学生信息管理系统
/*****************************************************************/
# include "stdio.h"
# include "stdlib.h"
# include "string.h"
# include "conio.h"
# define NAME 20
# define CLAS 20
# define STUDENTMAX 1000 //学生最大人数
# define PASSWORD "123abc" //系统登陆密码
# define filename "d:\\学生信息.txt" //记录学生信息
# define filename1 "d:\\学生信息1.txt" //记录学生信息(按学号由小到大)
# define filename2 "d:\\学生信息2.txt" //记录学生信息(按总分由高到低)
/************************学生信息结构体**********************/
struct studentsorc //学生信息结构
{
char name[NAME]; //学生姓名
int ID; //学生学号
char clas[CLAS];//学生班级
float sorc[3]; //记录学生成绩
};
FILE *sorcfile=NULL; //存学生信息数据文件
/************************函数块声明****************************/
int password(); //密码验证
int showmeun(); //系统主菜单显示
int weihumeun(); //维护菜单显示
void jiansuomeun(struct studentsorc *); //检索菜单显示
void weihumain(struct studentsorc *); //信息维护主函数
void inputinfo(struct studentsorc *); //个人信息录入
void modinfo (struct studentsorc *); //修改信息
void seasorc1 (struct studentsorc*); //查找个人信息
void seasorc2 (struct studentsorc*); //查找班级信息
void allabout(struct studentsorc*); //浏览所有信息
void delinfo(struct studentsorc*); //删除个人信息
int sorcdatfile(struct studentsorc*); //信息数据处理文件
//////////////////////////主函数//////////////////////////////////////////
void main()
{
struct studentsorc studentmax[STUDENTMAX]; //最大学生人数
struct studentsorc *p_student; //指向结构指针
int in,pass;
p_student=studentmax; //指向结构体
pass=password(); //获取用户密码验证
if(pass==0) return;
do
{
system("cls");
in=showmeun(); //系统主菜单显示
switch(in)
{
case 1 : weihumain(p_student); break;
case 2 : jiansuomeun(p_student); break;
case 3 : break;
default: printf("没有此选项,请按任意键返回重新选择!");
getch();
system("cls");
break;
}
}while(in!=3);
system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t");
printf("谢 谢 使 用 本 系 统 !");
return;
}
/************************密码验证*****************************/
int password()
{
char pass[20];
int i=0;
printf("\n\n\n\n\n\n\n\t\t\t 学生信息管理系统 \n");
printf("\n\t\t\t 用户名:S.K.T \n");
printf("\n\t\t\t 密 码:");
while (1)
{
pass[i]=getch();
if(pass[i]==13) break;
putchar('*');
i++;
}
pass[i]='\0';
if(strcmp(pass,PASSWORD)==0) //开始验证
return 1;
system("cls");
printf("\n\n\n\n\n\n\n\n\t\t\t\t密 码 错 误 !");
getch();
system("cls");
return 0;
}
/***********************系统主菜单************************/
int showmeun()
{
int in;
printf("\n\n\n\n");
printf("\t 欢 迎 登 陆 学 生 信 息 管 理 系 统 ! \n\n\n");
printf("\t==============================================================\n");
printf("\t 学生个人信息管理系统 \n");
printf("\t ------------------------------------------------------------\n");
printf("\t 1. 信 息 维 护 \n");
printf("\t \n");
printf("\t 2. 信 息 检 索 \n");
printf("\t \n");
printf("\t 3. 退 出 系 统 \n");
printf("\t \n");
printf("\t==============================================================\n");
printf("\t 请您正确选择:");
scanf("%d",&in);
return in;
}
/************************信息维护主函数**************************************/
void weihumain(struct studentsorc *p_student)
{
int in;
do
{
system("cls");
in=weihumeun(); //菜单显示
switch(in)
{
case 1 : inputinfo(p_student); break;//输入个人信息
case 2 : modinfo(p_student); break;//修改个人信息
case 3 : delinfo(p_student); break;//删除个人信息
case 4 : break;
default: printf("没有此选项。请您重新输入(1-4)");
getch();
system("cls");
break;
}
}while(in!=4);
system("cls");
return ;
}
/***********************信息维护子菜单*************************/
int weihumeun()
{
int in;
system("cls");
printf("\n\n\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 请您正确选择:");
scanf("%d",&in);
return in;
}
////////////////////////////////////信息检索子菜单/////////////////////////////
void jiansuomeun(struct studentsorc *p_student)
{
int in;
do
{
system("cls");
printf("\n\n\n\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 请您正确选择: ");
scanf("%d",&in);
switch(in)
{
case 1 : seasorc1(p_student); break;
case 2 : seasorc2(p_student); break;
case 3 : allabout(p_student); break;
case 4 : return ; //返回
default: printf("没有此选项,请正确选择!"); break;
}
}while(1);
}
/************************个人信息录入*************************/
void inputinfo(struct studentsorc *p_student)
{
int count=0;
char ch;
system("cls");
if((sorcfile=fopen(filename,"ab+"))==NULL) //打开或新建成绩数据文件
{
printf("不能找开文件,请确认磁盘已满或文件是否存在");
getch();
return;
}
rewind(sorcfile); //指向文件头读取数据
while(!feof(sorcfile))
{
fread(&p_student[count],sizeof(struct studentsorc),1,sorcfile);
count++;
}
while(count<STUDENTMAX)
{
printf("请输入第%d个学生的姓名:",count);
scanf("%s",p_student[count-1].name);
printf("请输入该学生的学号:");
scanf("%d",&p_student[count-1].ID);
printf("请输入该学生的班级:");
scanf("%s",p_student[count-1].clas);
printf("请输入该学生的3科成绩\n");
printf("——————————————————————————————\n");
printf("\n语文: ");
scanf("%f",&p_student[count-1].sorc[0]);
printf("\n数学: ");
scanf("%f",&p_student[count-1].sorc[1]);
printf("\n英语: ");
scanf("%f",&p_student[count-1].sorc[2]);
printf("——————————————————————————————\n");
fwrite(&p_student[count-1],sizeof(struct studentsorc),1,sorcfile);//写入文件
count++;
printf("确定要继续输入下一个学生的成绩吗(y/n):");
getchar();
ch=getchar();
if(ch=='n'||ch=='N')
{
system("cls");
fclose(sorcfile);
return;
}
}
}
/////////////////////////////学生信息修改////////////////////////////////////////////
void modinfo(struct studentsorc *p_student)
{
char name[NAME],clas[CLAS],ch,c;
int count,i,j,ID,newID,choice;
float sorc;
count=sorcdatfile(p_student);
if(!count)
{
printf("读取数据失败,请确认数据是否存在或文件是否损害");
getch();
system("cls");
return ;
}
printf("请输入要修改的学生学号:");
scanf("%d",&ID);
for(i=0;i<count;i++)
if(ID==p_student[i].ID)
{
printf("学号为%d的学生成绩表\n",ID);
printf("——————————————————————————\n");
printf("\n学号: %d\n",p_student[i].ID);
printf("\n姓名: %s\n",p_student[i].name);
printf("\n班级: %s\n",p_student[i].clas);
printf("\n语文: %.2f\n",p_student[i].sorc[0]);
printf("\n数学: %.2f\n",p_student[i].sorc[1]);
printf("\n英语: %.2f\n",p_student[i].sorc[2]);
printf("——————————————————————————\n");
printf("确定要把该学生的信息修改吗?(y/n):");
getchar();
c=getchar();
getchar();
if(c=='N'||c=='n')
{
system("cls");
return;
}
printf("请选择要修改的个人信息:1.姓名 2.学号 3.班级 4.成绩\n");
printf("choose:");
scanf("%d",&choice);
getchar();
if(choice==1)
{
printf("请您输入该学生的新姓名:");
gets(name);
system("cls");
printf("\n\n\n\n\t\t\t确定要把该学生的姓名修改吗?(y/n):");
ch=getchar();
getchar();
if(ch=='y'||ch=='Y')
strcpy(p_student[i].name,name); //修改姓名
else
{
system("cls");
return;
}
}
else if(choice==2)
{
printf("请您输入该学生的新学号:");
scanf("%d",&newID);
system("cls");
printf("\n\n\n\n\t\t\t确定要把该学生的学号修改吗?(y/n):");
getchar();
ch=getchar();
getchar();
if(ch=='y'||ch=='Y')
p_student[i].ID=newID;
else
{
system("cls");
return;
}
}
else if(choice==3)
{
printf("请您输入该学生的新班级:");
gets(clas);
system("cls");
printf("\n\n\n\n\t\t\t确定要把该学生的班级修改吗?(y/n):");
ch=getchar();
getchar();
if(ch=='y'||ch=='Y')
strcpy(p_student[i].clas,clas);
else
{
system("cls");
return;
}
}
else if(choice==4)
{
printf("请选择要修改的科目成绩:1.语文 2.数学 3.英语\n");
scanf("%d",&j);
if(j==1)
{
printf("请重新输入语文成绩: ");
scanf("%f",&sorc);
system("cls");
printf("\n\n\n\n\t\t\t确定要把该学生的语文成绩修改吗?(y/n):");
getchar();
ch=getchar();
getchar();
if(ch=='y'||ch=='Y')
p_student[i].sorc[0]=sorc;
else
{
system("cls");
return;
}
}
else if(j==2)
{
printf("请重新输入数学成绩: ");
scanf("%f",&sorc);
system("cls");
printf("\n\n\n\n\t\t\t确定要把该学生的数学成绩修改吗?(y/n):");
getchar();
ch=getchar();
getchar();
if(ch=='y'||ch=='Y')
p_student[i].sorc[1]=sorc;
else
{
system("cls");
return;
}
}
else if(j==3)
{
printf("请重新输入英语成绩: ");
scanf("%f",&sorc);
system("cls");
printf("\n\n\n\n\t\t\t确定要把该学生的英语成绩修改吗?(y/n):");
getchar();
ch=getchar();
getchar();
if(ch=='y'||ch=='Y')
p_student[i].sorc[2]=sorc;
else
{
system("cls");
return;
}
}
else
{
printf("没有此科目,返回.......!");
getch();
system("cls");
return ;
}
}
else
{
printf("没有此选项,返回.......!");
getch();
system("cls");
return ;
}
sorcfile=fopen(filename,"wb"); //把修改后的重新写入文件
for(i=0;i<count;i++)
if(fwrite(&p_student[i],sizeof(struct studentsorc),1,sorcfile)!=1)
{
fclose(sorcfile); //写入失败关闭文件
printf("\t\t\t修改失败,返回.......!");
getch();
system("cls");
return ;
}
fclose(sorcfile);
printf("\t\t\t修改成功,返回.......!");
getch();
system("cls");
return ;
}
printf("没有找到该学生,返回.......!");
getch();
system("cls");
return ;
}
/************************删除学生成绩******************************/
void delinfo(struct studentsorc *p_student)
{
int i,count,n=0,in,stuID;
char tempname[NAME];
count=sorcdatfile(p_student);
if(!count)
{
printf("读取数据失败!请确认已成功录入功或文件是否损害!");
getch();
system("cls");
return ;
}
if((sorcfile=fopen(filename,"wb"))==NULL)
{
printf("不能找开文件,请确认磁盘已满或文件是否存在!");
getch();
return ;
}
printf("请选择你操作的选项: 1. 按姓名查找删除 2. 按学号查找删除");
scanf("%d",&in);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -