自己做的分文件学生信息管理系统.docx
《自己做的分文件学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《自己做的分文件学生信息管理系统.docx(19页珍藏版)》请在冰点文库上搜索。
自己做的分文件学生信息管理系统
#include"stud_mgr_system.h"
intmain(void)
{
charopt;
DoubleLinkhead=NULL;
DoubleLinkfindnode=NULL;
charfindnum[10];
secrecy();
while
(1)
{
system("color0A");
menu();
printf("\n");
printf("\t请输入要操作的编号【1-8】:
[]\b\b");
scanf("%c",&opt);
if(opt=='\n'||opt=='\0')
{
printf("\t\t\t");
printf("\n\n\n不能输入回车键或空格!
\n\n\n");
}
elseif(opt>'8'||opt<'1')
{
printf("\t\t\t");
printf("\n\n\n输入错误!
请输入【1-8】:
\n\n\n\n");
system("PAUSE");
}
system("CLS");
switch(opt)
{
case'1':
{
head=creatdoublelink();
head=save_file(head);
break;
}
case'2':
{
system("CLS");
printlist(head);
system("PAUSE");
system("CLS");
break;
}
case'3':
{
system("CLS");
printf("请输入要查找学生的学号==>");
scanf("%s",&findnum);
findnode=findinfo(head,findnum);
if(!
findnode)
printf("\n\n没有找到!
\n");
system("PAUSE");
system("CLS");
break;
}
case'4':
{
system("CLS");
head=addnode(head);
printf("\n*******新增之后的链表********\n");
printlist(head);
printf("\n*****************************\n");
system("PAUSE");
system("CLS");
head=save_file(head);
break;
}
case'5':
{
system("CLS");
if(head==NULL)
{
printf("当前的链表为空!
没有要删除的信息!
\n\n");
break;
}
head=deletenode(head);
save_file(head);
break;
}
case'6':
{
if(head==NULL)
{
printf("\n\n当前链表为空!
没有要修改的信息\n\n");
system("PAUSE");
break;
}
head=modifyinfo(head);
system("PAUSE");
system("CLS");
break;
}
case'7':
{
freelist(head);
system("PAUSE");
system("CLS");
save_file(head);
break;
}
case'8':
{
system("color5B");
system("CLS");
printf("\n\n\n\n\n\n\n\n\n");
printf("\t\t\t谢谢使用!
再见!
!
!
\n\n\n\n\n\n\n");
exit(0);
break;
}
//default:
printf("输入错误!
请重新输入!
\n");
}
}
head=save_file(head);
return0;
}
#include"stud_mgr_system.h"
/*错误*/
voidprint_err(char*p)
{
perror("p");
exit
(1);
}
/*输出链表信息*/
voidprintlist(DoubleLinkL)
{
//FILE*fp;
//structstud_mgr_sysstudent;
DoubleLinktmp;
tmp=L;
/*if((fp=fopen("E:
\\stud_mgr_system.txt","r"))==NULL)
{
printf("\nFailtoopenE:
\\stud_mgr_system.txt!
\n");
getchar();
exit
(1);
}*/
/*if((fread(tmp,sizeof(structstud_mgr_sys),1,fp))!
=1)
{
printf("FailtoreadE:
\\stud_mgr_system.txt!
\n");
getchar();
}
else
{
while(tmp!
=NULL)
{
printf("学生的学号:
%s\n",tmp->num);
printf("学生的姓名:
%s\n",tmp->name);
printf("学生的电话:
%s\n",tmp->phone);
printf("学生的地址:
%s\n",tmp->addr);
printf("\n");
tmp=tmp->front;
}
}
fclose(fp);*/
while(tmp!
=NULL)
{
printf("学生的学号:
%s\n",tmp->num);
printf("学生的姓名:
%s\n",tmp->name);
printf("学生的电话:
%s\n",tmp->phone);
printf("学生的地址:
%s\n",tmp->addr);
printf("\n");
tmp=tmp->front;
}
}
/*清空链表*/
voidfreelist(DoubleLinkL)
{
DoubleLinkptr;
while(L!
=NULL)
{
ptr=L;
L=L->front;
free(ptr);
}
printf("\n\n\n\n");
printf("\t\t\t链表清空完毕!
\n\n\n");
}
/*双链表的创建*/
DoubleLinkcreatdoublelink()
{
DoubleLinkhead;
DoubleLinknew_node,before;
intcount,i;
head=(DoubleLink)malloc(sizeof(DoubleLink));
if(!
head)
print_err("Failtomallochead");
head=NULL;
before=head;
printf("请输入要创建链表节点的个数==>");
scanf("%d",&count);
for(i=1;i<=count;i++)
{
new_node=(DoubleLink)malloc(sizeof(DoubleLink));
if(!
new_node)
print_err("Failtomallocnew_node");
printf("请输入第%d个学生的学号==>",i);
scanf("%s",&new_node->num);
//gets(new_node->num);
printf("请输入第%d个学生的姓名==>",i);
scanf("%s",&new_node->name);
//gets(new_node->name);
printf("请输入第%d个学生的电话==>",i);
scanf("%s",&new_node->phone);
//gets(new_node->phone);
printf("请输入第%d个学生的地址==>",i);
scanf("%s",&new_node->addr);
//gets(new_node->addr);
printf("\n");
new_node->front=NULL;
if(head==NULL)
{
head=new_node;
before=head;
}
else
{
before->front=new_node;
new_node->back=before;
before=new_node;
}
}
printf("链表创建成功!
\n\n");
system("PAUSE");
system("CLS");
returnhead;
}
/*增加学生的信息*/
DoubleLinkaddnode(DoubleLinkL)
{
DoubleLinkaddnew,end;
end=L;
addnew=(DoubleLink)malloc(sizeof(DoubleLink));
if(!
addnew)
print_err("Failtomallocaddnew");
printf("请输入要插入的学生的学号==>");
scanf("%s",&addnew->num);
printf("请输入要插入的学生的姓名==>");
scanf("%s",&addnew->name);
printf("请输入要插入的学生的电话==>");
scanf("%s",&addnew->phone);
printf("请输入要插入的学生的地址==>");
scanf("%s",&addnew->addr);
addnew->front=NULL;
if(L==NULL)
L=addnew;
else
{
while(end->front!
=NULL)
end=end->front;
end->front=addnew;
addnew->back=end;
}
printf("\n\n该学生的信息插入完毕!
\n\n");
returnL;
}
/*学生信息的删除*/
DoubleLinkdeletenode(DoubleLinkL)
{
DoubleLinkptr,tail;
tail=L;
while(tail->front!
=NULL)
tail=tail->front;
chardelname[10];
printf("请输入要删除学生的学号==>");
scanf("%s",&delname);
if(findinfo(L,delname)==NULL)
{
printf("\n删除失败!
没有这个节点的信息!
\n");
exit
(1);
}
printf("\n===========你删除的学生的信息为===========\n\n");
ptr=findinfo(L,delname);
printf("\n===========================================\n\n");
printf("\t\t删除成功!
\n\n");
system("PAUSE");
if(ptr==L)
returnL->front;
elseif(tail==ptr)
tail->front=NULL;
else
{
ptr->back->front=ptr->front;
ptr->front->back=ptr->back;
}
returnL;
}
/*查询学生的信息*/
DoubleLinkfindinfo(DoubleLinkL,charfindnum[])
{
inti=1;
DoubleLinkptr;
ptr=L;
while(ptr!
=NULL)
{
if((strcmp(ptr->num,findnum)==0))
{
printf("\n这个学生在链表的第%d个位置。
\n\n",i);
printf("\n===========================================\n\n");
printf("这个学生的学号为:
%s\n",ptr->num);
printf("这个学生的姓名为:
%s\n",ptr->name);
printf("这个学生的电话为:
%s\n",ptr->phone);
printf("这个学生的地址为:
%s\n",ptr->addr);
printf("\n\n=========================================\n\n");
returnptr;
}
else
{
ptr=ptr->front;
i++;
}
}
returnptr;
}
/*将内容存到文件中*/
DoubleLinksave_file(DoubleLinkL)
{
FILE*fp;
//structstud_mgr_sysstudent;
DoubleLinkptr;
ptr=L;
if((fp=fopen("E:
\\stud_mgr_system.txt","ab+"))==NULL)
{
printf("FailtoopenE:
\\stud_mgr_system.txt!
\n");
getchar();
exit
(1);
}
while(ptr!
=NULL)
{
if((fwrite(ptr,sizeof(structstud_mgr_sys),1,fp))!
=1)
{
printf("Failtowritefile!
\n");
getchar();
exit
(1);
}
ptr=ptr->front;
}
printf("\n\n\n文件保存完毕!
\n\n\n");
returnL;
}
/*学生信息的修改*/
DoubleLinkmodifyinfo(DoubleLinkL)
{
DoubleLinkmodptr;
charmodnum[10];
printf("请输入要修改学生信息的学号==>");
scanf("%s",&modnum);
modptr=findinfo(L,modnum);
if(modptr==NULL)
printf("\n\n没有找到该学生的信息!
修改失败!
\n\n");
printf("请输入学号==>");
scanf("%s",&modptr->num);
printf("请输入姓名==>");
scanf("%s",&modptr->name);
printf("请输入电话==>");
scanf("%s",&modptr->phone);
printf("请输入地址==>");
scanf("%s",&modptr->addr);
printf("\n\n修改成功!
\n\n");
returnL;
}
/*菜单选项表*/
voidmenu()
{
printf("\n\n");
printf("\t=======================学生信息管理系统=====================\n\n");
printf("\t****************************MENU**************************\n");
printf("\t***\n");
printf("\t*1.创建学生信息*2.显示学生信息*\n");
printf("\t*3.查找学生信息*4.新增学生信息*\n");
printf("\t*5.删除学生信息*6.修改学生信息*\n");
printf("\t*7.学生信息清空*8.退出管理系统*\n");
printf("\t***\n");
printf("\t************************************************************\n");
printf("\t*||*);
printf("\t************************************************************\n");
}
/*密码*/
voidsecrecy()
{
charinitsec[10]="123456";
charinputsec[10];
inti,j=0;
printf("\n你共有三次机会输入密码以进入系统!
\n\n");
for(i=3;i>=1;--i)
{
printf("\t\t");
printf("\n\n请输入密码以进入系统:
");
scanf("%s",&inputsec);
if(strcmp(initsec,inputsec)!
=0)
{
printf("\n\n密码输入错误!
你还有%d次机会!
\n\n\n\n\n\n\n\n\n",i-1);
++j;
system("PAUSE");
system("CLS");
}
else
break;
}
if(j==3)
{
printf("程序即将退出!
\n\n");
system("pause");
exit
(1);
}
system("CLS");
system("color3A");
printf("\n\n\n\n");
printf("\t\t=============欢迎使用学生管理系统=============\n");
printf("\t\t====\n");
printf("\t\t==**==\n");
printf("\t\t==@==\n");
printf("\t\t==============================================\n");
printf("\n\n\n\n\n\n\n\n\n\n\n");
system("PAUSE");
system("CLS");
system("CLS");
}
/*密码修改函数*/
/*voidchangesec()
{
charnewsec[10];
charsuresec[10];
printf("请输入原来的密码==>");
scanf("%s",&suresec);
if((strcmp(initsec,suresec)!
=0))
{
printf("密码输入错误!
请重新输入原来密码以改密码!
\n");
printf("请输入原来的密码==>");
scanf("%s",&suresec);
}
else
{
printf("请输入新的密码==>");
scanf("%s",&newsec);
strcpy(initsec,newsec);
printf("\n\n密码修改成功!
\n\n");
system("PAUSE");
system("CLS");
}
}*/
#include
#include
#include
#include
//FILE*fp;
/*学生信息管理系统的节点类型*/
structstud_mgr_sys
{
charnum[12];
charname[12];
charphone[12];
charaddr[20];
structstud_mgr_sys*front;
structstud_mgr_sys*back;
};
//structstud_mgr_sysstudent;
typedefstructstud_mgr_sys*DoubleLink;
/*定义接口函数*/
voidprintlist(DoubleLinkL);//输出链表的信息
DoubleLinkaddnode(DoubleLinkL);//增加学生的信息
DoubleLinkdeletenode(DoubleLinkL);//删除学生的信息
DoubleLinkfindinfo(DoubleLinkL,charnum[]);//查询学生的信息
DoubleLinkmodifyinfo(DoubleLinkL);//学生信息的修改
voidfreelist(DoubleLinkL);//释放节点
DoubleLinkcreatdoublelink();//创建双链表
voidmenu();//菜单选项表
voidsecrecy();//定义密码函数
voidchangesec();//密码修改函数
DoubleLinksave_file(DoubleLinkL);