学生信息管理系统(c/c++)

2017-11-30 13:18:00来源:cnblogs.com作者:Griouges人点击

分享

转载请注明: http://www.cnblogs.com/Griouges/

注意:
程序中使用了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 50typedef 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;}
代码中有任何问题欢迎大家指正,以便及时修改哦!

转载请注明: http://www.cnblogs.com/Griouges/

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台