C语言学生信息管理系统附源码.docx
《C语言学生信息管理系统附源码.docx》由会员分享,可在线阅读,更多相关《C语言学生信息管理系统附源码.docx(19页珍藏版)》请在冰豆网上搜索。
![C语言学生信息管理系统附源码.docx](https://file1.bdocx.com/fileroot1/2023-6/1/c0239106-7133-4543-9dc6-fdf7820f5971/c0239106-7133-4543-9dc6-fdf7820f59711.gif)
C语言学生信息管理系统附源码
学生信息管理系统
#include
#include
#include
#include
#include
#defineLENsizeof(structstudent)
#defineFORMAT"%-12d%-12s%-13.1f%-13.1f%-13.1f%-13.1f\n"
#defineDATAstu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].sum
/**************定义学生成绩结构体***********************/
structstudent
{
intnum;
charname[15];
floatchinese;
floatmath;
floatenglish;
floatsum;
};
structstudentstu[50];
/************函数声明与简介***************/
voidinput();
voidshow();
voidorder();
voiddel();
voidmodify();
voidmenu();
voidinsert();
voidtotal();
voidsearch();
intchcode();
/***********主函数****************/
intmain()
{
intn;
intlogin=chcode();
if(!
login)
{
printf("登录失败!
\n");
return0;
}
printf("登录成功!
\n");
menu();
scanf("%d",&n);
while(n)
{
switch(n)
{
case0:
exit(0);
case1:
input();break;
case2:
search();break;
case3:
del();break;
case4:
modify();break;
case5:
insert();break;
case6:
order();break;
case7:
total();break;
case8:
show();break;
default:
printf("输入有误,请重新输入:
");break;
}
getch();
menu();
scanf("%d",&n);
}
return0;
}
/*******自定义函数实现菜单功能******/
voidmenu()
{
system("cls");
printf("\t\t|-------------学生信息系统----------|\n");
printf("\t\t||\n");
printf("\t\t|0.退出系统\t\t\t|\n");
printf("\t\t|1.输入记录\t\t\t|\n");
printf("\t\t|2.查找记录\t\t\t|\n");
printf("\t\t|3.删除记录\t\t\t|\n");
printf("\t\t|4.修改记录\t\t\t|\n");
printf("\t\t|5.插入记录\t\t\t|\n");
printf("\t\t|6.记录排序\t\t\t|\n");
printf("\t\t|7.记录个数\t\t\t|\n");
printf("\t\t|8.显示记录\t\t\t|\n");
printf("\t\t|-----------------------------------|\n\n");
printf("\t\t请输入你的操作(0-8):
");
}
/*****录入学生信息**/
voidinput()
{
inti,m=0;
charch[2];
FILE*fp;/*定义指针文件*/
if((fp=fopen("stuData.tet","a+"))==NULL)
{
printf("打开文件失败\n");
return;
}
while(!
feof(fp))
{
if(fread(&stu[m],LEN,1,fp)==1)
m++;
}
fclose(fp);
if(m==0)
printf("没有数据!
\n");
else
{
system("cls");
show();
}
if((fp=fopen("stuData.txt","wb"))==NULL)
{
printf("打开文件失败\n");
return;
}
for(i=0;i{
fwrite(&stu[i],LEN,1,fp);
}
printf("请确认(y/n):
");
scanf("%s",ch);
while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("学号:
");
scanf("%d",&stu[m].num);
for(i=0;iif(stu[i].num==stu[m].num)
{
printf("此学号已存在!
");
getch();
fclose(fp);
return;
}
printf("姓名:
");
scanf("%s",stu[m].name);
printf("语文成绩:
");
scanf("%f",&stu[m].chinese);
printf("数学成绩:
");
scanf("%f",&stu[m].math);
printf("英语成绩:
");
scanf("%f",&stu[m].english);
stu[m].sum=stu[m].chinese+stu[m].math+stu[m].english;
if(fwrite(&stu[m],LEN,1,fp)!
=1)
{
printf("保存失败!
");
getch();
}
else
{
printf("%s已保存!
\n",stu[m].name);
m++;
}
printf("是否继续?
(y/n):
");
scanf("%s",ch);
}
fclose(fp);
printf("操作成功!
\n");
}
/******自定义查找*/
voidsearch()
{
FILE*fp;
intsnum,i,m=0;
charch[2];
if((fp=fopen("stuData.txt","rb"))==NULL)
{
printf("打开文件失败\n");
return;
}
while(!
feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("文件无记录!
\n");
return;
}
printf("请输入需要查找的学生学号:
");
scanf("%d",&snum);
for(i=0;iif(snum==stu[i].num)
{
printf("学生数据已找到,确认显示?
(y/n)");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("学号姓名语文数学英语总分\t\n");
printf(FORMAT,DATA);
break;
}
}
if(i==m)
printf("查找失败!
\n");
}
/*****自定义删除***/
voiddel()
{
FILE*fp;
intsnum,i,j,m=0;
charch[2];
if((fp=fopen("stuData.tet","r+"))==NULL)
{
printf("打开文件失败\n");return;
}
while(!
feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("文件无记录!
\n");
return;
}
show();
printf("请输入需要删除的学生学号:
");
scanf("%d",&snum);
for(i=0;i{
if(snum==stu[i].num)
{
printf("数据已经找到,是否确认删除?
(y/n)");
scanf("%s",ch);
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
for(j=i;jstu[j]=stu[i];
m--;
if((fp=fopen("stuData.txt","wb"))==NULL)
{
printf("打开文件失败\n");
return;
}
for(j=0;jif(fwrite(&stu[j],LEN,1,fp)!
=1)
{
printf("对不起,保存失败!
\n");
getch();
}
fclose(fp);
printf("删除成功!
\n");
return;
}
else
{
printf("取消删除!
\n");
return;
}
}
}
printf("没有找到要删除的信息!
\n");
}
/*******自定义修改函数***/
voidmodify()
{
FILE*fp;
inti,j,m=0,snum;
if((fp=fopen("stuData.txt","r+"))==NULL)
{
printf("打开文件失败\n");
return;
}
while(!
feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
if(m==0)
{
printf("文件无记录!
\n");
fclose(fp);
return;
}
show();
printf("请输入你要修改的的学生学号\n");
printf("学号是:
");
scanf("%d",&snum);
for(i=0;i{
if(snum==stu[i].sum)
{
printf("学生数据已找到,请修改!
\n");
printf("name");
scanf("%s",stu[i].name);
printf("chinese");
scanf("%f",&stu[i].chinese);
printf("math:
");
scanf("%f",&stu[i].chinese);
printf("english:
");
scanf("%f",&stu[i].english);
printf("modifysuccessful!
");
stu[i].sum=stu[i].chinese+stu[i].math+stu[i].english;
if((fp=fopen("stuData.txt","wb"))==NULL)
{
printf("保存失败!
");
getch();
}
fclose(fp);
return;
}
}
printf("没有找到匹配信息");
}
/********自定义插入函数****/
voidinsert()
{
FILE*fp;
inti,j,k,m=0,snum;
if((fp=fopen("stuData.txt","r+"))==NULL)
{
printf("打开文件失败\n");
return;
}
while(!
feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)m++;
if(m==0)
{
printf("没有数据!
\n");
fclose(fp);
return;
}
printf("请输入数据插入的位置:
\n");
scanf("%d",&snum);
for(i=0;iif(snum==stu[i].num)
break;
for(j=m-1;j>i;j--)
stu[j+i]=stu[j];
printf("请输入待插入数据信息.\n");
printf("学号");
scanf("%d",&stu[i+1].num);
for(k=0;kif(stu[k].num==stu[m].num)
{
printf("此学号已存在!
");
getch();
fclose(fp);
return;
}
printf("姓名");
scanf("%s",stu[i+1].name);
printf("语文成绩:
");
scanf("%f",&stu[i+1].chinese);
printf("数学成绩:
");
scanf("%f",&stu[i+1].math);
printf("英语成绩:
");
scanf("%f",&stu[i+1].english);
stu[i+1].sum=stu[i+1].chinese+stu[i+1].math+stu[i+1].english;
if((fp=fopen("stuData.txt","wb"))==NULL)
{
printf("打开文件失败\n");
return;
}
for(k=0;k<=m;k++)
if(fwrite(&stu[k],LEN,1,fp)!
=1)
{
printf("保存失败!
");
getch();
return;
}
printf("插入函数成功!
");
getch();
fclose(fp);
}
//************自定义排序函数****///
voidorder()
{
FILE*fp;
structstudentt;
inti=0,j=0,m=0;
if((fp=fopen("stuData.txt","r+"))==NULL)
{
printf("打开文件失败!
\n");
return;
}
while(!
feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
fclose(fp);
if(m==0)
{
printf("无记录!
\n");
return;
}
if((fp=fopen("stuData.txt","wb"))==NULL)
{
printf("打开文件失败\n");
return;
}
for(i=0;iif(fwrite(&stu[i],LEN,1,fp)!
=1)
{
printf("%s保存失败!
\n");
getch();
}
fclose(fp);
printf("操作成功\n");
}
/*******显示学生总人数*******/
voidtotal()
{
FILE*fp;
intm=0;
if((fp=fopen("stuData.txt","r+"))==NULL)
{
printf("打开文件失败\n");
return;
}
while(!
feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++;
if(m==0)
{
printf("文件无记录!
\n");
fclose(fp);
return;
}
printf("学生总数为%d位!
\n",m);
fclose(fp);
}
/*******显示学生信息*****/
voidshow()
{
FILE*fp;
inti,m=0;
fp=fopen("stuData.txt","rb");
while(!
feof(fp))
{
if(fread(&stu[m],LEN,1,fp)==1)
m++;
}
fclose(fp);
printf("学号姓名语文数学英语总分\t\n");
for(i=0;i{
printf(FORMAT,DATA);
}
}
intchcode(){
charpw[50],ch;
char*syspw="1234";//原始密码
inti,m=0;
printf("请输入密码:
");
while(m<3){
i=0;
while((ch=_getch())!
='\r'){
if(ch=='\b'&&i>0){
printf("\b\b");
--i;
}
elseif(ch!
='\b'){
pw[i++]=ch;
printf("*");
}
}
pw[i]='\0';
printf("\n");
if(strcmp(pw,syspw)!
=0){
printf("密码错误,请重新输入!
\n");
m++;
}
else{
printf("密码正确!
\n");
system("pause");
return1;
}
}
printf("连续3次输入错误,退出!
\n");
system("pause");
return0;
}