學(xué)生信息管理系統(tǒng)C語言版
C語言學(xué)生信息管理系統(tǒng)包括以下功能:
1、學(xué)生信息的整體注冊
2、學(xué)生信息的修改
3、學(xué)生成績信息的錄入
4、學(xué)生信息的添加
5、恢復(fù)誤刪的學(xué)生信息
6、學(xué)生信息的刪除
7、密碼修改保存函數(shù)
8、學(xué)生信息的查詢
9、密碼修改函數(shù)
10、學(xué)生信息管理系統(tǒng)的菜單函數(shù)
#include "stdio.h"
#include "malloc.h"
#include "string.h"
#include "stdlib.h"
#include "conio.h"
#define M 3
struct student
{
char num[10]; /* 學(xué)生的學(xué)號 */
char name[20]; /* 學(xué)生的姓名 */
char sex[5]; /* 學(xué)生的性別 */
int age; /* 學(xué)生的年齡 */
char birth[20]; /* 學(xué)生的出生年月 */
long tele; /* 學(xué)生的電話號碼 */
char addr[30]; /* 學(xué)生的地址 */
char party[10]; /* 學(xué)生是否為黨員 */
float score[M]; /* 學(xué)生各門學(xué)科成績 */
float total; /* 學(xué)生的學(xué)科成績總分 */
struct student *next;
}stud[100];
struct secret
{
char user[30];
char code[30];
}use[100];
int len; //學(xué)生人數(shù)
/////////////////////////////////////////////////////////////////////////////////
/*學(xué)生信息寫入到文件中-----系統(tǒng)函數(shù)*/
/////////////////////////////////////////////////////////////////////////////////
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);
}
/////////////////////////////////////////////////////////////////////////////////
/* 學(xué)生信息的整體注冊*/
/////////////////////////////////////////////////////////////////////////////////
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 文件還不存在,是否創(chuàng)建?(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的學(xué)號:",len);
else
printf("請輸入%d的學(xué)號:",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的學(xué)號:",len);
else
printf("請輸入%d的學(xué)號:",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 文件已經(jīng)存在/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條學(xué)生信息/n",len);
printf("/n 是否使用已經(jīng)存在的學(xué)生數(shù)據(jù)?(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("學(xué)號 姓名 性別 年齡 出生年月 電話號碼 地址 是否黨員/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的學(xué)號:",len);
else
printf("請輸入%d的學(xué)號:",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的學(xué)號:",len);
else
printf("請輸入%d的學(xué)號:",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);
}
}
////////////////////////////////////////////////////////////////////////////////
/*學(xué)生信息的修改*/
////////////////////////////////////////////////////////////////////////////////
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("請輸入學(xué)號/n");
scanf("%s",num);
p=head;
while(p!=NULL&&strcmp(p->num,num)!=0)
{
p=p->next;
if(p==NULL)
{
printf("該學(xué)生不存在/n");
break;
}
if(strcmp(p->name,"0")==0)
{
printf("該學(xué)生已不存在/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("是否繼續(xù)修改本學(xué)生學(xué)生其他信息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("是否繼續(xù)修改本學(xué)生學(xué)生其他信息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("是否繼續(xù)修改本學(xué)生學(xué)生其他信息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("是否繼續(xù)修改本學(xué)生學(xué)生其他信息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("是否繼續(xù)修改本學(xué)生學(xué)生其他信息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("是否繼續(xù)修改本學(xué)生學(xué)生其他信息Y/N/n");
ch=getchar();
scanf("%c",&yes);
if(yes=='N'||yes=='n')
break;
}
}
printf("是否繼續(xù)修改其他學(xué)生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;
}
}
/////////////////////////////////////////////////////////////////////////////////
/*學(xué)生成績信息的錄入*/
/////////////////////////////////////////////////////////////////////////////////
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("該學(xué)生不存在/n");
p1=p1->next;
continue;
}
printf("請輸入學(xué)號為%s學(xué)生的高數(shù)、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("學(xué)號 姓名 性別 年齡 出生年月 電話號碼 地址 是否黨員/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);
}
/////////////////////////////////////////////////////////////////////////////////
/*學(xué)生信息的添加*/
/////////////////////////////////////////////////////////////////////////////////
struct student *insert(struct student *head)
{
char ch,ok;
struct student *p,*p0,*p1;
p=p1=head;
while(1)
{
if((len+1)<10)
printf("您的學(xué)號為0%d/n",len+1);
else
printf("您的學(xué)號為%d/n",len+1);
p0=(struct student *)malloc(sizeof(struct student));
len++;
if((len)<10)
printf("請輸入0%d的學(xué)號:",len);
else
printf("請輸入%d的學(xué)號:",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("是否繼續(xù)添加Y/N/n") ;
ch=getchar();
scanf("%c",&ok);
if(ok=='y'||ok=='Y')len++;
else
{
printf("您需要重新進(jìn)行1的操作來完成該學(xué)生信息的注冊,謝謝!/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);
}
/////////////////////////////////////////////////////////////////////////////////
/* 恢復(fù)誤刪的學(xué)生信息*/
/////////////////////////////////////////////////////////////////////////////////
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("是否將回收站的數(shù)據(jù)還原?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;
}
/////////////////////////////////////////////////////////////////////////////////
/* 學(xué)生信息的刪除*/
/////////////////////////////////////////////////////////////////////////////////
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("是否永久刪除該學(xué)生的信息?Y/N /n");
ch=getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
{
printf("該學(xué)生信息已經(jīng)成功從磁盤刪除!/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("學(xué)生信息已放入回收站!/n");
fclose(fp);
printf("如果想恢復(fù)剛剛刪除的學(xué)生信息,請輸入'Y'or'y'/n");
printf("如果不想恢復(fù)剛剛刪除的學(xué)生信息,請輸入'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;
}
/////////////////////////////////////////////////////////////////////////////
/* 密碼修改保存函數(shù)*/
////////////////////////////////////////////////////////////////////////////
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);
}
////////////////////////////////////////////////////////////////////////////////
/*學(xué)生信息的查詢*/
////////////////////////////////////////////////////////////////////////////////
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("該學(xué)生不存在!/n");
p1=p1->next;
}
printf("是否繼續(xù)查詢學(xué)生其他信息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("該學(xué)生不存在!/n");
p1=p1->next;
}
printf("是否繼續(xù)查詢學(xué)生其他信息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("該學(xué)生不存在!/n");
p1=p1->next;
}
printf("是否繼續(xù)查詢學(xué)生其他信息?Y/N/n");
scanf("%c",&yes);
if(yes=='N'||yes=='n')
break;
if(yes=='Y'||yes=='y')
k=0;
}
}
}
if(i==2)
{
printf("請選擇細(xì)查的關(guān)鍵字:1.學(xué)生學(xué)號 2.學(xué)生姓名:");
scanf("%d",&j);
if(j==1)
{
while(1)
{
p1=head;
printf("輸入學(xué)生的學(xué)號:");
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("該學(xué)生不存在!/n");
p1=p1->next;
}
printf("是否繼續(xù)查詢其他學(xué)生信息?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("輸入學(xué)生的名字:");
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("該學(xué)生不存在!/n");
p1=p1->next;
}
printf("是否繼續(xù)查詢其他學(xué)生信息?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);
}
/////////////////////////////////////////////////////////////////////////////
/* 密碼修改函數(shù)-*/
////////////////////////////////////////////////////////////////////////////
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("該學(xué)生不存在/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("http:///////////////////////////////////////////////n");
printf("%s ",use[0].user);
printf("%s/n",use[0].code);
printf("http:///////////////////////////////////////////////n");}
break;
}
if(strcmp(use1,use[1].user)<0||strcmp(use1,use[len].user)>0)
{
printf("**************************************/n");
printf(" 4用戶名錯(cuò)誤 /n");
printf("***************************************/n");
break;
}
if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)!=0)
{
printf("**************************************/n");
printf(" 密碼錯(cuò)誤 /n");
printf("***************************************/n");
break;
}
}
}
/////////////////////////////////////////////////////////////////////////////
/* 學(xué)生信息管理系統(tǒng)的菜單函數(shù)-系統(tǒng)函數(shù)*/
////////////////////////////////////////////////////////////////////////////
int menu()
{
int sn,i,j=0;
char use1[30];
char mima[30];
int m=0;
printf(" 學(xué)生信息管理系統(tǒng)/n");
printf("=========================================/n");
printf(" 1.學(xué)生信息的整體注冊/n");
printf(" 2.學(xué)生信息的修改/n");
printf(" 3.學(xué)生信息的添加/n");
printf(" 4.學(xué)生信息的刪除/n");
printf(" 5.學(xué)生成績信息的錄入/n");
printf(" 6.學(xué)生信息的查詢/n");
printf(" 7.訪問者密碼的修改/n");
printf(" 8.恢復(fù)誤刪學(xué)生信息/n");
printf(" 0.退出學(xué)生信息管理系統(tǒng)/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(" 密碼錯(cuò)誤 /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(" 密碼錯(cuò)誤 /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用戶名錯(cuò)誤 /n");
printf("***************************************/n");
sn=0;
break;
}
if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)!=0)
{
printf("**************************************/n");
printf(" 密碼錯(cuò)誤 /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(" 您沒有權(quán)限來操作 /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(" 密碼錯(cuò)誤 /n");
printf("***************************************/n");
}
else
{
printf("**************************************/n");
printf(" 歡迎您登陸本系統(tǒng) /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(" 您沒有權(quán)限來操作 /n");
printf("***************************************/n");
sn=0;
break;
}
else
{
printf("**************************************/n");
printf(" 歡迎您登陸本系統(tǒng) /n");
printf("***************************************/n");
break;
}
}
if(strcmp(use1,use[0].user)==0&&strcmp(use[0].code,mima)!=0)
{
printf("**************************************/n");
printf(" 密碼錯(cuò)誤 /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(" 密碼錯(cuò)誤 /n");
printf("***************************************/n");
}
else
{
printf("**************************************/n");
printf(" 歡迎您登陸本系統(tǒng) /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(" 用戶名錯(cuò)誤 /n");
printf("***************************************/n");
sn=0;
break;
}
if(strcmp(use1,use[i].user)==0&&strcmp(use[i].code,mima)!=0)
{
printf("**************************************/n");
printf(" 密碼錯(cuò)誤 /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(" 您沒有權(quán)限來操作 /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(" 密碼錯(cuò)誤 /n");
printf("***************************************/n");
}
}
else
{
sn=0;
break;
}
}
}
}
}
if (sn<0 || sn>8)
{
printf("/n/t輸入錯(cuò)誤,重選0-8/n");
break;
}
else
break;
}
return sn;
}
/////////////////////////////////////////////////////////////////////////////////
/* 學(xué)生信息管理系統(tǒng)的主函數(shù)--系統(tǒng)函數(shù)*/
/////////////////////////////////////////////////////////////////////////////////
void main()
{
struct student *head;
int i,j=0;
while(1)
{
switch(menu())
{
case 1:
printf("**************************************/n");
printf(" 學(xué)生信息的整體注冊 /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("學(xué)生信息的修改/n");
printf("**************************************/n");
change(head);
break;
case 3:
printf("**************************************/n");
printf("學(xué)生信息的添加/n");
printf("**************************************/n");
head=insert(head);
break;
case 4:
printf("**************************************/n");
printf("學(xué)生成績信息的刪除入/n");
printf("**************************************/n");
head=del(head);
break;
case 5:
printf("**************************************/n");
printf("學(xué)生成績信息的錄入/n");
printf("**************************************/n");
head=chengji(head);
break;
case 6:
printf("**************************************/n");
printf("學(xué)生信息的查詢/n");
printf("**************************************/n");
research(head);
break;
case 7:
printf("**************************************/n");
printf("訪問者密碼的修改/n");
printf("**************************************/n");
mimacli();
break;
case 8:
printf("**************************************/n");
printf("恢復(fù)誤刪信息/n");
printf("**************************************/n");
recover(head);
break;
case 0:
printf("**************************************/n");
printf("退出學(xué)生信息管理系統(tǒng)/n");
printf("**************************************/n");
printf("The end./n");
return;
default: printf("/n選擇錯(cuò)誤,請重選!/n");
getchar();
getchar();
}
system("cls");
}
}
更多學(xué)習(xí)資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:C語言鏈表實(shí)現(xiàn)圖書管理系統(tǒng)
欄 目:C語言
下一篇:C語言實(shí)現(xiàn)歌曲信息管理系統(tǒng)
本文標(biāo)題:學(xué)生信息管理系統(tǒng)C語言版
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/955.html
您可能感興趣的文章
- 01-10c++獲取進(jìn)程信息列表和進(jìn)程所調(diào)用的dll列表
- 01-10c語言實(shí)現(xiàn)的貨物管理系統(tǒng)實(shí)例代碼(增加刪除 查找貨物信息等
- 01-10C++訪問注冊表獲取已安裝軟件信息列表示例代碼
- 01-10獲取本地網(wǎng)卡適配器信息具體代碼
- 01-10C/C++獲取目錄下的文件列表信息
- 01-10c語言獲取直播吧最近一周nba比賽信息
- 01-10C/C++實(shí)現(xiàn)對STORM運(yùn)行信息查看及控制的方法
- 01-10VC++實(shí)現(xiàn)通過API來查看程序錯(cuò)誤信息的方法
- 01-10匯編語言常見錯(cuò)誤信息中文注解
- 01-10C++獲得其他程序窗體控件中信息的方法


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置


