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

编写一个学生管理系统,附有说明文档,可以任意添加学生,删除学生,编辑学生信息,并且具有保存和读入学生信息的功能。运行时请注意要将student.txt拷贝至Debug目录中,也就是与Exe文件是同级目录,它要作为数据库的角色出现。

程序主要实现思路:

①: 使用单链表实现本程序要求,单链表每个节点存储一个学生的信息。

②: 创建一个链表类(List),链表类可实现如下功能:创建链表,插入节点,删除节点,编辑节点,显示节点,保存链表信息等功能,读入数据文件等功能(详细说明请查看源代码)。

③: 创建一个操作类(Operater),操作类实现如下功能:显示菜单,操作链表。

源码目录结构图:

源码展示:

#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/C++编程可以私信小编“01”获取素材资料与开发工具和听课权限!

快递信息管理系统源代码c++_学生信息管理系统C语言版相关推荐

  1. 基于python的学生信息管理系统文献综述_学生信息管理系统的文献综述

    基于 B/S 模式的成绩管理系统文献综述 1 .本课题研究的重要性和意义 目前,在学校里,随着高校规模的不断扩大和招生人数的不断增加,需要处理大量的 学生数据信息,越来越多的学校都需要自己的学生信息管 ...

  2. python学生信息管理系统项目总结_学生信息管理系统案例小结

    周末拿最近学习的知识 (JDBC, Servlet, JSP) 做一个小案例, 本来周末就应该整理笔记的, 但是打球也不能耽误啊, 所以只好赶着在今天下班的时间, 做下记录. 技术准备 Java 基础 ...

  3. PHP MySQL学生宿舍管理系统源代码_php高校学生宿舍管理系统

    本系统的最终用户为宿舍楼管理员,本宿舍楼的学生.根据我们日常生活中的经验,结合对自己学校宿舍楼管理老师的咨询和对同宿舍楼同学的了解,得出用户的下列实际要求: 应用技术:php +mysql数据库+ap ...

  4. 上海交通大学出版社python教材答案学生信息管理系统_学生信息管理系统(最终版)...

    <学生信息管理系统.doc>由会员分享,可免费在线阅读全文,更多与<学生信息管理系统(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索. 1. ...

  5. 个人信息管理系统代码_学生信息管理系统(springboot + vue)

    学生信息管理系统 零.基础 项目为前后分离项目 1.前端(front-end) 基于 vue-admin-template 开发 2.后端(rear-end) Jdk8 Maven3 MySQL5.7 ...

  6. c语言文件读写_学生信息管理系统(C语言\单向链表\文件读写)

    最近在复习数据结构,早上刚复习完链表,就想到了学生信息管理系统这个经典的大作业,然后呢,花了一早上加一中午的功夫给重新实现了一遍,里面可能会有写的不好的地方,但也代表了我实现的一些想法,在这里我将分享 ...

  7. python学生信息管理系统课程设计报告_学生信息管理系统课程设计报告

    一. 引言(简要说明设计题目的目的.意义.内容.主要任务等) 1 实验目的 在全面掌握< C 语言程序设计>课程的知识点的前提下,培养了我们分析实际问题的能力,并能够自己编写程序 实现对实 ...

  8. mysql学生管理系统毕业设计_学生信息管理系统的设计与实现(MyEclipse,MySQL)

    学生信息管理系统的设计与实现(MyEclipse,MySQL)(任务书,开题报告,中期检查表,文献综述,毕业论文15000字,程序代码,MySQL数据库) 学生信息管理系统的开发工具是MyEclips ...

  9. python制作个人信息管理系统_python实现简易学生信息管理系统

    本文实例为大家分享了python实现学生信息管理系统的具体代码,供大家参考,具体内容如下 简易学生信息管理系统主要功能有 1 录入学生信息 2 查找学生信息 3 删除学生信息 4 修改学生信息 5 排 ...

最新文章

  1. 书值 | 第 2 期:成为技术管理者,思维上应该如何转变?
  2. java 时间工具类 大于_Java 时间工具类
  3. window计算的chk在linux下可以读,Linux系统命令从入门到完全忘记(四)
  4. 日常 Python 编程优雅之道
  5. mysql5.7 非gtid同步
  6. linux串口环形缓冲区,能不能讲解下串口环形缓冲区的概念?
  7. 除了云原生,2021 年还有这八大趋势值得关注
  8. iptables基础概念
  9. python 指定时间内_python获取指定时间段内的随机不重复的时间点
  10. RocketMQ存储篇——整体结构以及MappedFile讲解
  11. AE光效效果插件:Trapcode Shine
  12. win10计算机错误代码,win10电脑更新失败提示错误代码0x80070424修复方法
  13. java开发app_使用java制作app教程
  14. pandoc输出中文pdf cmd命令记录
  15. 5G和车联网的本质联系
  16. 《Java 8实战》
  17. 《看板实战》读书笔记 XMIND版本
  18. stata:时间变量格式转换
  19. 计算机安全沙箱,360安全浏览器沙箱使用说明
  20. 【嵌入式07】定时器amp;PWM练习

热门文章

  1. One Order CLOSING date修改后的执行原理
  2. pricing data of Service order is copied from BP master data
  3. Tcode SCU3查看table log的error message - 如何查找necessary PFCG role
  4. Netweaver是如何判断哪些对象可以被增强的
  5. TCP服务器端和客户端建立连接 - 服务器端的回调处理
  6. ABAP和XML数据格式互相转换的两种方式
  7. 升级bigsur_升级 macOS Big Sur 后,程序监听端口报错
  8. 星号三角形python_python中的星号三角形
  9. c语言整数与平均值,编写求一组整数的和与平均值的程序
  10. 从前序与中序遍历序列构造二叉树Python解法