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

本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下

一 .课题设计内容与主要功能

1.1问题描述:

通过该系统实现对学生学籍信息进行录入、显示、修改、插入、删除、排序、保存等操作的管理。

2.1功能要求:

1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、出生日期、入学时间、专业、班级、备注。

2、本系统显示这样的菜单:

请选择系统功能项:

j.学生学籍信息录入
k.学生学籍信息显示
l.学生学籍信息保存
m.学生学籍信息修改
n.学生学籍信息插入
o.学生学籍信息删除
p.学生学籍信息排序
q.学生学籍信息查询
r.退出系统

3、执行一个具体的功能之后,程序将重新显示菜单。

4、将学生学籍信息保存到文件中。

二.代码

#include    "stdio.h"
#include    "string.h"
#include     "stdlib.h"
#define PF printf
#define SF scanf
#define N 20

FILE *fp;
static int n = 0, i, m;

struct date
{
    char year[10];
    char month[10];
    char day[10];
};
struct classmate
{
    char name[20];
    char num[20];
    char sex[10];
    char clas[40];
    struct date birth;
    char time[20];
    char specialit[20];
    char remark[40];
}stud[N] = {NULL};

void add()
{
    char j;

    front1:

    for(m = 0;; m++)
        if(*stud[m].num== '\0')break;
    n = m;

    system("cls");  /*清屏*/

    PF("\n");
    PF("\n请输入要添加的姓名:");
    SF("%s",stud[n].name);
    PF("\n请输入要添加的学号(12位):");
    SF("%s",&stud[n].num);
    PF("\n请输入要添加的性别(男/女):");
    SF("\n%s",&stud[n].sex);
    PF("\n请输入要添加的班级:");
    SF("%s",&stud[n].clas);
    PF("\n请输入要添加的出生年份:");
    SF("%s",&stud[n].birth.year);
    PF("\n请输入要添加的出生月份:");
    SF("%s",&stud[n].birth.month);
    PF("\n请输入要添加的出生日子:");
    SF("%s",&stud[n].birth.day);
    PF("\n请输入要添加的入学日期:");
    SF("%s",&stud[n].time);
    PF("\n请输入要添加的专业:");
    SF("%s",&stud[n].specialit);
    PF("\n请输入要添加的备注:");
    SF("%s",stud[n].remark);
    getchar();
    n++;
    PF("是否继续(Y/N)?:");
    j=getchar(); getchar();
    if(j=='y'||j=='Y')
    {
        n++;
        goto front1;
    }        /*再输入记录*/

}
void del()
{
    int  k = 0;
    char j, s[20];
    front2:;

    for(m = 0;; m++)
        if(*stud[m].num == '\0')
            break;
    n = m;

    system("cls");  /*清屏*/

    PF("请输入要删除的学号:\n");
    getchar();
    gets(s);
    for(i = 0; i < n; i++)
       if(strcmp(s , stud[i].num) == 0)
        {
            k=1;break;
        }       /*查找记录*/
    if(k == 1)                                 /*删除记录*/
    {
        if(n == 1)
        {
            *stud[0].name = '\0';
            *stud[0].num = '\0';
            *stud[0].sex = '\0';
            *stud[0].clas = '\0';
            *stud[0].birth.year = '\0';
            *stud[0].birth.month = '\0';
            *stud[0].birth.day = '\0';
            *stud[0].time = '\0';
            *stud[0].specialit = '\0';
            *stud[0].remark = '\0';
        }
        else
        {
            for(k = i;k < n - 1; k++)
            {
                stud[k] = stud[k+1];
            }
            *stud[n - 1].name = '\0';
            *stud[n - 1].num = '\0';
            *stud[n - 1].sex = '\0';
            *stud[n - 1].clas = '\0';
            *stud[n - 1].birth.year = '\0';
            *stud[n - 1].birth.month = '\0';
            *stud[n - 1].birth.day = '\0';
            *stud[n - 1].time = '\0';
            *stud[n - 1].specialit = '\0';
            *stud[n - 1].remark = '\0';
        }

        PF("已删除\n\n");
    }
    else
    {
         PF("找不到要删除的记录!\n");
         PF("按回车键返回:");
         getchar();
    }
    PF("是否继续(Y/N)?:");
    j = getchar(); getchar();
    if(j=='y'||j=='Y')
        goto front2;

}

void find()
{
    int  i,s = 0;
    char j,k[20];
    for(m = 0;; m++)
        if(*stud[m].num== '\0')break;
    n = m;
    front3:
    s=0;
    system("cls");  /*清屏*/

    PF("\n请输入要查询的学号: ");
    getchar();
    gets(k);
    for(i = 0;i <= n; i++)
    if(strcmp(k,stud[i].num) == 0)
    {
    PF("\t\t姓名:%-10s\n",stud[i].name);
    PF("\t\t学号:%-10s\n",stud[i].num);
    PF("\t\t性别:%s\n",stud[i].sex);
    PF("\t\t班级:%-12s\n",stud[i].clas);
    PF("\t\t出生日期:%-4s 年 %-2s 月 %-2s 日\n",stud[i].birth.year,stud[i].birth.month,stud[i].birth.day);
    PF("\t\t入学日期:%s\n",stud[i].time);
    PF("\t\t专业:%s\n",stud[i].specialit);
    PF("\t\t备注:%s\n",stud[i].remark);

    s=1;
    }
    if(s==0)
    PF("查无此人!\n");
    getchar();
    PF("是否继续查询(Y/N)?:");
    j=getchar();getchar();
    if(j=='y'||j=='Y')
        goto front3;

    getchar();
}

void arrange()
{
    int k,i;
    struct classmate t;

    system("cls");  /*清屏*/

    FILE *fp;
    int s;
    for(m = 0;; m++)
        if(*stud[m].num== '\0')break;
    n = m;

    for(k = 0;k < n - 1; k++)
        for(i = 0;i < n - k - 1; i++)
            if(strcmp(stud[i].num,stud[i+1].num) > 0)
            {
                t = stud[i];
                stud[i] = stud[i+1];
                stud[i+1] = t;
            }
            else continue;

    for(i=0;i<=n-1;i++)
    if(stud[k].num != 0)
    {
        PF("\t\t姓名:%-10s\n",stud[i].name);
        PF("\t\t学号:%-10s\n",stud[i].num);
        PF("\t\t性别:%s\n",stud[i].sex);
        PF("\t\t班级:%-12s\n",stud[i].clas);
        PF("\t\t出生日期:%-4s 年 %-2s 月 %-2s 日\n",stud[i].birth.year,stud[i].birth.month,stud[i].birth.day);
        PF("\t\t入学日期:%s\n",stud[i].time);
        PF("\t\t专业:%s\n",stud[i].specialit);
        PF("\t\t备注:%s\n\n",stud[i].remark);
    }
    PF("\t\t输入回车返回主菜单");

    getchar();
    getchar();

}

void change()
{
    int  k = 0;
    char j, s[20];
    front5:
    system("cls");  /*清屏*/
    for(m = 0;; m++)
        if(*stud[m].num== '\0')break;
    n = m;
    PF("\n请输入要修改记录的学号:");
    getchar();
    gets(s);
    for(i = 0;i < n; i++)
       if(strcmp(s , stud[i].num) == 0)
       {
            k = 1;break;
       }      /*查找*/
       if(k == 1)                                   /*修改*/
       {
            PF("\n");
            PF("\n请输入修改后的姓名:");
            SF("%s",stud[i].name);
            PF("\n请输入修改后的学号:");
            SF("%s",&stud[i].num);
            PF("\n请输入修改后的性别:");
            SF("\n%s",&stud[i].sex);
            PF("\n请输入修改后的班级:");
            SF("%s",&stud[i].clas);
            PF("\n请输入修改后的出生年:");
            SF("%s",&stud[i].birth.year);
            PF("\n请输入修改后的出生月:");
            SF("%s",&stud[i].birth.month);
            PF("\n请输入修改后的出生日:");
            SF("%s",&stud[i].birth.day);
            PF("\n请输入修改后的入学日期:");
            SF("%s",&stud[n].time);
            PF("\n请输入修改后的专业:");
            SF("%s",&stud[n].specialit);
            PF("\n请输入修改后的备注:");
            SF("%s",stud[i].remark);
            PF("修改成功\n");
            getchar();
     }
     if(k==0)
     {
        PF("找不到要修改的记录!\n");
        PF("按回车键返回:");
        getchar();
     }
    getchar();
    PF("是否继续(Y/N)?:");
    j=getchar(); getchar();
    if(j=='y'||j=='Y') goto front5;
}

void show()
{
    int s;
    for(m = 0;; m++)
        if(*stud[m].num== '\0')break;
    n = m;

    for(s = 0;s < n;s++)
    {
        PF("\t\t姓名:%-10s\n",stud[s].name);
        PF("\t\t学号:%-10s\n",stud[s].num);
        PF("\t\t性别:%s\n",stud[s].sex);
        PF("\t\t班级:%-12s\n",stud[s].clas);
        PF("\t\t出生日期:%-4s 年 %-2s 月 %-2s 日\n",stud[s].birth.year,stud[s].birth.month,stud[s].birth.day);
        PF("\t\t入学日期:%s\n",stud[s].time);
        PF("\t\t专业:%s\n",stud[s].specialit);
        PF("\t\t备注:%s\n\n",stud[s].remark);
    }
    PF("\t\t按回车键返回主菜单");
    getchar();
    getchar();
}

void insert()
{
    front9:;
    char j;

    for(m = 0;; m++)
        if(*stud[m].num== '\0')break;
    n = m;

    system("cls");  /*清屏*/

    PF("\n");
    PF("\n请输入要插入的姓名:");
    SF("%s",stud[n].name);
    PF("\n请输入要插入的学号(12位):");
    SF("%s",&stud[n].num);
    PF("\n请输入要插入的性别(男/女):");
    SF("\n%s",&stud[n].sex);
    PF("\n请输入要插入的班级:");
    SF("%s",&stud[n].clas);
    PF("\n请输入要插入的出生年份:");
    SF("%s",&stud[n].birth.year);
    PF("\n请输入要插入的出生月份:");
    SF("%s",&stud[n].birth.month);
    PF("\n请输入要插入的出生日子:");
    SF("%s",&stud[n].birth.day);
    PF("\n请输入要插入的入学日期:");
    SF("%s",&stud[n].time);
    PF("\n请输入要插入的专业:");
    SF("%s",&stud[n].specialit);
    PF("\n请输入要插入的备注:");
    SF("%s",stud[n].remark);
    getchar();
    arrange();
    front10:;
    PF("是否继续(Y/N)?:");
    j=getchar(); getchar();
    if(j=='y'||j=='Y')
    {
        n++;
        goto front9;
    }
}

void main()
{
    char j;
    PF("\n           * * * * * * * * * * * * * * * * * * * * * * * * * * *");
    PF("\n           *              欢迎使用学生学籍管理系统             *");
    PF("\n           *                  制作人:胡彬                     *");
    PF("\n           *                   2020年1月                       *");
    PF("\n           *               按回车键进入主菜单:                 *");
    PF("\n           * * * * * * * * * * * * * * * * * * * * * * * * * * *");

    if(( fp = fopen("student.txt","r")) == NULL)//载入已保存的学籍信息
    {
        PF("\n           数据加载失败!");
    }
    else
    {

        fread(stud, sizeof(struct classmate), N, fp);
        fclose(fp);
        PF("\n           数据加载成功");
    }

    getchar();
    loop:
    system("cls");
    PF("\n");
    PF("\t\t   ************\n");
    PF("\t\t   *  主菜单  *\n");
    PF("\t\t   ************\n");
    PF("\t\t1.学生学籍信息录入\n\n");
    PF("\t\t2.学生学籍信息删除\n\n");
    PF("\t\t3.学生学籍信息查询\n\n");
    PF("\t\t4.学生学籍信息排序\n\n");
    PF("\t\t5.学生学籍信息修改\n\n");
    PF("\t\t6.学生学籍信息保存\n\n");
    PF("\t\t7.退出系统\n\n");
    PF("\t\t8.学生学籍信息显示\n\n");
    PF("\t\t9.学生学籍信息插入\n\n");
    PF("\t\t请选择[1/2/3/4/5/6/7/8]: ");
    j=getchar();
    if(j=='\n') goto loop;    /*返回主菜单*/

    switch(j)
    {
        case '1':   add(); goto loop;    /*返回主菜单*/
        case '2':   del(); goto loop;
        case '3':   find(); goto loop;
        case '4':   arrange(); goto loop;
        case '5':   change(); goto loop;
        case '6':   {
                        FILE *fp;
                        fp=fopen("student.txt","w");
                        fwrite(stud,n*sizeof(struct classmate),1,fp);
                        fclose(fp); goto loop;
                    }
        case '7':   exit(0);
        case '8':   show(); goto loop;
        case '9':   insert();goto loop;
        default:    goto loop;
    }
}

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

(0)

相关推荐

  • 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语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 设计要求 设计学籍管理系统 1.添加学生信息2.浏览学生信息3.查询学生信息4.修改学生信息5.册J除学生信息6.排序学生信息7.读取文件学生8.保存到文件 完整代码 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<math.h> #includ

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

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

  • C语言学籍管理系统源代码

    C语言学籍管理系统,整理一份,供大家参考,具体内容如下 #include <stdio.h> #include <conio.h> #include <stdlib.h> #define N 100 void mycreat(); void mynewcreat(); void mydisplay(); void myretake(); void myselect(); void mynumsort(); void mysort(); void myprint1();

  • 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

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

    学生学籍管理系统的C语言模拟实现是对链表.指针.结构体.文件操作等知识点的综合运用,需要实现的功能主要包含:输入学生信息.显示学生信息.查询学生信息.新增学生信息.删除学生信息.修改学生信息.对学生信息排序.保存当前信息到文件.文件备份.文件加载等. 代码实现如下 #include <stdio.h> #include <malloc.h> #include <string.h> #include <stdlib.h> #include<conio.h

  • C语言动态链表实现学生学籍管理系统

    本文实例为大家分享了C语言利用动态链表实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 /* * C语言学生信息管理系统(动态链表版) * 作者:cbc * 时间:2018年6月7日 * 功能:增添新键数据.修改删除数据.查询统计数据 * 平台:windows */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> # define LEN

  • C语言实现学籍管理系统课程设计

    本文实例为大家分享了C语言实现学籍管理系统的具体代码,供大家参考,具体内容如下 学校的课程设计,自己完成后整理了一下.自己用链表实现的一个较简单的学籍管理系统,都是通过一些链表以及文件的基本操作完成. 功能实现 1-录入学生信息.2-查询学生信息.3-修改学生信息 .4-删除学生信息.5-显示学生信息.6-统计信息报表.7-读盘,存盘. 注:一些getchar()以及换行符是我为了让界面美观自己加的. #include<stdio.h> #include<stdlib.h> #in

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

    本文实例为大家分享了C语言实现学籍管理系统的具体代码,供大家参考,具体内容如下 设计一个学籍管理系统,基本功能包括: 1.输入学生基本信息2.查询学生信息(1.按学号2.按姓名)3.删除学生信息(1.按学号2.按姓名)4.学生信息排序(1.按学号2.按姓名)5.修改学生基本信息6.输出学生信息7.保存学生信息0.退出程序 注:由于知识有限,该系统暂时规定只输入3个学生数据,今后会改良成可随机处理任意多个学生的数据 一.首页 void enter(struct student stu[],int

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

    本文实例为大家分享了C语言实现学籍信息管理系统的具体代码,供大家参考,具体内容如下 系统功能:录入.修改.添加.删除.查找.读取.删除数据 系统主要技术:基本就是函数的调用,只用到结构体,与文件的读写 所有的数据改动都会及时保存到文件 student.txt文件用来储存所有信息 shuju.txt文件用来储存信息数据 代码如下 /*             学籍信息管理系统 系统功能:录入.修改.添加.删除.查找.读取.删除数据 系统主要技术:基本就是函数的调用,还有结构体,与文件的读写  */

随机推荐