C语言课程设计

时间:2022-12-17 00:21:27

  学生学籍管理系统

功能及要求描述:

(1)   系统涉及的学生学籍至少应该包括学号、姓名、性别、年龄、籍贯、系别、专业、班级等;

(2)   学籍登录、插入功能;

(3)   学籍记录修改功能;

(4)   学籍记录删除功能;

(5)   学籍记录查找功能;

(6)   学籍表输出功能;

(7)   系统应该具有简单的菜单,能实现友好的交互。


说明:请在 d盘中建一个 以program命名的文件夹!!

代码:


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
int root;
struct student
{
int num;
char name[50];
char sex[20];
int old;
char address[50];
char xb[20];
char zy[20];
}stu[1000000];
void menu()
{
system("cls");//清屏!!
printf("\t\t\t**********welcom!!!************\n");
printf("\t\t\t*******************************\n");
printf("\t\t\t** 0:改变登陆权限 **\n");
printf("\t\t\t** 1:新建一个学籍管理系统 **\n");
printf("\t\t\t** 2:增加学生学籍 **\n");
printf("\t\t\t** 3:修改学生学籍信息 **\n");
printf("\t\t\t** 4:删除学生学籍 **\n");
printf("\t\t\t** 5:查找学生学籍 **\n");
printf("\t\t\t** 6:输出所有学生学籍 **\n");
printf("\t\t\t** 7:退出学籍管理系统 **\n");
printf("\t\t\t*******************************\n");
if(root)
{
printf("\t\t\t** 8:修改管理员密码 **\n");
printf("\t\t\t\t\t\t管理员权限\n");
}
else
printf("\t\t\t\t\t\t来宾权限\n");
}
void newbuild()/*新建一个学籍管理系统*/
{
if(!root)
{
printf("sorry,你没有该权限!!\n");
system("pause\n");
return;
}
int a,b,n;
printf("说明:新建将删除以前的系统,请输入一个数确定是否进行新建!!是1,否0 \n");
scanf("%d",&b);
if(b==0)
return;
printf("请你输入你新建学籍管理系统所需登录学生个数\n");
scanf("%d",&n);
printf("请依次输入每个学生的 学号 姓名 性别 年龄 籍贯 系院 专业 \n");
for(a=0;a<n;a++)
scanf("%d%s%s%d%s%s%s",&stu[a].num,stu[a].name,stu[a].sex,&stu[a].old,stu[a].address,stu[a].xb,stu[a].zy);
FILE *fp;
if((fp=fopen("d:\\program\\student.txt","w"))==NULL)
{
printf("\n打开文件失败!!!\n");
getch();
exit(1);
}
for(a=0;a<n;a++)
fprintf(fp,"%d%c%s%c%s%c%d%c%s%c%s%c%s%c",stu[a].num,' ',stu[a].name,' ',stu[a].sex,' ',stu[a].old,' ',stu[a].address,' ',stu[a].xb,' ',stu[a].zy,'\n');
printf("录入成功!!!数据已储存于d:\\program\\student.txt \n");
fclose(fp);
system("pause\n");
}
void add()/*增加学生学籍*/
{
if(!root)
{
printf("sorry,你没有该权限!!\n");
system("pause\n");
return;
}
int a,b,n;
FILE *fp;
if((fp=fopen("d:\\program\\student.txt","a"))==NULL)
{
printf("\n打开文件失败!!!\n");
getch();
exit(1);
}
while(1)
{
printf("增加请输入1,结束增加请输入0 \n");
scanf("%d",&n);
getchar();
if(!n)
break;
printf("请依次输入增加的每个学生的 学号 姓名 性别 年龄 籍贯 系院 专业 \n");
scanf("%d%s%s%d%s%s%s",&stu[0].num,stu[0].name,stu[0].sex,&stu[0].old,stu[0].address,stu[0].xb,stu[0].zy);
fprintf(fp,"%d%c%s%c%s%c%d%c%s%c%s%c%s%c",stu[0].num,' ',stu[0].name,' ',stu[0].sex,' ',stu[0].old,' ',stu[0].address,' ',stu[0].xb,' ',stu[0].zy,'\n');
}
fclose(fp);
system("pause\n");
}
void modify()/*修改学生学籍信息*/
{
if(!root)
{
printf("sorry,你没有该权限!!\n");
system("pause\n");
return;
}
int a=0,b,n;
FILE *fp;
if((fp=fopen("d:\\program\\student.txt","r"))==NULL)
{
printf("\n打开文件失败!!!\n");
getch();
exit(1);
}
memset(stu,0,sizeof(stu));
while(fscanf(fp,"%d",&stu[a].num)!=EOF)
{
fscanf(fp,"%s%s%d%s%s%s",stu[a].name,stu[a].sex,&stu[a].old,stu[a].address,stu[a].xb,stu[a].zy);
a++;
}
fclose(fp);
while(1)
{
printf("_____________________________\n");
printf("__ 1:按照学号修改学生学籍:__\n");
printf("__ 2:按照姓名修改学生学籍:__\n");
printf("__ 3:返回主菜单 __\n");
printf("_____________________________\n");
printf("输入数据,请选择(1—3):\n");
scanf("%d",&n);
while(n<1||n>3)
{
printf("输入错误,请重新输入!!\n");
scanf("%d",&n);
}
if(n==3)
break;
if(n==1)
{
int num,loop=0;
printf("\n请输入学号:\n");
scanf("%d",&num);
for(b=0;b<a;b++)
{
if(stu[b].num==num)
{
loop=1;
printf("请输入该学生的新学籍信息:依次输入 学号 姓名 性别 年龄 籍贯 系院 专业\n");
scanf("%d%s%s%d%s%s%s",&stu[b].num,stu[b].name,stu[b].sex,&stu[b].old,stu[b].address,stu[b].xb,stu[b].zy);
break;
}
}
if(loop)
printf("\n修改成功!!\n");
else
printf("\n不存在该学生!!\n");
}
else if(n==2)
{
int loop=0;
char ch[50];
printf("\n请输入姓名:\n");
scanf("%s",ch);
for(b=0;b<a;b++)
{
if(!strcmp(ch,stu[b].name))
{
loop=1;
printf("\n请输入该学生的新学籍信息:依次输入 学号 姓名 性别 年龄 籍贯 系院 专业\n");
scanf("%d%s%s%d%s%s%s",&stu[b].num,stu[b].name,stu[b].sex,&stu[b].old,stu[b].address,stu[b].xb,stu[b].zy);
break;
}
}
if(loop)
printf("\n修改成功!!\n");
else
printf("\n不存在该学号生!!\n");
}
}
if((fp=fopen("d:\\program\\student.txt","w"))==NULL)
{
printf("\n打开文件失败!!!\n");
getch();
exit(1);
}
for(b=0;b<a;b++)
fprintf(fp,"%d%c%s%c%s%c%d%c%s%c%s%c%s%c",stu[b].num,' ',stu[b].name,' ',stu[b].sex,' ',stu[b].old,' ',stu[b].address,' ',stu[b].xb,' ',stu[b].zy,'\n');
printf("\n++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("++ 成功!!!数据已储存于d:\\program\\student.txt ++\n");
printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
fclose(fp);
system("pause\n");
}
void del()/*删除学生学籍*/
{
if(!root)
{
printf("sorry,你没有该权限!!\n");
system("pause\n");
return;
}
int a=0,b,n;
FILE *fp;
if((fp=fopen("d:\\program\\student.txt","r"))==NULL)
{
printf("\n打开文件失败!!!\n");
getch();
exit(1);
}
memset(stu,0,sizeof(stu));
while(fscanf(fp,"%d",&stu[a].num)!=EOF)
{
fscanf(fp,"%s%s%d%s%s%s",stu[a].name,stu[a].sex,&stu[a].old,stu[a].address,stu[a].xb,stu[a].zy);
a++;
}
fclose(fp);
while(1)
{
printf("_____________________________\n");
printf("__ 1:按照学号删除学生学籍:__\n");
printf("__ 2:按照姓名删除学生学籍:__\n");
printf("__ 3:返回主菜单 __\n");
printf("_____________________________\n");
printf("输入数据,请选择(1—3):\n");
scanf("%d",&n);
while(n<1||n>3)
{
printf("输入错误,请重新输入!!\n");
scanf("%d",&n);
}
if(n==3)
break;
if(n==1)
{
int num,loop=0;
printf("\n请输入学号:\n");
scanf("%d",&num);
for(b=0;b<a;b++)
{
if(stu[b].num==num)
{
loop=1;
stu[b].old=0;
break;
}
}
if(loop)
printf("\n删除成功!!\n");
else
printf("\n不存在该学生!!\n");
}
else if(n==2)
{
int loop=0;
char ch[50];
printf("\n请输入姓名:\n");
scanf("%s",ch);
for(b=0;b<a;b++)
{
if(!strcmp(ch,stu[b].name))
{
loop=1;
stu[b].old=0;
break;
}
}
if(loop)
printf("\n删除成功!!\n");
else
printf("\n不存在该学生!!\n");
}
}
if((fp=fopen("d:\\program\\student.txt","w"))==NULL)
{
printf("\n打开文件失败!!!\n");
getch();
exit(1);
}
for(b=0;b<a;b++)
if(stu[b].old)
fprintf(fp,"%d%c%s%c%s%c%d%c%s%c%s%c%s%c",stu[b].num,' ',stu[b].name,' ',stu[b].sex,' ',stu[b].old,' ',stu[b].address,' ',stu[b].xb,' ',stu[b].zy,'\n');
printf("\n++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
printf("++ 成功!!!数据已储存于d:\\program\\student.txt ++\n");
printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
fclose(fp);
system("pause\n");
}
void search()/*查找学生学籍*/
{
int a=0,b,n;
FILE *fp;
if((fp=fopen("d:\\program\\student.txt","r"))==NULL)
{
printf("\n打开文件失败!!!\n");
getch();
exit(1);
}
memset(stu,0,sizeof(stu));
while(fscanf(fp,"%d",&stu[a].num)!=EOF)
{
fscanf(fp,"%s%s%d%s%s%s",stu[a].name,stu[a].sex,&stu[a].old,stu[a].address,stu[a].xb,stu[a].zy);
a++;
}
fclose(fp);
while(1)
{
printf("_____________________________\n");
printf("__ 1:按照学号查找学生学籍:__\n");
printf("__ 2:按照姓名查找学生学籍:__\n");
printf("__ 3:返回主菜单 __\n");
printf("_____________________________\n");
printf("输入数据,请选择(1—3):\n");
scanf("%d",&n);
while(n<1||n>3)
{
printf("输入错误,请重新输入!!\n");
scanf("%d",&n);
}
if(n==3)
break;
if(n==1)
{
int num,loop=0;
printf("\n请输入学号:\n");
scanf("%d",&num);
for(b=0;b<a;b++)
{
if(stu[b].num==num)
{
loop=1;
printf("\n 学号 姓名 性别 年龄 籍贯 系院 专业\n");
printf("\n%d %s %s %d %s %s %s\n",stu[b].num,stu[b].name,stu[b].sex,stu[b].old,stu[b].address,stu[b].xb,stu[b].zy);
break;
}
}
if(!loop)
printf("\n不存在该学生!!\n");
}
else if(n==2)
{
int loop=0;
char ch[50];
printf("\n请输入姓名:\n");
scanf("%s",ch);
for(b=0;b<a;b++)
{
if(!strcmp(ch,stu[b].name))
{
loop=1;
printf("\n 学号 姓名 性别 年龄 籍贯 系院 专业\n");
printf("\n%d %s %s %d %s %s %s\n",stu[b].num,stu[b].name,stu[b].sex,stu[b].old,stu[b].address,stu[b].xb,stu[b].zy);
break;
}
}
if(!loop)
printf("\n不存在该学生!!\n");
}

}
system("pause\n");
}
void output()/*输出所有学生学籍*/
{
int a=0,b,n;
FILE *fp;
if((fp=fopen("d:\\program\\student.txt","r"))==NULL)
{
printf("\n打开文件失败!!!\n");
getch();
exit(1);
}
memset(stu,0,sizeof(stu));
while(fscanf(fp,"%d",&stu[a].num)!=EOF)
{
fscanf(fp,"%s%s%d%s%s%s",stu[a].name,stu[a].sex,&stu[a].old,stu[a].address,stu[a].xb,stu[a].zy);
a++;
}
fclose(fp);
printf(" 学号 姓名 性别 年龄 籍贯 系院 专业 \n");
for(b=0;b<a;b++)
printf("%d %s %s %d %s %s %s\n",stu[b].num,stu[b].name,stu[b].sex,stu[b].old,stu[b].address,stu[b].xb,stu[b].zy);
system("pause\n");
}
void newboot()/*用户登陆*/
{
system("cls");
int a,b,n;
root=0;
char ch1[50],ch2[50],ch_1[50],ch_2[50];
FILE *fp;
if((fp=fopen("d:\\program\\password.txt","r"))==NULL)
{
printf("\n 说明:你是第一次使用该系统,请配置系统!!!\n\n");
if((fp=fopen("d:\\program\\password.txt","w"))==NULL)
{
printf("\n打开文件失败!!!\n");
getch();
exit(1);
}
printf("请输入用户名: ");scanf("%s",ch_1);
printf("请输入密码: ");scanf("%s",ch_2);
fprintf(fp,"%s%c",ch_1,'\n');
fprintf(fp,"%s%c",ch_2,' ');
fclose(fp);
printf("\n ok,配置成功!!\n");

}
fp=fopen("d:\\program\\password.txt","r");
fscanf(fp,"%s",ch1);
fscanf(fp,"%s",ch2);
fclose(fp);
printf("************欢迎进入***************\n");
printf("1:以admin登陆 0:以来宾方式登陆\n");
printf("请选择登陆方式(1-0):\n");
scanf("%d",&n);
while(n)
{
printf("请输入用户名: ");scanf("%s",ch_1);
printf("请输入密码: ");scanf("%s",ch_2);
if(!strcmp(ch_1,ch1)&&!strcmp(ch_2,ch2))
{
root=1;
break;
}
else
{
printf("账号或密码错误!!!\n");
printf("请选择登陆方式(1-0):\n");
scanf("%d",&n);
}
}
}
void password()/*修改密码*/
{
int a,b;
char ch_1[50],ch_2[50];
FILE *fp;
if((fp=fopen("d:\\program\\password.txt","w"))==NULL)
{
printf("\n打开文件失败!!!\n");
getch();
exit(1);
}
printf("请输入新的用户名: ");scanf("%s",ch_1);
printf("请输入新的密码: ");scanf("%s",ch_2);
fprintf(fp,"%s%c",ch_1,'\n');
fprintf(fp,"%s%c",ch_2,' ');
fclose(fp);
printf("\n密码已修改!!!\n\n");
system("pause\n");
}
int main()
{
int n;
system("color 7d");
newboot ();
while(1)
{
menu();
printf("请输入一个数 字,选择功能:\n");
scanf("%d",&n);
while(n>8||n<0||(n==8&&root==0))
{
printf("输入错误!!请重新输入n\n");
scanf("%d",&n);
}
if(n==7)
break;
switch(n)
{
case 0 :newboot();break;
case 1 :newbuild();break;
case 2 :add();break;
case 3 :modify();break;
case 4 :del();break;
case 5 :search();break;
case 6 :output();break;
case 8 :password();break;
}
}
}