①注意:

程序中使用了sleep()函数、system()函数

  • 关于 sleep() 函数
    sleep() 函数的头文件和用法会因环境的不同而有所不同。
    具体见-sleep()函数功能及用法

  • 关于system() 清屏函数

  1. linux下的清屏函数是system("clear")
  2. Windows下的清屏函数是system("cls")
  3. clrscr()是Turbo C中的库函数,包含在#include <conio.h> 中。
    在VC中无法调用此函数

下面贴出的代码中使用的是 sleep(1)system("clear")
至于为什么不是 sleep(1000)system("cls")
请仔细把上方的注意再看一遍~~~

②完整代码:

/*title: 学生信息管理系统(c/c++)
 *author: Griouges
 *转载请注明出处:http://www.cnblogs.com/Griouges/
 */
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define M 50
typedef struct
{                           //定义学生信息结构体
    char no[20];            //学号
    char name[20];        //姓名
    char sex[5];            //性别
    int age;                //年龄
} students;
void return_ment();                                 //返回主菜单
void print_ment();                                   //打印主菜单
int ment_select();                                   //主菜单选择
int enter(students t[]);                               //输入学生信息
void list(students t[], int n);                     //显示学生信息
void search_name(students t[], int n);              //按姓名查找显示学生信息
void search_no(students t[], int n);                   //按序号查找显示学生信息
void change_no(students t[], int n);                   //按学号修改学生信息
int del(students t[], int n);                         //删除学生信息
int add(students t[], int n);                         //插入学生信息
int load(students t[]);                             //从文件中读取学生信息
void print(students temp);                           //显示单条学生信息
void save(students t[], int n);                     //保存学生信息为文件
int find_name(students t[], int n, char *s);          //按姓名查找
int find_no(students t[], int n, char *s);         //按学号查找
/*
 *
 */
void return_ment()
{
    char mistake[20];
    printf("按回车键返回主菜单...\n");
    gets(mistake);
    return;
}
void print_ment()
{
    printf("********************主菜单********************\n");
    printf("               0. 录入学生信息\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("               9. 退出\n");
    printf("********************************************\n");
    return;
}
int ment_select()
{
    print_ment();
    printf("\n输入您的菜单选项编号(0-11):");
    int c;
    while (1)
    {
        scanf("%d", &c);
        getchar();
        if (c > 11 || c < 0)
        {
            system("clear");
            print_ment();
            printf("\n输入的选项编号无效,请重新输入:");
            continue;
        }
        else
            break;
    }
    return c;
}
//输入学生信息,形参为结构体数组,函数值返回类型为整型表示信息长度
int enter(students t[])
{
    int i, n;
    system("clear");
    printf("\n请输入需要记录学生的条数\n");
    scanf("%d", &n);
    system("clear");
    printf("请输入%d位学生的信息:\n", n);
    printf("学号          姓名          性别          年龄\n");
    printf("--------------------------------------------\n");
    for (i = 0; i < n; i++)
    {
        scanf("%s", t[i].no);
        scanf("%s", t[i].name);
        scanf("%s", t[i].sex);
        scanf("%d", &t[i].age);
        getchar();
    }
    printf("信息录入中...\n");
    sleep(1);
    if (i == n)
        printf("信息录入成功!\n");
    else
        printf("信息录入失败!\n");
    return n;
}
//显示信息,形参为结构体数组和信息条数
void list(students t[], int n)
{
    int i;
    system("clear");
    if (n == 0)
    {
        printf("内存中无学生信息!\n请先录入学生信息或加载学生信息到内存中\n");
        return;
    }
    printf("\n*******************学生清单******************\n");
    printf("学号          姓名          性别          年龄\n");
    printf("---------------------------------------------\n");
    for (i = 0; i < n; i++)
    {
        printf("%-14s%-14s%-14s%-14d\n", t[i].no, t[i].name, t[i].sex, t[i].age);
        if ((i + 1) % 10 == 0 /*&&n%10>0*/)
        {
            printf("---------------------------------------------\n");
            printf("每页显示10位学生的信息,按回车向后翻页...\n");
            getchar();
            system("clear");
            printf("\n*******************学生清单*******************\n");
            printf("学号          姓名          性别          年龄\n");
            printf("---------------------------------------------\n");
        }
    }
    printf("---------------------------------------------\n");
}
void search_name(students t[], int n)
{
    char s[20];
    int i;
    system("clear");
    if (n == 0)
    {
        printf("内存中无学生信息!\n请先录入学生信息或加载学生信息到内存中\n");
        return;
    }
    printf("请输入查找的学生的名字:\n");
    scanf("%s", s);
    getchar();
    i = find_name(t, n, s);
    if (i > n - 1)
        printf("没有姓名为%s的学生!\n", s);
    else
        print(t[i]);
}
void search_no(students t[], int n)
{
    system("clear");
    if (n == 0)
    {
        printf("内存中无学生信息!\n请先录入学生信息或加载学生信息到内存中\n");
        return;
    }
    int no;
    printf("请输入查找信息学生的学号:\n");
    scanf("%d", &no);
    getchar();
    if (no >= 0 && no < n)
    {
        print(t[no]);
        printf("\r\n");
    }
    else
        printf("学号为%d的学生不存在!\n", no);
}
void change_no(students t[], int n)
{
    if (n == 0)
    {
        printf("内存中无学生信息!\n请先录入学生信息或加载学生信息到内存中\n");
        return;
    }
    system("clear");
    char no[20];
    int i;
    printf("请输入要修改的学生信息的学号:\n");
    scanf("%s", no);
    i = find_no(t, n, no);
    if (i == n)
        printf("没有找到学号为%s的学生!\n", no);
    else
    {
        printf("学号为%s的学生信息修改前为:\n", no);
        print(t[i]);
        printf("\n\n");
        printf("请输入修改后的信息:\n");
        printf("学号          姓名          性别          年龄\n");
        printf("---------------------------------------------\n");
        scanf("%s", t[i].no);
        scanf("%s", t[i].name);
        scanf("%s", t[i].sex);
        scanf("%d", &t[i].age);
        getchar();
    }
    system("clear");
    printf("正在修改学号为%s的学生信息...\n", no);
    sleep(1);
    system("clear");
    printf("*****修改成功*****\n");
    printf("修改后的信息为:\n");
    print(t[i]);
}
int del(students t[], int n)
{
    char s[20];
    int ch = 0;
    int i;
    system("clear");
    if (n == 0)
    {
        printf("内存中无学生信息!\n请先录入学生信息或加载学生信息到内存\n");
        return n;
    }
    printf("请输入要删除的学生姓名:\n");
    scanf("%s", s);
    getchar();
    i = find_name(t, n, s);
    if (i == n)
        printf("没有找到名字为%s的学生!\n", s);
    else
    {
        printf("正在删除...\n");
        for (; i < n; i++)
        {
            strcpy(t[i].name, t[i + 1].name);
            strcpy(t[i].no, t[i + 1].no);
            strcpy(t[i].sex, t[i + 1].sex);
            t[i].age = t[i + 1].age;
        }
        n--;
        printf("删除成功!\n");
    }
    return n;
}
int add(students t[], int n)
{
    system("clear");
    if (n == 0)
    {
        printf("内存中无学生信息!\n请先录入学生信息或加载学生信息到内存中\n");
        return n;
    }
    students temp;
    int i, j;
    char s[20];
    printf("请输入要插入的学生信息:\n");
    printf("学号          姓名          性别          年龄\n");
    printf("--------------------------------------------\n");
    scanf("%s%s%s%d", temp.no, temp.name, temp.sex, &temp.age);
    getchar();
    printf("--------------------------------------------\n");
    if (n > 0)
    {
        printf("请输入插入位置的姓名,将新信息插入在该学生前面:\n");
        scanf("%s", s);
        getchar();
        i = find_name(t, n, s);
    }
    else
        i = 0;
    for (j = n - 1; j >= i; j--)
    {
        strcpy(t[i + 1].no, t[i].no);
        strcpy(t[i + 1].name, t[i].name);
        strcpy(t[i + 1].sex, t[i].sex);
        t[i + 1].age = t[i].age;
    }
    strcpy(t[i].no, temp.no);
    strcpy(t[i].name, temp.name);
    strcpy(t[i].sex, temp.sex);
    t[i].age = temp.age;
    n++;
    printf("信息插入成功!\n");
    return n;
}
void save(students t[], int n)
{
    system("clear");
    int i;
    FILE *fp;
    if ((fp = fopen("record.txt", "wb")) == NULL)
    {
        printf("无法打开学生信息文件!\n");
        exit(1);
    }
    printf("\n正在保存...\n");
    fprintf(fp, "%d", n);
    fprintf(fp, "\r\n");
    for (i = 0; i < n; i++)
    {
        fprintf(fp, "%-14s%-14s%-14s%-14d", t[i].no, t[i].name, t[i].sex, t[i].age);
        fprintf(fp, "\r\n");
    }
    fclose(fp);
    sleep(1);
    system("clear");
    printf("*****保存成功*****\n");
}
int load(students t[])
{
    int i, n;
    FILE *fp;
    if ((fp = fopen("record.txt", "rb")) = NULL)
    {
        printf("无法打开学生信息文件!\n");
        exit(1);
    }
    fscanf(fp, "%d", &n);
    for (i = 0; i < n; i++)
        fscanf(fp, "%14s%14s%14s%14d", t[i].no, t[i].name, t[i].sex, &t[i].age);
    fclose(fp);
    printf("成功加载学生信息到内存中!\n");
    return n;
}
//显示指定的一组数据
void print(students temp)
{
    printf("\n*******************学生清单*******************\n");
    printf("学号          姓名          性别          年龄\n");
    printf("---------------------------------------------\n");
    printf("%-14s%-14s%-14s%-14d", temp.no, temp.name, temp.sex, temp.age);
    // printf("---------------------------------------------\n");
}
int find_name(students t[], int n, char *s)
{
    int i;
    for (i = 0; i < n; i++)
        if (strcmp(s, t[i].name) == 0)
            return i;
    return i;
}
int find_no(students t[], int n, char *s)
{
    int i;
    for (i = 0; i < n; i++)
        if (strcmp(s, t[i].no) == 0)
            return i;
    return i;
}
//主函数
int main()
{
    students stu[M]; //定义结构体数组
    int length = 0; //保存信息条数
    for (;;)
    {
        system("clear");
        switch (ment_select())
        {
        case 0:
            length = enter(stu);
            break;
        case 1:
            list(stu, length);
            break;
        case 2:
            search_name(stu, length);
            break;
        case 3:
            search_no(stu, length);
            break;
        case 4:
            length = del(stu, length);
            break;
        case 5:
            change_no(stu, length);
            break;
        case 6:
            length = add(stu, length);
            break;
        case 7:
            save(stu, length);
            break;
        case 8:
            length = load(stu);
            break;
        case 9:
            exit(0);
            break;
        }
        return_ment();
    }
    return 0;
}
代码中有任何问题欢迎大家指正,以便及时修改哦!

学生信息管理系统(c语言)的更多相关文章

  1. C语言练习-学生信息管理系统

    题目要求: 学生信息管理系统struct studentInfo{ int id; char name[128]; int age; char sex; int c_score; int cpp_sc ...

  2. 【转载】C语言综合实验1—学生信息管理系统

    http://www.cnblogs.com/Anker/archive/2013/05/06/3063436.html 实验题目:学生信息管理系统 实验要求:用户可以选择1-7可以分别进行学生信息的 ...

  3. C语言小练习之学生信息管理系统

    C语言小练习之学生信息管理系统 main.c文件   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...

  4. 大一C语言结课设计之《学生信息管理系统》

    第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h ...

  5. 学生信息管理系统(C语言)

    #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct student ...

  6. 基于数组或链表的学生信息管理系统(小学期C语言程序实训)

    1.基于数组的学生信息管理系统 实验内容: 编写并调试程序,实现学校各专业班级学生信息的管理.定义学生信息的结构体类型,包括:学号.姓名.专业.班级.3门成绩. 实验要求: (1) main函数:以菜 ...

  7. 【Python3.6+Django2.0+Xadmin2.0系列教程之二】学生信息管理系统(入门篇)

    上一篇我们已经创建好了一个Xadmin的基础项目,现在我们将在此基础上构建一个同样很基础的学生信息管理系统. 一.创建模型 模型是表示我们的数据库表或集合类,并且其中所述类的每个属性是表或集合的字段, ...

  8. 基于Spring MVC + Spring + MyBatis的【学生信息管理系统】

    资源下载:https://download.csdn.net/download/weixin_44893902/45603211 练习点设计: 模糊查询.删除.新增 一.语言和环境 实现语言:JAVA ...

  9. 基于数据库MySQL的简易学生信息管理系统

    通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...

随机推荐

  1. Asp.net core 2.0.1 Razor 的使用学习笔记(四)

    ASP.net core 2.0.1 中 asp.net identity 2.0.1 的基本使用(三)—用户注册 一.修改用户注册 1.打开Pages文件夹>Account>Regist ...

  2. SSE图像算法优化系列十五:YUV/XYZ和RGB空间相互转化的极速实现(此后老板不用再担心算法转到其他空间通道的耗时了)。

    在颜色空间系列1: RGB和CIEXYZ颜色空间的转换及相关优化和颜色空间系列3: RGB和YUV颜色空间的转换及优化算法两篇文章中我们给出了两种不同的颜色空间的相互转换之间的快速算法的实现代码,但是 ...

  3. web开发概述

    1 Web概述 Web,在英语中表示网页的额意思,它用于表示Internet主机上供外界访问的资源. 2 Web的分类 按照服务器上的资源分类: 静态资源:指的是web页面中供人们浏览的数据是始终不变 ...

  4. Ubuntu16.04下的2009q3交叉编译工具链的搭建

    环境搭建:    1.下载arm-2009q3.tar.bz2源码.  百度云链接  密码: rbui    2.将arm-2009q3.tar.bz2拷贝到/usr/local/arm(没有该目录就 ...

  5. squid安装及运行指南

    squid安装及运行指南 0. What is squid Squid是一个高性能的代理缓存服务器,Squid支持FTP.gopher.HTTPS和HTTP协议.和一般的代理缓存软件不同,Squid用 ...

  6. @RequestMapping注解

    Spring MVC中用于参数绑定的注解有很多,都在org.springframework.web.bind.annotation包中,根据它们处理的request的不同内容部分可以分为四类(主要讲解 ...

  7. html集锦

    注意:此内容为复习所总结,非专业,不全,理解记录理解会有偏差. 一.HTML解释: 指的是超文本标记语言 (Hyper Text Markup Language),不是一种编程语言,而是一种标记语言  ...

  8. template.compile()方法

    template.compile(source, options) source:必传,渲染模板的内容. options:可选,通常不传.(其实是我还没研究明白) return:一个渲染函数. 示例如 ...

  9. spring boot + vue + element-ui全栈开发入门——前端列表页面开发

     一.页面 1.布局 假设,我们要开发一个会员列表的页面. 首先,添加vue页面文件“src\pages\Member.vue” 参照文档http://element.eleme.io/#/zh-CN ...

  10. VUE 2.0 引入高德地图,自行封装组件

    1. 高德地图官网 申请帐号, 申请相应(JavaScript API)的 Key 2. 在项目中引入, 这里和其他的引入不同的是 直接在 index.html, 不是在 main.js 引入, 博主 ...