C语言学生学籍管理系统课程设计

C语言学生学籍管理系统做了好长时间的,里面有点小问题,希望大佬找到并帮忙改改,注意输入密码三次错误会自动注销用户,密码123456

代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
struct student
{
  char xuehao[100];//输入学号
  char name[100];//输入姓名
  char sex[100];//输入性别
  int age;//输入年龄
  char jiguan[100];//输入籍贯
  char dianhua[100];//输入电话
  char yuanxi[100];//输入院系
  char banji[100];//输入班级
} stu[1000];
void shouye()//首页
{
  int i;
  printf("^-^-----------------------------------------------------^-^\n");
  printf("\n");
  printf(" $        欢迎使用学生学籍管理系统!        $\n");
  printf(" $              制作人:          $\n");
  printf(" $                  李威鹏       $\n");
  printf(" $              时间:2017.12        $\n");
  printf("\n");
  printf("^-^-----------------------------------------------------^-^\n");
  printf("Enter键继续!");
  getchar();
  system("cls");
}
void zhuxiao()//注销用户
{
  system("shutdown -f ");
}
void denglu()//登陆
{
  void menu();
  int i,j;
  char mima[16];
  for(j=1; j<=4;)
  {
    if(j==4)
      break;
    else if(j<4)
    {
      printf("请输入6位密码:\n");
      printf("剩余输入次数%d\n",4-j);
      for(i=0; i<6; i++)
      {
        mima[i]=getch();
        printf("*");
      }
    }
    mima[i]='\0';
    if(strcmp(mima,"123456")==0)
    { 

      system("cls");
      printf("密码正确\n");
      printf("登陆成功!\n");
      printf("按Enter键继续!");
      getchar();
      menu();
      return; 

    }
    else
    {
      system("cls");
      printf("密码错误\n");
      j++;
    }
  }
  printf("注销用户!!!\n");
  zhuxiao();
  getch(); 

}
void menu()//菜单
{
  system("cls");
  printf("*-----------------------------学生管理系统--------------------------------*\n");
  printf("\n");
  printf("1.添加学生信息  2.删除某个学生信息   3.浏览学生信息\n");
  printf("4.修改学生信息  5.查找某个学生信息   6.显示信息数量\n");
  printf("0.退出系统\n");
  printf("\n");
  printf("*-------------------------------------------------------------------------*\n"); 

}
void save(int m)
{
  int i;
  FILE*fp;
  if ((fp=fopen("系统","wb"))==NULL)
  {
    printf ("文件打开失败\n");
    exit(0);
  }
  for (i=0; i<m; i++)
    if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
      printf("文件打开失败\n");
  fclose(fp);
}
int load()//打开文件,读取里面的数据
{
  FILEFILE *fp;
  int i=0;
  if((fp=fopen("系统","rb"))==NULL)
  {
    printf ("文件打开失败\n");
    exit(0);
  }
  else
  {
    do
    {
      fread(&stu[i],sizeof(struct student),1,fp);
      i++;
    }
    while(feof(fp)==0);
  }
  fclose(fp);
  return(i-1);
}
int menuchoose()//选择菜单
{
  int n;
  menu();
  printf("请选择菜单0~6:");
  while(1 != scanf("%d", &n) || n < 0 || n> 6)
  {
    menu();
    printf("选择菜单错误,请重新选择(0 ~ 6):");
    fflush(stdin);//清空输入缓冲区
  }
  return n;
}
void add()//添加学生信息
{
  int i,m,q,s=1;
  system("cls");
  printf("---------------输入学生信息---------------\n");
  printf("请输入需要添加学生的总人数:\n");
  scanf("%d",&m);
  for (i=0; i<m; i++)
  {
    printf("\n输入第 %d 个学生学籍信息.\n",i+1);
    printf("请输入学号:");
    scanf("%s",stu[i].xuehao);
    for(q=0; q<m; q++)
    {
      if(strcmp(stu[q].xuehao,stu[i].xuehao)==0&&q!=i)
      {
        printf("该学号已经存在,请重新输入:\n");
        printf("请输入学号:\n");
        s=1;
        scanf("%s",stu[q].xuehao);
      }
    }
    printf("请输入姓名:");
    scanf("%s",stu[i].name);
    printf("请输入性别:");
    scanf("%s",stu[i].sex);
    printf("请输入年龄:");
    scanf("%d",&stu[i].age);
    getchar();
    printf("请输入籍贯:");
    scanf("%s",stu[i].jiguan);
    printf("请输入电话:");
    scanf("%s",stu[i].dianhua);
    printf("请输入院系:");
    scanf("%s",stu[i].yuanxi);
    printf("请输入班级:");
    scanf("%s",stu[i].banji);
  }
  save(m);
}
void show()
{
  system("cls");
  int i;
  int m=load();
  if(m==0)
  {
    printf("\n暂无学生信息!\n");
    printf("是否添加学生信息?\n   是:1  否:2\n");
    int a2;
    scanf("%d",&a2);
    if(a2==1)
      add();
    else
      menu();
  }
  else
  {
    printf("----------------------浏览学生信息--------------------------\n");
    printf("\n");
    printf("\t\t\t\t\t\t\t\n");
    for(i=0; i<m; i++)
    {
       printf("第%d位同学的信息为:\n",i+1);
    printf("学号:%s\n",stu[i].xuehao);
    printf("姓名:%s\n",stu[i].name);
    printf("性别:%s\n",stu[i].sex);
    printf("年龄:%d\n",stu[i].age);
    printf("籍贯:%s\n",stu[i].jiguan);
    printf("电话:%s\n",stu[i].dianhua);
    printf("院系:%s\n",stu[i].yuanxi);
    printf("班级:%s\n",stu[i].banji);
    }
    system("pause");
  }
}
void del()
{ 

  int m=load();
  int i,j,n,t,flag;
  char xuehao[20];
  printf("\n 原有的学生信息为:\n");
  show();
  printf("\n");
  printf("请输入要删除的学生的学号:\n");
  scanf("%s",xuehao);
  for(flag=1,i=0; flag&&i<m; i++)
  {
    if(strcmp(stu[i].xuehao,xuehao)==0)
    {
       printf("学号:%s\n",stu[i].xuehao);
    printf("姓名:%s\n",stu[i].name);
    printf("性别:%s\n",stu[i].sex);
    printf("年龄:%d\n",stu[i].age);
    printf("籍贯:%s\n",stu[i].jiguan);
    printf("电话:%s\n",stu[i].dianhua);
    printf("院系:%s\n",stu[i].yuanxi);
    printf("班级:%s\n",stu[i].banji);
      printf("是否要删除此人信息?\n是请按1,否请按0:\n");
      scanf("%d",&n);
      if(n==1)
      {
        for(j=i; j<m-1; j++)
        {
          strcpy(stu[j].name,stu[j+1].name);
          strcpy(stu[j].xuehao,stu[j+1].xuehao);
          strcpy(stu[j].sex,stu[j+1].sex);
          stu[j].age=stu[j+1].age;
          strcpy(stu[j].yuanxi,stu[j+1].yuanxi);
          strcpy(stu[j].banji,stu[j+1].banji);
          strcpy(stu[j].jiguan,stu[j+1].jiguan);
          strcpy(stu[j].dianhua,stu[j+1].dianhua);
        }
        flag=0;
      }
    }
  }
  if(!flag)
    m=m-1;
  else
    printf("\n无此人信息!\n");
  save(m);
  printf("\n是否继续删除信息\n 继续请按1\n退出请按0\n");
  scanf("%d",&t);
  switch(t)
  {
  case 1:
    del();
    break;
  case 0:
    menu();
    break;
  default :
    break;
  }
}
void xiugai()//修改学生信息
{
  system("cls");
  FILEFILE *fp;
  int n,i,j,c,x,y;
  char m[10];
  n=load();
  show();
  printf("请输入要修改学生的学号或姓名:");
  scanf("%s",&m);
  do
  {
    printf("\n请选择要修改的选项:\n\n1.学号 2.姓名 3.性别 4.年龄 5.籍贯 6.电话 7.院系 8.班级 9.取消并返回\n");
    printf("请选择?:\n ");
    scanf("%d",&c);
    if(c>9||c<1)
    {
      menu();
      puts("\n选择错误!请重新选择!");
      fflush(stdin);//清空输入缓冲区
    }
  }
  while(c>9||c<1);
  for (i=0; i<n; i++)
    if (!strcmp(stu[i].xuehao,m)||!strcmp(stu[i].name,m))
    {
      switch (c)
      {
      case 1:
        printf("学号:");
        scanf("%s",stu[i].xuehao);
        break;
      case 2:
        printf("姓名:");
        scanf("%s",stu[i].name);
        break;
      case 3:
        printf("性别:");
        scanf("%s",stu[i].sex);
        break;
      case 4:
        printf("年龄:");
        scanf("%d",&stu[i].age);
        break;
      case 5:
        printf("籍贯:");
        scanf("%s",stu[i].jiguan);
        break;
      case 6:
        printf("电话:");
        scanf("%s",stu[i].dianhua);
        break;
      case 7:
        printf("院系:");
        scanf("%s",stu[i].yuanxi);
        break;
      case 8:
        printf("班级:");
        scanf("%s",stu[i].banji);
        break;
      case 9:
        menu();/*返回主菜单*/
      }
      printf("是否保存?\n");
      printf("是:1\n否:2\n");
      scanf("%d",&x);
    }
  if(x==1)
  {
    save(n);
    printf("保存成功!\n");
    printf("是否继续修改?继续:1 否:2\n");
    int p;
    scanf("%d",&p);
    if(p==1)
    {
      xiugai();
    }
    else
    {
      menu();
    }
  }
  else
  {
    printf("退出请按0,继续修改请按1\n");
    scanf("%d",&y);
    switch(y)
    {
    case 0:
      break;
    case 1:
      xiugai();
      break;
    }
  }
}
void showone(int c) /*输出一个学生的信息*/
{
   printf("学号:%s\n",stu[c].xuehao);
    printf("姓名:%s\n",stu[c].name);
    printf("性别:%s\n",stu[c].sex);
    printf("年龄:%d\n",stu[c].age);
    printf("籍贯:%s\n",stu[c].jiguan);
    printf("电话:%s\n",stu[c].dianhua);
    printf("院系:%s\n",stu[c].yuanxi);
    printf("班级:%s\n",stu[c].banji);
}
void chazhao()//查找某个学生的信息
{
  system("cls");
  FILE*fp;
  int a1,b1,c1,d1,e1,n,i;
  char t[10];
  n=load();
  printf("请输入要查找的学生的学号或姓名:");
  scanf("%s",t);
  for(i=0; i<n; i++)
    if (!strcmp(stu[i].xuehao,t)||!strcmp(stu[i].name,t))
    {
       printf("学号:%s\n",stu[i].xuehao);
    printf("姓名:%s\n",stu[i].name);
    printf("性别:%s\n",stu[i].sex);
    printf("年龄:%d\n",stu[i].age);
    printf("籍贯:%s\n",stu[i].jiguan);
    printf("电话:%s\n",stu[i].dianhua);
    printf("院系:%s\n",stu[i].yuanxi);
    printf("班级:%s\n",stu[i].banji);
      printf("是否继续查找?继续:1  返回主菜单:2\n");
      scanf("%d",&c1);
      switch(c1)
      {
      case 1:
        chazhao();
        return ;
      case 2:
        system("cls");
        menu();
        return;
      }
    }
  if (strcmp(stu[i].xuehao,t)||strcmp(stu[i].name,t))
  {
    printf("无该学生信息!\n");
    printf("是否继续查找?  继续:1  返回主菜单:2\n");
    scanf("%d",&b1);
    switch(b1)
    {
    case 1:
      chazhao();
      return;
    case 2:
      menu();
      return ;
    }
  }
}
void shuliang()
{
  system("cls");
  int n,h;
  n=load();
  printf("共有 %d 个学生的记录.\n",n);
  if(n==0)
  {
    printf("暂无学生信息!\n");
    system("pause");
    menu();
  }
  else
  {
    printf("是否显示学生信息?\n是:1  否:2\n");
    scanf("%d",&h);
    if(h==1)
    {
      show();
    }
    else
    {
      menu();
    }
  }
  menu(); /*返回主函数*/
}
int main()
{
  shouye();
  denglu();
  int test=1;
  while(test)
  {
    switch(menuchoose())
    {
    case 0:
      test=0;
      printf("\n            ^-^谢谢使用!^-^     \n");
      printf("       代码有点长,错误也有点多,望见谅^-^\n");
      break;
    case 1://增加学生学籍信息
      add();
      break;
    case 2://删除某个学生信息
      del();
      break;
    case 3://显示学生信息
      show();
      break;
    case 4://修改学生信息
      xiugai();
      break;
    case 5://查找某个学生信息
      chazhao();
      break;
    case 6:
      shuliang();//显示学生学籍数量
      break;
    }
  }
  return 0;
}

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

您可能感兴趣的文章:

  • C语言实现简单学生学籍管理系统
  • 学生信息管理系统C语言版
  • C语言单链表版学生信息管理系统
  • C语言实现学生信息管理系统(单链表)
  • C语言学生信息管理系统小项目
  • C语言数组实现学生信息管理系统设计
  • C语言版学生成绩管理系统
  • C语言学生信息管理系统设计与实现
  • 基于C语言实现学生成绩管理系统
  • C语言实现学生学籍管理系统
(0)

相关推荐

  • C语言单链表版学生信息管理系统

    本文实例为大家分享了C语言学生信息管理系统的具体代码,供大家参考,具体内容如下 代码: //以单链表作为存储结构,设计和实现课程成绩管理的完整程序. //程序包括如下功能. //1.建立学生成绩表,包含学生的学号.姓名和成绩. //2.可以显示所有学生成绩. //3.可以计算学生的总数. //4.可以按学号和序号查找学生. //5.可以在指定位置插入学生成绩数据. //6.可以删除指定位置的学生数据. //7.可以把学生成绩按从高到低的顺序排序. //作者: yinlinqvan //操作系统:

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

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

  • C语言实现简单学生学籍管理系统

    本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #define N 100 /*存储100个学生的学籍信息*/ int flag; /*标记是否登录*/ struct date /*出生日期*/ { int year; int month; int day; }; struct

  • 基于C语言实现学生成绩管理系统

    本文实例为大家分享了C语言实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 这里只贴代码,具体介绍省略. #include <stdio.h> #include <io.h> #include <conio.h> #include <stdlib.h> #include <string.h> #define MAX 200 struct student { char no[10]; // 学号 char name[50]; // 姓名 f

  • C语言实现学生信息管理系统(单链表)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 /*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:吴敬超 * 完成日期:2016年7月1日 * 版本号:codeblock * * 问题描述: 学生信息管理系统 * 输入描述: * 程序输出: 输出结果 */ #include <stdio.h> #include <stdlib.h> #include

  • C语言版学生成绩管理系统

    本文实例为大家分享了C语言版学生成绩管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<conio.h> #include<string.h> #include<algorithm> char buf[255]; char c=14; char path[]="D:\\data"; char tm

  • C语言学生信息管理系统小项目

    本文为大家分享了C语言学生信息管理系统小项目,供大家参考,具体内容如下 /* 运行环境:我是在linux里面用gcc编译的,在windows里应该也能运行,用的一些文件库函数都是c标准库,没有用linux的系统调用(纠正一下:system("clear")这个系统调用是linux的,windows里面用system("cls") ) (1)问题描述 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等.试设计一学生信息管理系统,使之能提供以下功

  • C语言数组实现学生信息管理系统设计

    概述 单纯只用多个数组管理学生成绩信息,不使用结构体,该程序最主要的难点是依据学号或总成绩对学生信息进行排序,借助了临时数组来标记排好序的下标. 运行结果如下: 输入数据: 打印数据: 根据学号对信息进行排序: 根据总成绩对信息进行排序: 根据学号删除某一信息: 代码如下: #include <stdio.h> #include <stdlib.h> //exit函数头文件 #include <string.h> //字符串相关操作头文件 #define MAX_STU

  • C语言学生信息管理系统设计与实现

    本文实例为大家分享了C语言学生信息管理系统的具体代码,供大家参考,具体内容如下 #include"stdio.h" //标准的输入输出函数文件头部说明 #include"math.h" // 数学函数头部说明 #include"string.h" #include"stdlib.h" //通过该函数头部里的函数,改变控制台的背景和颜色 #include"windows.h" //头文件声明,下文用到了改变控

  • C语言实现学生学籍管理系统

    本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> #include<windows.h> //**********************************结构体************************************* struct score

随机推荐