C语言课程设计学籍管理系统.docx
- 文档编号:30699986
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:37
- 大小:19.89KB
C语言课程设计学籍管理系统.docx
《C语言课程设计学籍管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学籍管理系统.docx(37页珍藏版)》请在冰豆网上搜索。
C语言课程设计学籍管理系统
#include
#include
#include
#include
#include
voidtea_loo_stu_name();//按姓名查找学生信息
voidtea_loo_stu_num();//按学号查找学生信息
voidsave_stu();//储存学生信息
voidmenu_tea();//管理员主菜单
voidmenu_stu();//学生主菜单
voidadd_stu();//添加学生籍贯信息
voidcor_stu();//修改学生籍贯信息
voiddel_stu();//删除学生籍贯信息
voidtea_loo_stu();//查询学生籍贯信息
voidtimer();//退出系统
voidland();//登录主函数
voiddefault_();
voidopen_file();//打开(检测)
voidstu_land();//学生登陆
voidtea_land();//教师登录
voidread_file();//从文件读取数据
voidadd_tea();//添加管理员信息
charname[12];
charnum[10];
charpro[10];
charcity[30];
charsex[5];
charcode[7];
charcode1[7];
inti,j,t=0,title=2;
intchoice=0;
charnum[10],choice1;
FILE*fp_liao,*fp_feiliao,*fp_guan;
structstudent//学生结构体
{
charname[12];
charnum[10];
charpro[10];
charcity[30];
charsex[5];
charcode[7];
structstudent*next;
};
structstudent*stu,
*tem,*tem1,
*emp_s,
*stu1_first,//辽宁户籍的头指针
*stu1_end,//辽宁户籍的尾指针
*stu2_first,//非辽宁户籍的头指针
*stu2_end;//非辽宁户籍的头指针
structteacher//教师结构体
{
charname[12];
charcode[7];
}tea;
intmain()//主函数
{
printf("\n\n\n\t\t\t\t欢迎登陆学生信息管理系统!
\n");
open_file();
//read_file();
land();
}
voidopen_file()//检查信息
{
if((fp_liao=fopen("辽宁.dat","rb"))==NULL)//检查是否有辽宁籍信息
{
printf("\n\n\t\t还未添加辽宁户籍信息,请与管理员添加。
\n\n");
title=3;
do
{
i=0;
printf("\n\t请管理员选择:
");
printf("\n\t请选择菜单:
");
printf("\n\n\t\t1.管理员登陆\n\t\t2.暂不添加辽宁籍信息\n\t\t3.退出系统\n");
printf("请选择:
");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case1:
system("cls");tea_land();break;
case2:
system("cls");break;
case3:
timer();
default:
printf("\n\n\t\t输入无效!
请重新选择!
\n\t\t还有%d次机会!
",title-1);i=1;title--;
}
if(title==0)
{
printf("\n\n\t\t连续3次选择错误!
系统自动退出!
");
timer();
}
}while(i);
}
printf("\n\n\t\t加载辽宁户籍信息文件成功!
");
while(!
feof(fp_liao))//读取辽宁户籍信息
{
emp_s=(structstudent*)malloc(sizeof(structstudent));
if(emp_s==NULL)
{
printf("\n\n\t\t开辟内存失败,系统自动退出!
\n");
timer();
}
fread(emp_s,sizeof(structstudent),1,fp_liao);
//if(feof(fp_liao))break;
if(stu1_first==NULL)
{
stu1_first=emp_s;
stu1_end=emp_s;
}
else
{
stu1_end->next=emp_s;
stu1_end=emp_s;
}
}
stu1_end->next=NULL;
fclose(fp_liao);
printf("\n\n\t\t加载辽宁户籍信息成功!
");
if((fp_feiliao=fopen("非辽宁.dat","r"))==NULL)//检查是否有非辽宁籍信息
{
printf("\n\n\t\t还未添加非辽宁户籍信息,请与管理员添加。
\n\n");
do{
printf("请管理员选择:
");
printf("请选择菜单:
");
printf("\n\n\t\t1.管理员登陆\n\t\t2.暂不添加辽宁籍信息\n\t\t3.退出系统\n");
printf("请选择:
");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case1:
system("cls");tea_land();
case2:
system("cls");break;
case3:
timer();
default:
printf("\n\n\t\t输入无效!
请重新选择!
\n\t\t还有%d次机会!
",title-1);i=1;title--;
}
if(title==0)
{
printf("\n\n\t\t连续3次选择错误!
系统自动退出!
");
timer();
}
}while(i);
}
printf("\n\n\t\t加载非辽宁户籍信息文件成功!
");
while(!
feof(fp_feiliao))//读取非辽宁户籍信息
{
emp_s=(structstudent*)malloc(sizeof(structstudent));
if(emp_s==NULL)
{
printf("\n\n\t\t开辟内存失败,系统自动退出!
\n");
timer();
}
fread(emp_s,sizeof(structstudent),1,fp_feiliao);
if(feof(fp_liao))break;
if(stu2_first==NULL)
{
stu2_first=emp_s;
stu2_end=emp_s;
}
else
{
stu2_end->next=emp_s;
stu2_end=emp_s;
}
}
stu2_end->next=NULL;
fclose(fp_feiliao);
printf("\n\n\t\t加载非辽宁户籍信息成功!
");
if((fp_guan=fopen("管理员.dat","r"))==NULL)//检查是否有管理员信息
{
printf("\n\n\t\t还未添加管理员信息,请与管理员添加。
\n\n");
do{
printf("请管理员选择:
");
printf("请选择菜单:
");
printf("\n\n\t\t1.添加管理员信息\n\t\t2.退出系统\n");
printf("请选择:
");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case1:
system("cls");add_tea();
case2:
timer();
default:
printf("\n\n\t\t输入无效!
请重新选择!
\n\t\t还有%d次机会!
",title-1);i=1;title--;
}
if(title==0)
{
printf("\n\n\t\t连续3次选择错误!
系统自动退出!
");
timer();
}
}while(i);
}
printf("\n\n\t\t加载管理员信息成功!
");
}
voidsave_tea()
{
if((fp_guan=fopen("管理员.dat","w"))==NULL)
{
printf("\n\t\t打开文件时出错!
系统自动退出!
\n");
timer();
}
fwrite(&tea,sizeof(structteacher),1,fp_guan);
fclose(fp_guan);
}
voidadd_stu()//添加学生籍贯信息
{
charpro1[5]="辽宁";
system("cls");
printf("\n\n\t\t\t\t\t添加学生信息!
\n");
stu=(structstudent*)malloc(sizeof(structstudent));
printf("\n请输入学生姓名:
");
fflush(stdin);
gets(stu->name);
printf("\n请输入学生性别:
");
fflush(stdin);
gets(stu->sex);
printf("\n请输入学生学号:
");
fflush(stdin);
gets(stu->num);
printf("\n请输入学生所在省份:
");
fflush(stdin);
gets(stu->pro);
printf("\n请输入学生籍贯信息:
");
fflush(stdin);
gets(stu->city);
printf("\n请输入学生密码(请输入身份证号码后六位):
");
fflush(stdin);
gets(stu->code);
stu->next=NULL;
system("cls");
printf("\n请确认学生信息:
");
printf("\n\n姓名:
%s\t性别:
%s\t学号:
%s",stu->name,stu->sex,stu->num);
printf("\n\n所在省份:
%s\t籍贯信息:
%s\t密码:
%s",stu->pro,stu->city,stu->code);
printf("\n\n\n\t\t确认请输入”1“;重新输入请按”2“");
printf("\n请选择:
");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case2:
add_stu();break;
case1:
{
if((strstr(stu->pro,pro1))!
=NULL)
{
if(stu1_first==NULL)
{
stu1_first=stu;
stu1_end=stu;
}
else
{
stu1_end->next=stu;
stu1_end=stu;
}
stu1_end->next=NULL;
}
else
{
if(stu2_first==NULL)
{
stu2_first=stu;
stu2_end=stu;
}
else
{
stu2_end->next=stu;
stu2_end=stu;
}
stu2_end->next=NULL;
}
break;
}
default:
do
{
i=0;
printf("\n\n输入无效!
请重新选择!
");i=1;
}while(i);
}
printf("\n\n%s的信息保存成功!
\n\n请选择菜单:
",stu->name);
do
{
i=0;
printf("\n\t1.继续添加学生籍贯信息\n\t2.返回管理员管理员主菜单\n\t3.退出系统");
printf("\n请选择:
");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case1:
add_stu();break;
case2:
save_stu();system("pause");menu_tea();break;
case3:
save_stu();timer();
default:
save_stu();
printf("\n\n\t\t\t输入有误!
请重新输入!
");i=1;
}
}while(i);
}
voidadd_tea()
{
if((fp_guan=fopen("管理员.dat","r"))==NULL)
fp_guan=fopen("管理员.dat","w");
printf("\n\t\t请输入姓名:
");
fflush(stdin);
gets(tea.name);
printf("\n\t\t请输入密码(最多六位):
");
for(i=0;(i<6)&&((tea.code[i]=getch())!
=13);i++)
putchar('*');
tea.code[i]='\0';
printf("\n\t\t确认密码:
");
fflush(stdin);
for(i=0;(i<6)&&((code1[i]=getch())!
=13);i++)
putchar('*');
code1[i]='\0';
if((strcmp(tea.code,code1))!
=0)
{
printf("\n两次输入的密码不一样,请选择:
\n");
do
{
i=0;
printf("\n\t\t1.重新输入\n\t\t2.退出系统");
printf("\n\t请选择:
");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case1:
system("cls");add_tea();break;
case2:
timer();
default:
printf("输入无效,请选择:
");i=1;
}
}while(i==1);
}
printf("\n\n进入保存!
\n");
save_tea();
do
{
printf("\n\n\t\t\t添加成功!
\n\n\t\t\t请选择:
\n\n\t\t\t1.返回登陆菜单\n\t\t\t2.退出系统\n\t\t请选择:
");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case1:
system("cls");tea_land();break;
case2:
timer();break;
default:
printf("输入无效,请选择:
");i=1;
}
}while(i==1);
}
voidread_file()//创建链表用以保存从文件读取的数据
{
while(!
feof(fp_liao))//读取辽宁户籍信息
{
emp_s=(structstudent*)malloc(sizeof(structstudent));
if(emp_s==NULL)
{
printf("\n\n\t\t开辟内存失败,系统自动退出!
\n");
timer();
}
fread(emp_s,sizeof(structstudent),1,fp_liao);
if(feof(fp_liao))break;
if(stu1_first==NULL)
{
stu1_first=emp_s;
stu1_end=emp_s;
}
else
{
stu1_end->next=emp_s;
stu1_end=emp_s;
}
}
stu1_end->next=NULL;
fclose(fp_liao);
printf("\n\n\t\t加载辽宁户籍信息成功!
");
while(!
feof(fp_feiliao))//读取非辽宁户籍信息
{
emp_s=(structstudent*)malloc(sizeof(structstudent));
if(emp_s==NULL)
{
printf("\n\n\t\t开辟内存失败,系统自动退出!
\n");
timer();
}
fread(emp_s,sizeof(structstudent),1,fp_feiliao);
if(feof(fp_liao))break;
if(stu2_first==NULL)
{
stu2_first=emp_s;
stu2_end=emp_s;
}
else
{
stu2_end->next=emp_s;
stu2_end=emp_s;
}
}
stu2_end->next=NULL;
fclose(fp_feiliao);
printf("\n\n\t\t加载非辽宁户籍信息成功!
");
}
voidtimer()//倒计时
{
charstr[50],str1[50];
time_tt1,*t=&t1;
i=3;
do
{
t1=time(NULL);
strcpy(str,ctime(t));
while(strcmp(str,str1)!
=0)
{
strcpy(str1,str);
system("cls");
printf("还有%d秒退出!
\n",i--);
if(i<0)
{
exit
(1);
}
break;
}
}while
(1);
}
voiddefault_(chars[10])//输入错误时的处理函数
{
inttital=2;
do
{
printf("\n输入无效!
");
printf("还有%d次可以重新选择",tital--);
printf("请选择:
\n");
printf("\t\t\t\t1.返回上一级菜单\n\t\t\t\t2.退出学生籍贯管理系统\n");
printf("\t\t请选择:
");
fflush(stdin);
scanf("%d",&choice);
switch(choice)
{
case1:
system("cls");s[10];break;
case2:
system("cls");timer();break;
default:
t=1;
printf("\n输入无效!
\n");
if(tital==0)
{
printf("输入错误已达到3次,系统将自动退出!
");
system("pause");
timer();
}
}
}while(t);
}
voidland()//登陆总函数
{
printf("\n\n\t\t请选择登陆用户:
\n\n");
printf("\t\t\t\t1.管理员登陆\n\t\t\t\t2.学生登陆\n\t\t\t\t3.退出系统\n");
printf("请选择:
");
fflush(stdin);/*清除缓冲区数据*/
scanf("%d",&choice);
switch(choice)
{
case1:
system("cls");tea_land();break;
case2:
system("cls");stu_land();break;
case3:
timer();
default:
default_("land()");
}
}
voidstu_land()
{
printf("\n\n\t\t\t\t\t学生登陆");
printf("\n\t\t\t请输入姓名:
");
fflush(stdin);
gets(name);
printf("\n\t请输入登录密码(初始密码为身份证号码后六位):
");
fflush(stdin);
for(j=0;(j<6)&&((code[j]=getch())!
=13);j++)
putchar('*');
code[j]='\0';
for(i=1,tem=stu1_first;;)
{
if(tem==NULL)
if(i==2)
timer();
if(tem==NULL)
{
tem=stu2_first;
i=2;
continue;
}
if(tem!
=NULL)
{
if((strcmp(tem->name,name)==0)&&(strcmp(tem->code,code)==0))
{
menu_stu();
break;
}
if(((strcmp(tem->name,name)==0)&&(strcmp(tem->code,code)!
=0))||((strcmp(tem->name,name)!
=0)&&(strcmp(tem->code,code)==0)))
{
printf("\n\n\t\t学生姓名或密码错误!
请重新输入!
");
printf("你还有%d次机会输入!
",title--);
stu_land();
if(title==0)timer();
}
}
tem=tem->next;
}
if(tem==NULL)printf("\n\n无此学生信息!
");
}
voidmenu_stu()
{
system("cls");
printf("\n\t\t学生:
%s登陆成功!
\n",name);
printf("\n\t\t\t请选择菜单:
\n\t\t\t1.查询籍贯信息\n\t\t\t2.退出籍贯系统");
printf("\n\t\t请选择:
");
fflush(stdin);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学籍 管理 系统