您的位置:首页 > 编程语言 > C语言/C++

学生信息管理系统C语言版

2018-01-17 11:19 986 查看

C语言学生信息管理系统包括以下功能:

1、学生信息的整体注册
2、学生信息的修改
3、学生成绩信息的录入
4、学生信息的添加
5、恢复误删的学生信息
6、学生信息的删除
7、密码修改保存函数
8、学生信息的查询
9、密码修改函数
10、学生信息管理系统的菜单函数

#include "stdio.h"
#include "malloc.h"
#include "string.h"
#include "stdlib.h"
#include "conio.h"
#define M 3
struct student
{
char num[10];    /* 学生的学号 */
char name[20];    /* 学生的姓名 */
char sex[5];    /* 学生的性别 */
int age;     /* 学生的年龄 */
char birth[20];    /* 学生的出生年月 */
long tele;     /* 学生的电话号码 */
char addr[30];    /* 学生的地址 */
char party[10];    /* 学生是否为党员 */
float score[M];    /* 学生各门学科成绩 */
float total;    /* 学生的学科成绩总分 */
struct student *next;
}stud[100];
struct secret
{
char user[30];
char code[30];
}use[100];
int len;  //学生人数
/////////////////////////////////////////////////////////////////////////////////
/*学生信息写入到文件中-----系统函数*/
/////////////////////////////////////////////////////////////////////////////////
void writetxt(struct student *head)
{
struct student *p;
p=head;
FILE *fp;
fp=fopen("d://student.txt","wb");
if(fp==NULL)
{
printf("cannot open");
return ;
}
while(p!=NULL)
{
fwrite(p,sizeof(struct student),1,fp);
p=p->next;
}
fclose(fp);
}
/////////////////////////////////////////////////////////////////////////////////
/*  学生信息的整体注册*/
/////////////////////////////////////////////////////////////////////////////////
struct student *create( )
{
char ch;
char ok;
int i;
struct student *p,*p1,*head,*p2;
FILE *fp;
fp=fopen("d://student.txt","rb");
if(fp==NULL)
{
printf("/n   文件还不存在,是否创建?(Y/N)/n");
ch=getchar();
len=1;
scanf("%c",&ok);
if(ok=='Y'||ok=='y')
{
p1=p2=(struct student *) malloc(sizeof(struct student));
if((len)<10)
printf("请输入0%d的学号:",len);
else
printf("请输入%d的学号:",len);
scanf("%s",p1->num);
if((len)<10)
printf("请输入0%d的姓名:",len);
else
printf("请输入%d的姓名:",len);
scanf("%s",p1->name);
if((len)<10)
printf("请输入0%d的性别:",len);
else
printf("请输入%d的性别:",len);
scanf("%s",p1->sex);
ch=getchar();
if((len)<10)
printf("请输入0%d的年龄:",len);
else
printf("请输入%d的年龄:",len);
scanf("%d",&p1->age);
if((len)<10)
printf("请输入0%d的生日:",len);
else
printf("请输入%d的生日:",len);
scanf("%s",p1->birth);
if((len)<10)
printf("请输入0%d的电话:",len);
else
printf("请输入%d的电话号:",len);
scanf("%ld",&p1->tele);
if((len)<10)
printf("请输入0%d的地址:",len);
else
printf("请输入%d的地址:",len);
scanf("%s",p1->addr);
if((len)<10)
printf("请输入0%d是否为党员:",len);
else
printf("请输入%d是否为党员:",len);
scanf("%s",p1->party);
head=NULL;
while(strcmp(p1->num,"0")!=0)
{
len++;
if(head==NULL)
head=p1=p2;
else
p2->next=p1;
p2=p1;
p1=(struct student *) malloc(sizeof(struct student));
if((len)<10)
printf("请输入0%d的学号:",len);
else
printf("请输入%d的学号:",len);
scanf("%s",p1->num);
if((len)<10)
printf("请输入0%d的姓名:",len);
else
printf("请输入%d的姓名:",len);
scanf("%s",p1->name);
if((len)<10)
printf("请输入0%d的性别:",len);
else
printf("请输入%d的性别:",len);
scanf("%s",p1->sex);
ch=getchar();
if((len)<10)
printf("请输入0%d的年龄:",len);
else
printf("请输入%d的年龄:",len);
scanf("%d",&p1->age);
if((len)<10)
printf("请输入0%d的生日:",len);
else
printf("请输入%d的生日:",len);
scanf("%s",p1->birth);
if((len)<10)
printf("请输入0%d的电话:",len);
else
printf("请输入%d的电话号:",len);
scanf("%ld",&p1->tele);
if((len)<10)
printf("请输入0%d的地址:",len);
else
printf("请输入%d的地址:",len);
scanf("%s",p1->addr);
if((len)<10)
printf("请输入0%d是否为党员:",len);
else
printf("请输入%d是否为党员:",len);
scanf("%s",p1->party);
}
p2->next=NULL;
writetxt(head);
return (head);
}
}
if(ok=='N'||ok=='n')
{
printf("请重新选择/n");
return NULL;
}
else
{
printf("/n   文件已经存在/n");
fp=fopen("d://student.txt","rb");
p=stud;
for(i=0;!feof(fp);i++)
fread(stud+i,sizeof(struct student),1,fp);
len=i-1;
printf("    文件里含有%d条学生信息/n",len);
printf("/n   是否使用已经存在的学生数据?(Y/N)/n");
ch=getchar();
scanf("%c",&ok);
if(ok=='Y'||ok=='y')
{
head=p1=p2=NULL;
fp=fopen("d://student.txt","rb");
if(fp==NULL)
{
printf("open error/n");
return NULL;
}
else
{
printf("学号  姓名  性别  年龄  出生年月  电话号码 地址 是否党员/n");
for(i=0;i<len;i++)
{
p1=(struct student *)malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
if(head==NULL)
head=p2=p1;
else
p2->next=p1;
p2=p1;
printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p1->num,p1->name,p1->sex,p1->age,p1->birth,p1->tele,p1->addr,p1->party);
}
fclose(fp);
return(head);
}
}
if(ok=='N'||ok=='n')
{
len=1;
p1=p2=( struct student *) malloc(sizeof(struct student ));
if((len)<10)
printf("请输入0%d的学号:",len);
else
printf("请输入%d的学号:",len);
scanf("%s",p1->num);
if((len)<10)
printf("请输入0%d的姓名:",len);
else
printf("请输入%d的姓名:",len);
scanf("%s",p1->name);
if((len)<10)
printf("请输入0%d的性别:",len);
else
printf("请输入%d的性别:",len);
scanf("%s",p1->sex);
ch=getchar();
if((len)<10)
printf("请输入0%d的年龄:",len);
else
printf("请输入%d的年龄:",len);
scanf("%d",&p1->age);
if((len)<10)
printf("请输入0%d的生日:",len);
else
printf("请输入%d的生日:",len);
scanf("%s",p1->birth);
if((len)<10)
printf("请输入0%d的电话:",len);
else
printf("请输入%d的电话号:",len);
scanf("%ld",&p1->tele);
if((len)<10)
printf("请输入0%d的地址:",len);
else
printf("请输入%d的地址:",len);
scanf("%s",p1->addr);
if((len)<10)
printf("请输入0%d是否为党员:",len);
else
printf("请输入%d是否为党员:",len);
scanf("%s",p1->party);
head=NULL;
while(strcmp(p1->num,"0")!=0)
{
if(head==NULL)
head=p1=p2;
else
p2->next=p1;
p2=p1;
p1=(struct student *) malloc(sizeof(struct student));
if((len)<10)
printf("请输入0%d的学号:",len);
else
printf("请输入%d的学号:",len);
scanf("%s",p1->num);
if((len)<10)
printf("请输入0%d的姓名:",len);
else
printf("请输入%d的姓名:",len);
scanf("%s",p1->name);
if((len)<10)
printf("请输入0%d的性别:",len);
else
printf("请输入%d的性别:",len);
scanf("%s",p1->sex);
ch=getchar();
if((len)<10)
printf("请输入0%d的年龄:",len);
else
printf("请输入%d的年龄:",len);
scanf("%d",&p1->age);
if((len)<10)
printf("请输入0%d的生日:",len);
else
printf("请输入%d的生日:",len);
scanf("%s",p1->birth);
if((len)<10)
printf("请输入0%d的电话:",len);
else
printf("请输入%d的电话号:",len);
scanf("%ld",&p1->tele);
if((len)<10)
printf("请输入0%d的地址:",len);
else
printf("请输入%d的地址:",len);
scanf("%s",p1->addr);
if((len)<10)
printf("请输入0%d是否为党员:",len);
else
printf("请输入%d是否为党员:",len);
scanf("%s",p1->party);
}
p2->next=NULL;
writetxt(head);
}
return (head);
}
}
////////////////////////////////////////////////////////////////////////////////
/*学生信息的修改*/
////////////////////////////////////////////////////////////////////////////////
struct student *change(struct student *head)
{
struct student *p=head;
int age,choose,m;
long tele;
char num[10];
char ch,yes,sex[5],birth[20],addr[30],party[10];
char *p1;
if(head==NULL)
{
printf("原链表为空");
return NULL;
}
else
{
while(1)
{
printf("请输入学号/n");
scanf("%s",num);
p=head;
while(p!=NULL&&strcmp(p->num,num)!=0)
{
p=p->next;
if(p==NULL)
{
printf("该学生不存在/n");
break;
}
if(strcmp(p->name,"0")==0)
{
printf("该学生已不存在/n");
break;
}
}
m=0;
while(1)
{
if(p==NULL)
break;
if(strcmp(p->name,"0")==0)
break;
printf("请选择1.性别 2.年龄 3.出生日期4.电话 5.家庭住址6.党员/n");
scanf("%d",&choose);
if(choose==1)
{
printf("请输入新的性别:/n");
scanf("%s",&sex);
p1=sex;
strcpy(p->sex,p1);
printf("是否继续修改本学生学生其他信息Y/N/n");
ch=getchar();
scanf("%c",&yes);
if(yes=='N'||yes=='n')
break;
}
if(choose==2)
{
printf("请输入新的年龄:/n");
scanf("%d",&age);
p->age=age;
printf("是否继续修改本学生学生其他信息Y/N/n");
ch=getchar();
scanf("%c",&yes);
if(yes=='N'||yes=='n')
break;
}
if(choose==3)
{
printf("请输入新的出生日期:/n");
scanf("%s",birth);
p1=birth;
strcpy(p->birth,p1);
printf("是否继续修改本学生学生其他信息Y/N/n");
ch=getchar();
scanf("%c",&yes);
if(yes=='N'||yes=='n')
break;
}
if(choose==4)
{
printf("请输入新的电话:/n");
scanf("%d",&tele);
p->tele=tele;
printf("是否继续修改本学生学生其他信息Y/N/n");
ch=getchar();
scanf("%c",&yes);
if(yes=='N'||yes=='n')
break;
}
if(choose==5)
{
printf("请输入新的家庭住址:/n");
scanf("%s",addr);
p1=addr;
strcpy(p->addr,p1);
printf("是否继续修改本学生学生其他信息Y/N/n");
ch=getchar();
scanf("%c",&yes);
if(yes=='N'||yes=='n')
break;
}
if(choose==6)
{
printf("请输入'是'或'否':/n");
scanf("%s",party);
p1=party;
strcpy(p->party,p1);
printf("是否继续修改本学生学生其他信息Y/N/n");
ch=getchar();
scanf("%c",&yes);
if(yes=='N'||yes=='n')
break;
}
}
printf("是否继续修改其他学生Y/N/n");
ch=getchar();
scanf("%c",&yes);
if(yes=='N'||yes=='n')
break;
}
writetxt(head);
p=head;
while(p!=NULL)
{
printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p->num,p->name,p->sex,p->age,p->birth,p->tele,p->addr,p->party);
p=p->next;
}
return head;
}
}
/////////////////////////////////////////////////////////////////////////////////
/*学生成绩信息的录入*/
/////////////////////////////////////////////////////////////////////////////////
struct student *chengji(struct student *head)
{
FILE *fp;
struct student *p1,*p;
int i;
float sum=0;
fp=fopen("d://student1.txt","wb");
p1=(struct student *)malloc(sizeof(struct student));
p1=head;
while(p1!=NULL)
{
if(strcmp(p1->name,"0")==0)
{
printf("该学生不存在/n");
p1=p1->next;
continue;
}
printf("请输入学号为%s学生的高数、C语言、英语成绩:/n",p1->num);
for(i=0;i<M;i++)
{
scanf("%f",&p1->score[i]);
sum+=p1->score[i];
}
p1->total=sum;
sum=0;
fwrite(p1,sizeof(struct student),1,fp);
p1=p1->next;
}
fclose(fp);
writetxt(head);
p=head;
printf("学号  姓名  性别  年龄  出生年月  电话号码 地址 是否党员/n");
while(p!=NULL)
{
printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p->num,p->name,p->sex,p->age,p->birth,p->tele,p->addr,p->party);
p=p->next;
}
return(head);
}
/////////////////////////////////////////////////////////////////////////////////
/*学生信息的添加*/
/////////////////////////////////////////////////////////////////////////////////
struct student *insert(struct student *head)
{
char ch,ok;
struct student *p,*p0,*p1;
p=p1=head;
while(1)
{
if((len+1)<10)
printf("您的学号为0%d/n",len+1);
else
printf("您的学号为%d/n",len+1);
p0=(struct student *)malloc(sizeof(struct student));
len++;
if((len)<10)
printf("请输入0%d的学号:",len);
else
printf("请输入%d的学号:",len);
scanf("%s",p0->num);
if((len)<10)
printf("请输入0%d的姓名:",len);
else
printf("请输入%d的姓名:",len);
scanf("%s",p0->name);
if((len)<10)
printf("请输入0%d的性别:",len);
else
printf("请输入%d的性别:",len);
scanf("%s",p0->sex);
ch=getchar();
if((len)<10)
printf("请输入0%d的年龄:",len);
else
printf("请输入%d的年龄:",len);
scanf("%d",&p0->age);
if((len)<10)
printf("请输入0%d的生日:",len);
else
printf("请输入%d的生日:",len);
scanf("%s",p0->birth);
if((len)<10)
printf("请输入0%d的电话:",len);
else
printf("请输入%d的电话号:",len);
scanf("%ld",&p0->tele);
if((len)<10)
printf("请输入0%d的地址:",len);
else
printf("请输入%d的地址:",len);
scanf("%s",p0->addr);
if((len)<10)
printf("请输入0%d是否为党员:",len);
else
printf("请输入%d是否为党员:",len);
scanf("%s",p0->party);
while(p->next!=NULL)
p=p->next;
p->next=p0;
p0->next=NULL;
printf("是否继续添加Y/N/n") ;
ch=getchar();
scanf("%c",&ok);
if(ok=='y'||ok=='Y')len++;
else
{
printf("您需要重新进行1的操作来完成该学生信息的注册,谢谢!/n");
break;
}
}
p=head;
while(p!=NULL)
{
printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p->num,p->name,p->sex,p->age,p->birth,p->tele,p->addr,p->party);
p=p->next;
}
writetxt(head);
return(head);
}
/////////////////////////////////////////////////////////////////////////////////
/* 恢复误删的学生信息*/
/////////////////////////////////////////////////////////////////////////////////
struct student *recover(struct student *head)
{
FILE *fp;
struct student *p1,*p;
p=p1=(struct student*)malloc(sizeof(struct student));
char ch;
char num[10];
p1=head;
printf("input the recover number:");
scanf("%s",num);
fp=fopen("d://recycle.txt","rb");
if(fp==NULL)
{
printf("回收站为空!/n");
return NULL;
}
else
{
printf("是否将回收站的数据还原?Y/N /n");
ch=getchar();
ch=getchar();
if(ch=='n'||ch=='N')
printf("不需要还原!");
else
{
while(1)
{
if(strcmp(p1->num,num)==0)
break;
else
p1=p1->next;
}
while(!feof(fp))
{
fread(p,sizeof(struct student),1,fp);
if(strcmp(p1->num,p->num)==0)
{
strcpy(p1->name,p->name);
strcpy(p1->sex,p->sex);
p1->age=p->age;
strcpy(p1->birth,p->birth);
p1->tele=p->tele;
strcpy(p1->addr,p->addr);
strcpy(p1->party,p->party);
printf("dddddddddddddddddddd/n");
break;
}
}
}
writetxt(head);
p=head;
while(p!=NULL)
{
printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p->num,p->name,p->sex,p->age,p->birth,p->tele,p->addr,p->party);
p=p->next;
}fclose(fp);
}
return head;
}
/////////////////////////////////////////////////////////////////////////////////
/* 学生信息的删除*/
/////////////////////////////////////////////////////////////////////////////////
struct student *del(struct student *head)
{
FILE *fp;
struct student *p1,*p2,*p0;
p1=p2=head;
char ch;
char num[10];
printf("input the delete number:");
scanf("%s",num);
if(head==NULL)
printf("nothing to delete!");
else
{
while(p1!=NULL)
{
if(strcmp(p1->num,num)!=0)
{
p2=p1;
p1=p1->next;
}
if(strcmp(p1->num,num)==0)
{
p0=p1;
printf("是否永久删除该学生的信息?Y/N /n");
ch=getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
{
printf("该学生信息已经成功从磁盘删除!/n");
if(p1==head)
{
p0=p1;
head=p1->next;
p1=p2=head;
p1=p2->next;
}
else
{
p0=p1;
p2->next=p1->next;
p1=p2->next;
}
break;
}
else
{
fp=fopen("d://recycle.txt","ab+");
if(fp==NULL)
{
printf("cannot open the file!");
return NULL;
}
fwrite(p0,sizeof(struct student),1,fp);
strcpy(p1->name,"0");
strcpy(p1->sex,"0");
p1->age=0;
strcpy(p1->birth,"0");
p1->tele=0;
strcpy(p1->addr,"0");
strcpy(p1->party,"0");
printf("学生信息已放入回收站!/n");
fclose(fp);
printf("如果想恢复刚刚删除的学生信息,请输入'Y'or'y'/n");
printf("如果不想恢复刚刚删除的学生信息,请输入'N'or'n'/n");
ch=getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
{
head=recover(head);
break;
}
if(ch=='n'||ch=='N')
break ;
}
}
}
}
writetxt(head);
return head;
}
/////////////////////////////////////////////////////////////////////////////
/*  密码修改保存函数*/
////////////////////////////////////////////////////////////////////////////
void write()
{
FILE *fp;
struct secret p;
int i;
fp=fopen("d://mima.txt","wb");
if(fp==NULL)
{
printf("cannot open!");
}
for(i=0;i<=len;i++)
{
p=use[i];
fwrite(&p,sizeof(struct secret),1,fp);
}
fclose(fp);
}
////////////////////////////////////////////////////////////////////////////////
/*学生信息的查询*/
////////////////////////////////////////////////////////////////////////////////
void research(struct student *head)
{
struct student *p1,*p2;
p1=p2=head;
int i,j,l=1,k=0;
char sex[20],party[10],ch,yes;
int age;
char num[10],name[20];
printf("选择:1.模糊查询 2.精确查询:");
scanf("%d",&i);
if(i==1)
{
while(l==1)
{
printf("选择:1.性别 2.年龄 3.是否党员:");
scanf("%d",&j);
if(j==1)
{ p1=head;
printf("输入性别:");
scanf("%s",sex);
ch=getchar();
while(p1!=NULL)
{
if(strcmp(p1->sex,sex)==0)
{
printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p1->num,p1->name,p1->sex,p1->age,p1->birth,p1->tele,p1->addr,p1->party);
p1=p1->next;
continue;
}
k++;
if(k==3)
printf("该学生不存在!/n");
p1=p1->next;
}
printf("是否继续查询学生其他信息Y/N/n");
scanf("%c",&yes);
printf("yes=%c/n",yes);
if(yes=='N'||yes=='n')
break;
if(yes=='Y'||yes=='y')
k=0;
}
if(j==2)
{
p1=head;
printf("输入年龄:");
scanf("%d",&age);
while(p1!=NULL)
{
if(p1->age==age)
{
printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p1->num,p1->name,p1->sex,p1->age,p1->birth,p1->tele,p1->addr,p1->party);
p1=p1->next;
continue;
}
k++;
if(k==3)
printf("该学生不存在!/n");
p1=p1->next;
}
printf("是否继续查询学生其他信息Y/N/n");
ch=getchar();
scanf("%c",&yes);
if(yes=='N'||yes=='n')
break;
if(yes=='Y'||yes=='y')
k=0;
}
if(j==3)
{
p1=head;
printf("输入是否党员:");
scanf("%s",party);
ch=getchar();
while(p1!=NULL)
{
if(strcmp(p1->party,party)==0)
{
printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p1->num,p1->name,p1->sex,p1->age,p1->birth,p1->tele,p1->addr,p1->party);
p1=p1->next;
continue;
}
k++;
if(k==3)
printf("该学生不存在!/n");
p1=p1->next;
}
printf("是否继续查询学生其他信息?Y/N/n");
scanf("%c",&yes);
if(yes=='N'||yes=='n')
break;
if(yes=='Y'||yes=='y')
k=0;
}
}
}
if(i==2)
{
printf("请选择细查的关键字:1.学生学号 2.学生姓名:");
scanf("%d",&j);
if(j==1)
{
while(1)
{
p1=head;
printf("输入学生的学号:");
scanf("%5s",num);
while(p1!=NULL)
{
if(strcmp(p1->num,num)==0)
{
printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p1->num,p1->name,p1->sex,p1->age,p1->birth,p1->tele,p1->addr,p1->party);
p1=p1->next;continue;
}
k++;
if(k==3)
printf("该学生不存在!/n");
p1=p1->next;
}
printf("是否继续查询其他学生信息?Y/N/n");
ch=getchar();
scanf("%c",&yes);
if(yes=='N'||yes=='n')
break;
if(yes=='Y'||yes=='y')
k=0;
}
}
if(j==2)
{
while(1)
{
p1=head;
printf("输入学生的名字:");
scanf("%s",name);
while(p1!=NULL)
{
if(strcmp(p1->name,name)==0)
{
printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",p1->num,p1->name,p1->sex,p1->age,p1->birth,p1->tele,p1->addr,p1->party);
p1=p1->next;continue;
}
k++;
if(k==3)
printf("该学生不存在!/n");
p1=p1->next;
}
printf("是否继续查询其他学生信息?Y/N/n");
ch=getchar();
scanf("%c",&yes);
if(yes=='N'||yes=='n')
break;
if(yes=='Y'||yes=='y')
k=0;
}
}
}
}
////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
void research1(char num[])
{
int i;
for(i=0;i<=len;i++)
if(strcmp(stud[i].num,num)==0)
printf("%2s%15s%10s%10d%15s%8ld%10s%8s/n",stud[i].num,stud[i].name,stud[i].sex,stud[i].age,stud[i].birth,stud[i].tele,stud[i].addr,stud[i].party);
}
/////////////////////////////////////////////////////////////////////////////
/*  密码修改函数-*/
////////////////////////////////////////////////////////////////////////////
void mimacli()
{
char use1[30],mima[30],newmima[30],ch;
int i,j=0;
printf("输入用户名:/n");
scanf("%s",use1);
printf("输入密码:/n");
while(1)
{
mima[j]=getch();
if(mima[j]==13)
break;
putchar('*');
j++;
}
mima[j]='/0';
printf("/n");
for(i=0;i<=len;i++)
{
if(strcmp(stud[i].name,"0")==0)
{
printf("该学生不存在/n");
continue;
}
if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)==0)
{
printf("输入新密码:/n");
ch=getchar();
j=0;
while(1)
{
newmima[j]=getch();
if(newmima[j]==13)
break;
putchar('*');
j++;
}
newmima[j]='/0';
printf("/n");
strcpy(use[i].code,newmima);
write();
for(i=0;i<=len;i++){
printf("///////////////////////////////////////////////n");
printf("%s ",use[0].user);
printf("%s/n",use[0].code);
printf("///////////////////////////////////////////////n");}
break;
}
if(strcmp(use1,use[1].user)<0||strcmp(use1,use[len].user)>0)
{
printf("**************************************/n");
printf("   4用户名错误   /n");
printf("***************************************/n");
break;
}
if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)!=0)
{
printf("**************************************/n");
printf("   密码错误   /n");
printf("***************************************/n");
break;
}
}
}
/////////////////////////////////////////////////////////////////////////////
/*  学生信息管理系统的菜单函数-系统函数*/
////////////////////////////////////////////////////////////////////////////
int menu()
{
int sn,i,j=0;
char use1[30];
char mima[30];
int m=0;
printf("   学生信息管理系统/n");
printf("=========================================/n");
printf("  1.学生信息的整体注册/n");
printf("  2.学生信息的修改/n");
printf("  3.学生信息的添加/n");
printf("  4.学生信息的删除/n");
printf("  5.学生成绩信息的录入/n");
printf("  6.学生信息的查询/n");
printf("  7.访问者密码的修改/n");
printf("  8.恢复误删学生信息/n");
printf("  0.退出学生信息管理系统/n");
printf("==========================================/n");
printf("请选择0-8:/n");
while(1)
{
scanf("%d",&sn);
if(sn==7)
for(i=1;i<=len;i++)
{
strcpy(use[i].user,stud[i-1].num );
strcpy(use[i].code,stud[i-1].num );
}
if(sn>1&&sn<7||sn==8)
{
printf("请输入您的用户名:");
scanf("%s",use1);
printf("请输入您的密码:");
while(1)
{
mima[j]=getch();
if(mima[j]==13)
break;
putchar('*');
j++;
}
mima[j]='/0';
printf("/n");
if(sn==6)
if(strcmp(use1,use[0].user)!=0)
{
for(i=0;i<=len;i++)
{
if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)==0)
{
if(i!=0)
{
printf("**************************************/n");
printf("   您只能查找您本人的信息  /n");
printf("***************************************/n");
research1(use1);
break;
}
}
if(strcmp(use1,use[0].user)==0&&strcmp(use[0].code,mima)!=0)
{
printf("**************************************/n");
printf("   密码错误   /n");
printf("***************************************/n");
while(1)
{
m++;
if(m<3)
{
printf("重新输入:/n");
printf("请输入您的用户名:");
scanf("%s",use1);
printf("请输入您的密码:");
j=0;
while(1)
{
mima[j]=getch();
if(mima[j]==13)
break;
putchar('*');
j++;
}
mima[j]='/0';
if(strcmp(use1,use[0].user)==0&&strcmp(use[0].code,mima)!=0)
{
printf("**************************************/n");
printf("   密码错误   /n");
printf("***************************************/n");
}
}
else
{
sn=0;
break;
}
}
sn=0;
break;
}
if(strcmp(use1,use[1].user)<0||strcmp(use1,use[len].user)>0)
{
printf("**************************************/n");
printf("   3用户名错误   /n");
printf("***************************************/n");
sn=0;
break;
}
if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)!=0)
{
printf("**************************************/n");
printf("   密码错误   /n");
printf("***************************************/n");
while(1)
{
m++;
if(m<3)
{
if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)==0)
{
printf("**************************************/n");
printf("   您没有权限来操作   /n");
printf("***************************************/n");
sn=0;
break;
}
printf("重新输入:/n");
printf("请输入您的用户名:");
scanf("%s",use1);
printf("请输入您的密码:");
j=0;
while(1)
{
mima[j]=getch();
if(mima[j]==13)
break;
putchar('*');
j++;
}
mima[j]='/0';
printf("/n");
if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)!=0)
{
printf("**************************************/n");
printf("   密码错误   /n");
printf("***************************************/n");
}
else
{
printf("**************************************/n");
printf("   欢迎您登陆本系统   /n");
printf("***************************************/n");
research1(use1);
break;
}
}
else
{
sn=0;
break;
}
}
}
}
}
for(i=0;i<=len;i++)
{
if(sn==6)
if(strcmp(use1,use[0].user)!=0)
{
sn=0;
break;
}
if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)==0)
{
if(i!=0)
{
printf("**************************************/n");
printf("   您没有权限来操作   /n");
printf("***************************************/n");
sn=0;
break;
}
else
{
printf("**************************************/n");
printf("   欢迎您登陆本系统   /n");
printf("***************************************/n");
break;
}
}
if(strcmp(use1,use[0].user)==0&&strcmp(use[0].code,mima)!=0)
{
printf("**************************************/n");
printf("   密码错误   /n");
printf("***************************************/n");
while(1)
{
m++;
if(m<3)
{
printf("重新输入:/n");
printf("请输入您的用户名:");
scanf("%s",use1);
printf("请输入您的密码:");
j=0;
while(1)
{
mima[j]=getch();
if(mima[j]==13)
break;
putchar('*');
j++;
}
mima[j]='/0';
printf("/n");
if(strcmp(use1,use[0].user)==0&&strcmp(use[0].code,mima)!=0)
{
printf("**************************************/n");
printf("   密码错误   /n");
printf("***************************************/n");
}
else
{
printf("**************************************/n");
printf("   欢迎您登陆本系统   /n");
printf("***************************************/n");
break;
}
}
else
{
sn=0;
break;
}
}
break;
}
if(strcmp(use1,use[1].user)<0||strcmp(use1,use[len].user)>0)
{
printf("**************************************/n");
printf("   用户名错误   /n");
printf("***************************************/n");
sn=0;
break;
}
if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)!=0)
{
printf("**************************************/n");
printf("   密码错误   /n");
printf("***************************************/n");
while(1)
{
m++;
if(m<3)
{
if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)==0)
{
printf("**************************************/n");
printf("   您没有权限来操作   /n");
printf("***************************************/n");
sn=0;
break;
}
printf("重新输入:/n");
printf("请输入您的用户名:");
scanf("%s",use1);
printf("请输入您的密码:");
j=0;
while(1)
{
mima[j]=getch();
if(mima[j]==13)
break;
putchar('*');
j++;
}
mima[j]='/0';
printf("/n");
if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)!=0)
{
printf("**************************************/n");
printf("   密码错误   /n");
printf("***************************************/n");
}
}
else
{
sn=0;
break;
}
}
}
}
}
if (sn<0 || sn>8)
{
printf("/n/t输入错误,重选0-8/n");
break;
}
else
break;
}
return sn;
}
/////////////////////////////////////////////////////////////////////////////////
/* 学生信息管理系统的主函数--系统函数*/
/////////////////////////////////////////////////////////////////////////////////
void main()
{
struct student *head;
int i,j=0;
while(1)
{
switch(menu())
{
case 1:
printf("**************************************/n");
printf("   学生信息的整体注册   /n");
printf("***************************************/n");
head=create();
FILE *fp;
struct secret p;
fp=fopen("d://mima.txt","rb");
if(fp==NULL)
printf("open error/n");
else
{
for(i=0;i<=len;i++)
{
fread(&p,sizeof(struct secret),1,fp);
strcpy(use[i].user,p.user);
strcpy(use[i].code,p.code);
}
fclose(fp);
}
break;
case 2:
printf("**************************************/n");
printf("学生信息的修改/n");
printf("**************************************/n");
change(head);
break;
case 3:
printf("**************************************/n");
printf("学生信息的添加/n");
printf("**************************************/n");
head=insert(head);
break;
case 4:
printf("**************************************/n");
printf("学生成绩信息的删除入/n");
printf("**************************************/n");
head=del(head);
break;
case 5:
printf("**************************************/n");
printf("学生成绩信息的录入/n");
printf("**************************************/n");
head=chengji(head);
break;
case 6:
printf("**************************************/n");
printf("学生信息的查询/n");
printf("**************************************/n");
research(head);
break;
case 7:
printf("**************************************/n");
printf("访问者密码的修改/n");
printf("**************************************/n");
mimacli();
break;
case 8:
printf("**************************************/n");
printf("恢复误删信息/n");
printf("**************************************/n");
recover(head);
break;
case 0:
printf("**************************************/n");
printf("退出学生信息管理系统/n");
printf("**************************************/n");
printf("The end./n");
return;
default: printf("/n选择错误,请重选!/n");
getchar();
getchar();
}
system("cls");
}
}

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言 管理系统