资源描述
(完整版)C语言学生信息管理系统(附源码)
学生信息管理系统
#include〈stdio。h>
#include<stdlib。h>
#include<conio.h〉
#include<dos.h>
#include<string。h>
#define LEN sizeof(struct student)
#define FORMAT "%-12d%—12s%-13。1f%—13。1f%-13.1f%—13。1f\n"
#define DATA stu[i].num,stu[i].name,stu[i]。chinese,stu[i].math,stu[i].english,stu[i].sum
/**************定义学生成绩结构体***********************/
struct student
{
int num;
char name[15];
float chinese;
float math;
float english;
float sum;
};
struct student stu[50];
/************函数声明与简介***************/
void input();
void show();
void order();
void del();
void modify();
void menu();
void insert();
void total();
void search();
int chcode();
/***********主函数****************/
int main()
{
int n;
int login = chcode();
if(!login)
{
printf("登录失败!\n”);
return 0;
}
printf("登录成功!\n”);
menu();
scanf(”%d",&n);
while(n)
{
switch(n)
{
case 0: exit(0);
case 1: input();break;
case 2: search();break;
case 3: del();break;
case 4: modify();break;
case 5: insert();break;
case 6: order();break;
case 7: total();break;
case 8: show();break;
default:printf("输入有误,请重新输入:");break;
}
getch();
menu();
scanf("%d",&n);
}
return 0;
}
/*******自定义函数实现菜单功能******/
void menu()
{
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):");
}
/*****录入学生信息**/
void input()
{
int i,m=0;
char ch[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〈m;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;i〈m;i++)
if(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”);
}
/******自定义查找*/
void search()
{
FILE *fp;
int snum,i,m=0;
char ch[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;i〈m;i++)
if(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");
}
/*****自定义删除***/
void del()
{
FILE*fp;
int snum,i,j,m=0;
char ch[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〈m;i++)
{
if(snum==stu[i]。num)
{
printf(”数据已经找到,是否确认删除?(y/n)");
scanf(”%s",ch);
if(strcmp(ch,”Y”)==0||strcmp(ch,"y”)==0)
{
for(j=i;j〈m;j++)
stu[j]=stu[i];
m-—;
if((fp=fopen("stuData。txt","wb"))==NULL)
{
printf("打开文件失败\n");
return;
}
for(j=0;j<m;j++)
if(fwrite(&stu[j],LEN,1,fp)!=1)
{
printf("对不起,保存失败!\n");
getch();
}
fclose(fp);
printf("删除成功!\n");
return;
}
else
{
printf("取消删除!\n");
return;
}
}
}
printf(”没有找到要删除的信息!\n");
}
/*******自定义修改函数***/
void modify()
{
FILE *fp;
int i,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<m;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("modify successful!");
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(”没有找到匹配信息”);
}
/********自定义插入函数****/
void insert()
{
FILE *fp;
int i,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;i〈m;i++)
if(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;k<m;k++)
if(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);
}
//************自定义排序函数****///
void order()
{
FILE *fp;
struct student t;
int i=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;i<m-1;i++)
if(fwrite(&stu[i],LEN,1,fp)!=1)
{
printf(”%s 保存失败!\n”);
getch();
}
fclose(fp);
printf(”操作成功\n”);
}
/*******显示学生总人数*******/
void total()
{
FILE *fp;
int m=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);
}
/*******显示学生信息*****/
void show()
{
FILE *fp;
int i,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<m;i++)
{
printf(FORMAT,DATA);
}
}
int chcode() {
char pw[50],ch;
char *syspw = ”1234”; // 原始密码
int i,m = 0;
printf("请输入密码:");
while(m < 3) {
i = 0;
while((ch = _getch()) != '\r’) {
if(ch == '\b’ && i 〉 0) {
printf("\b \b");
-—i;
}
else if(ch != '\b’) {
pw[i++] = ch;
printf("*”);
}
}
pw[i] = '\0’;
printf(”\n”);
if(strcmp(pw,syspw) != 0) {
printf(”密码错误,请重新输入!\n");
m++;
}
else {
printf(”密码正确!\n”);
system(”pause");
return 1;
}
}
printf("连续3次输入错误,退出!\n");
system("pause”);
return 0;
}
展开阅读全文