学生信息管理c语言程序Word格式文档下载.docx
《学生信息管理c语言程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《学生信息管理c语言程序Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
\n\t\t**************学籍管理系统**************\n"
);
\t\t*1.查询*\n"
\t\t*2.维护*\n"
\t\t*0.退出*\n"
\n\t\t****************************************\n"
请选择(1/2/0):
"
ch=getche();
switch(ch)
case'
1'
:
findFlag=Find();
//调用查询模块
break;
2'
maintainFlag=Maintain();
//调用维护模块
0'
quitFlag=0;
default:
printf("
\n输入错误,请重新选择\n\n\n"
}
}
else
\n初始化学生信息失败!
return1;
\n再见!
请按任意键退出."
getch();
return0;
}
//追加新的学生信息
intAdd(void)
structstudent*p3,*p2;
intaddFlag;
p2=head;
while(p2->
next!
=NULL)
p2=p2->
next;
ch='
y'
;
while(tolower(ch)=='
)
{
p3=(structstudent*)malloc(LEN);
\n请按如下格式输入:
\n"
学号:
gets(p3->
No);
姓名:
name);
年龄:
age);
性别:
sex);
班级:
className);
家庭地址:
address);
电话:
tel);
p3->
next=NULL;
\n请确认上述输入[y/Y],否则按其他任意键继续"
if(tolower(ch)=='
p2->
next=p3;
p2=p3;
p3=NULL;
\n追加学生信息成功!
......按任意键继续......"
putch('
\n'
addFlag=1;
\n未能追加学生信息!
!
addFlag=2;
\n是否增加下一个学生信息,如果增加,键入[y/Y];
否则键入[n/N]:
ch=getch();
p2=NULL;
returnaddFlag;
}//Add
//删除学生信息
intDeleteStu(void)
charch,stuNo[10];
intdeleteFlag;
structstudent*p,*q;
\n请输入待删除学生的学号(按回车键确认):
gets(stuNo);
p=head;
q=NULL;
while(p!
if(strcmp(p->
No,stuNo))
q=p;
p=p->
\n您要删除的学生姓名是:
%是\n"
p->
请您再次确认[y/Y]:
q->
next=p->
deleteFlag=3;
deleteFlag=4;
if(p==NULL)
\n不存在您要删除的学生信息,按任意键继续......\n"
deleteFlag=5;
getche();
\n是否继续删除下一个学生信息[y/Y],不删除按其他任意键......\n"
returndeleteFlag;
}//DeleteStu
//修改学生信息
intRepair(void)
intrepairFlag;
do
printf("
\n请输入待修改学生的学号(按回车确认):
gets(stuNo);
p=head;
q=NULL;
while(p!
{
if(strcmp(p->
No,stuNo))
p=p->
elsebreak;
}
while
(1)
printf("
\n您将要修改的学生信息是:
%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n"
No,p->
name,p->
age,p->
sex,p->
className,p->
address,p->
\n请输入您所要修改的信息名称:
1学号2姓名3年龄4性别5班级6家庭住址7电话\n"
请您选择:
ch=getche();
switch(ch)
{
case'
\n请输入新的信息(按回车结束):
gets(p->
repairFlag=6;
break;
3'
4'
5'
6'
7'
\n输入错误,请重新输入:
repairFlag=5;
}
\n是否还要继续修改学生信息[y/n]:
if(tolower(ch)=='
continue;
ch=getche();
}while(tolower(ch)=='
returnrepairFlag;
}
//维护人员权限验证
intVerificationIdentity(void)
charuserID[20],passWord[20];
//存放由键盘输入的用户名和口令
charsuperUID[20],passWD[20];
//存放文件中读取的用户名和口令
inti,legalUser=0;
FILE*fp;
fp=fopen("
superUser.txt"
"
r"
if(fp==NULL)
\n文件不存在!
按任意键继续\n"
getch();
}//superUserFlag=0
do
\n请输入用户名(小于15个字符):
i=0;
while(isalpha(ch=getch())&
&
(i<
15))
putchar(ch);
userID[i]=ch;
i++;
userID[i]='
\0'
\n请输入密码(小于10个字符):
while(isdigit(ch=getch())&
10))
putchar('
*'
passWord[i]=ch;
passWord[i]='
rewind(fp);
while(!
feof(fp))
fscanf(fp,"
%s\t%s\t\n"
superUID,passWD);
//从权限文件中读取用户名和密码
if((strcmp(userID,superUID)==0)&
(strcmp(passWord,passWD)==0))//判断用户名和密码是否与权限规定的相符
{
legalUser=1;
}
if(legalUser)
break;
else
printf("
\n是否重新输入用户名和密码?
[y/n]"
ch=getche();
}while(ch=='
returnlegalUser;
//将修改的学生信息写入文件
intSave(void)
structstudent*p;
if((fp=fopen("
FILE.DAT"
w"
))==NULL)
\n保存文件不正常,请核对文件名\n"
fclose(fp);
return1;
rewind(fp);
=NULL)//将链表中的内容写入文件
fprintf(fp,"
p=p->
return0;
//维护模块
intMaintain(void)
intsuccess,saveFlag,maintainR=4;
success=VerificationIdentity();
if(success==0)
\n你是无权用户!
maintainR=5;
\n\t\t*****************查询*****************\n"
\t\t*1.增加*\n"
\t\t*2.删除*\n"
\t\t*3.修改*\n"
\n请输入选择(1/2/3/0):
maintainR=Add();
break;
maintainR=DeleteStu();
maintainR=Repair();
maintainR=0;
default:
\n输入错误,请重新输入你的选择:
}while(maintainR!
=0);
\n你已经完成了对学生信息的维护,\n"
请你确认是否永久保存你所做的修改(y/n):
if(tolower(ch)=='
saveFlag=Save();
if(saveFlag)maintainR=4;
returnmaintainR;
}//Maintain
//按住址查询
intFindAddrApart(void)
charsaddress[20];
\
structstudent*p;
intflag;
flag=5;
\n请输入你想要查找学生的住址:
gets(saddress);
if(strcmp(saddress,p->
address)==0)
%s\n"
flag=1;
p=p->
returnflag;
}//FindAddrApart
//按姓名查询
intFindName(void)
charsname[20];
\n请输入你想要查找学生的姓名:
gets(sname);
if(strcmp(sname,p->
name)==0)
地址:
}//FindName
//按学号查询
intFindNumber(void)
charsno[10];
structstudent*p;
\n请输入你想要查找学生的学号[000001~000040]:
gets(sno);
if(strcmp(sno,p->
No)==0)
住址:
}//FindNumber
//查询模块
intFind(void)
flag=4;
while(flag)
\t\t*1.学号*\n"
\t\t*2.姓名*\n"
\t\t*3.住址/系别*\n"
请输入选择(1/2/3/0):
switch(ch)
case'
flag=FindNumber();
flag=FindName();
flag=FindAddrApart();
flag=0;
default:
flag=4;
if(flag==5)
你所查找的学生不存在!
elseflag=0;
}//Find
//初始化学生信息。
从文件中读取学生信息,用链接存放
intInitStuInfo(void)
structstudent*p1,*p2;
未能初始化学生信息"
else
p1=(structstudent*)malloc(LEN);
head=p1;
while(!
fscanf(fp,"
p1->
No,p1->
name,p1->
age,p1->
sex,p1->
className,p1->
address,p1->
p2=p1;
p1=(structstudent*)malloc(LEN);
p2->
next=p1;
free(p1);
p1=NULL;
p1=head;
while(p1!
p1=p1->
fclose(fp);
}//InitStuInfo