广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    用C语言编程学生籍贯管理系统

    来源:网络收集  点击:  时间:2024-05-22
    【导读】:
    编制一个学生籍贯信息管理系统,用于记录每个学生的籍贯信息,包括学号、姓名、出生年月、籍贯、联系电话等。工具/原料moreVisual C++6.0电脑需求分析1/7分步阅读

    本学生籍贯信息管理系统采用Visual C++6.0作为开发环境,处理对象为学生,主要功能对学生籍贯信息进行录入、删除、查找、修改、显示输出等。本系统给用户提供了一个简易的操作界面,以便根据提示输入操作项,调用相应函数来完成系统提供的各项管理功能。

    2/7

    人机操控平台:用户通过选择不同选项来操作系统,包括退出系统,导入学生信息,删除学生信息,查询学生信息,修改学生信息,游览学生信息以及作者信息。

    3/7

    导入学生信息:用户根据提示输入学生的学号、姓名、性别、出生日期、手机号码、籍贯等信息。本系统一次只录入一个联系人信息,当需要录入多个学生信息时,可采用多次添加方式。

    4/7

    删除学生信息:根据系统提示,用户输入要删除的学生信息的学号,系统根据用户的输入进行查找,若没有查找到相关记录,则提示“此联系人不存在”;否则,系统将直接删除该联系人的全部信息。

    5/7

    查询学生信息:本系统提供三种查找学生信息的方式,即按学号查找、按姓名查找和按籍贯查找。用户根据系统提示选择相应的查找方式,若选择按学号查找,则需要输入相应学生的学号以完成信息查找;若选择按姓名查找,则需要输入相应学生的姓名以完成信息查找;若选择按籍贯查找,则需要输入想要查找的机关。系统中若存在待查找的联系人,则输出该联系人的信息;否则提示“此联系人不存在”。

    6/7

    修改学生信息:根据系统提示,用户输入待修改学生信息的学号,若没有查到相关记录,则提示“此学生不存在”;否则提示用户逐一输入修改后的姓名、性别、出生日期、手机号码、籍贯等信息。

    7/7

    游览学生信息:若系统中存在学生记录,则逐一输出所有学生信息;否则输出“该系统中无学生信息”。

    源程序1/1

    //文件包含

    #includestdio.h //标准输入输出函数库

    #includestdlib.h //标准函数库

    #includestring.h //字符串函数库

    #includeconio.h //控制台输入输出函数库

    //学生信息长度宏定义

    #define MAX_ID 12 //学号最大长度

    #define MAX_NAME 11 //姓名最大长度

    #define MAX_SEX 3 //性别最大长度

    #define MAX_BIRTH 11 //出生年月日最大长度

    #define MAX_ADDR 101 //籍贯最大长度

    #define MAX_TEL 12 //手机号码最大长度

    //系统菜单选项宏定义

    #define EXIT 0 //退出系统

    #define INPUT 1 //导入学生信息

    #define DELETE 2 //删除学生信息

    #define SEARCH 3 //查询学生信息

    #define UPDATE 4 //修改学生信息

    #define OUTPUT 5 //游览学生信息

    #define ABOUT 6 //关于作者

    //学生籍贯信息查找方式宏定义

    #define SEARCH_ID 1 //按学号查找

    #define SEARCH_NAME 2 //按姓名查找

    #define SEARCH_ADDR 3 //按籍贯查找

    //学生籍贯信息结构体

    typedef struct _StuInfo

    {

    char id; //学号

    char name; //姓名

    char sex; //性别

    char birth; //出生年月

    char addr; //籍贯

    char tel; //手机号码

    }StuInfo;

    //学生籍贯信息单链表结构体

    typedef struct _StuNode //链表结点

    {

    StuInfo stu;

    struct _StuNode *next;

    }StuNode;

    typedef StuNode* StuList; //链表

    //全局变量定义,用于保存所有联系人信息的单链表

    StuList student=NULL; //初始化链表为空

    //人机界面操作函数列表

    void ShowMenu(); //人机界面函数

    void AddStu(); //导入学生信息

    void DeleteStu(); //删除学生信息

    void SearchStu(); //查询学生信息

    void SearchStuID(); //按学号查找

    void SearchStuName(); //按姓名查找

    void SearchStuAddr(); //按籍贯查找

    void UpdateStu(); //修改学生信息

    void OutputStu(); //游览学生信息

    void Exit(); //退出系统

    void About(); //作者信息

    //辅助函数列表

    void ReadFile(); //从文件读出学生信息

    void WriteFile(); //将学生信息写入文件

    //查找学生在系统是否存在,存在返回1,不存在返回0

    int FindStu(char* id);

    void ShowMenu()

    {

    int typeID=0;

    ReadFile(); //启动程序前从文件student.txt读出通讯录中联系人信息

    while(1)

    {

    system(cls); //清屏

    printf(******************************\n);

    printf(* 学生籍贯信息管理系统 *\n);

    printf(******************************\n);

    printf(** 0 - 退出系统 **\n);

    printf(** 1 - 导入学生信息 **\n);

    printf(** 2 - 删除学生信息 **\n);

    printf(** 3 - 查询学生信息 **\n);

    printf(** 4 - 修改学生信息 **\n);

    printf(** 5 - 游览学生信息 **\n);

    printf(** 6 - 关于作者 **\n);

    printf(******************************\n);

    printf(-请选择操作:);

    scanf(%d,typeID);

    if(typeID == EXIT)

    {

    WriteFile(); //程序退出前将学生籍贯信息导入文件

    Exit(); //退出系统

    break;

    }

    switch(typeID)

    {

    case INPUT:

    system(cls);

    AddStu(); //导入学生信息

    system(pause); //程序暂停

    break;

    case DELETE:

    system(cls);

    DeleteStu(); //删除学生信息

    system(pause);

    break;

    case SEARCH:

    SearchStu(); //查询学生信息

    break;

    case UPDATE:

    system(cls);

    UpdateStu(); //修改学生信息

    system(pause);

    break;

    case OUTPUT:

    system(cls);

    OutputStu(); //游览学生信息

    system(pause);

    break;

    case ABOUT:

    system(cls);

    About(); //作者信息

    system(pause);

    break;

    default:

    printf(输入有误!\n);

    system(pause);

    break;

    }

    }

    }

    void AddStu()

    {

    //分配存储空间

    StuNode *p = (StuNode*)malloc(sizeof(StuNode));

    printf(****************************************\n);

    printf(** 请输入学生籍贯信息 **\n);

    printf(@请输入学号(最大长度为%d个字符)\n-,MAX_ID-1);

    scanf(%s,p-stu.id);

    while(FindStu(p-stu.id)==1)

    {

    printf(@此学生信息已经存在,请重新输入\n-);

    scanf(%s,p-stu.id);

    }

    printf(@请输入姓名(最大长度为%d个字符)\n-,MAX_NAME-1);

    scanf(%s,p-stu.name);

    printf(@请输入性别(男或女)\n-);

    scanf(%s,p-stu.sex);

    printf(@请输入出生日期(格式为1984-01-10)\n-);

    scanf(%s,p-stu.birth);

    printf(@请输入籍贯(最大长度为%d个字符)\n-,MAX_ADDR-1);

    scanf(%s,p-stu.addr);

    printf(@请输入手机号码\n-);

    scanf(%s,p-stu.tel);

    p-next = student;

    student = p;

    printf(** 学生籍贯信息添加成功! **\n);

    printf(**************************************\n);

    }

    void DeleteStu()

    {

    StuNode *pre=student; //前一结点

    StuNode *p=student; //当前结点

    char id;

    printf(*******************************\n);

    printf(**请输入要删除学生的学号:\n-);

    scanf(%s,id);

    while(p) //查找待删除结点

    {

    if(strcmp(p-stu.id,id)==0)

    break;

    pre=p;

    p=p-next;

    }

    if(!p)

    printf(** 此学生不存在! **\n);

    else

    {

    if(p==student) student=p-next;

    else pre-next=p-next;

    free(p);

    printf(** 删除成功! **\n);

    }

    printf(****************************************\n);

    }

    void SearchStu()

    {

    int type,flag=1;

    while(flag)

    {

    system(cls);

    printf(****************************\n);

    printf(* 1 - 按学号查找 *\n);

    printf(* 2 - 按姓名查找 *\n);

    printf(* 3 - 按籍贯查找 *\n);

    printf(-选择查找方式:);

    printf(****************************\n);

    scanf(%d,type);

    switch(type)

    {

    case SEARCH_ID:

    system(cls);

    SearchStuID(); //按学号查找

    flag=0;

    break;

    case SEARCH_NAME:

    system(cls);

    SearchStuName(); //按姓名查找

    flag=0;

    break;

    case SEARCH_ADDR:

    system(cls);

    SearchStuAddr(); //按籍贯查找

    flag=0;

    break;

    default:

    printf(输入有误!\n);

    break;

    }

    system(pause);

    }

    }

    void SearchStuID()

    {

    StuNode *p=student;

    char id;

    printf(****************************\n);

    printf(**请输入要查找学生的学号 :\n-);

    scanf(%s,id);

    while(p) //检查待查找学生是否存在

    {

    if(strcmp(p-stu.id,id)==0)

    break;

    p=p-next;

    }

    if(!p)

    {

    printf(** 此学生不存在! **\n);

    printf(*******************************\n);

    }

    else //待查找学生存在则输出信息

    {

    printf(****************************\n);

    printf(* 学生籍贯信息 *\n);

    printf(****************************\n);

    printf($学 号 :%s\n,p-stu.id);

    printf($姓 名 :%s\n,p-stu.name);

    printf($性 别 :%s\n,p-stu.sex);

    printf($出生日期:%s\n,p-stu.birth);

    printf($籍 贯 :%s\n,p-stu.addr);

    printf($手机号码:%s\n,p-stu.tel);

    printf(****************************\n);

    }

    }

    void SearchStuName()

    {

    StuNode *p=student;

    char name;

    printf(****************************\n);

    printf(**请输入要查找学生的姓名 :\n-);

    scanf(%s,name);

    while(p) //检查待查找学生是否存在

    {

    if(strcmp(p-stu.name,name)==0)

    break;

    p=p-next;

    }

    if(!p)

    {

    printf(** 此学生不存在! **\n);

    printf(*******************************\n);

    }

    else //待查找学生存在则输出信息

    {

    printf(****************************\n);

    printf(* 学生籍贯信息 *\n);

    printf(****************************\n);

    printf($学 号 :%s\n,p-stu.id);

    printf($姓 名 :%s\n,p-stu.name);

    printf($性 别 :%s\n,p-stu.sex);

    printf($出生日期:%s\n,p-stu.birth);

    printf($籍 贯 :%s\n,p-stu.addr);

    printf($手机号码:%s\n,p-stu.tel);

    printf(****************************\n);

    }

    }

    void SearchStuAddr()

    {

    StuNode *p=student;

    char addr;

    printf(****************************\n);

    printf(**请输入要查找学生的籍贯 :\n-);

    scanf(%s,addr);

    while(p) //检查待查找学生是否存在

    {

    if(strcmp(p-stu.addr,addr)==0)

    break;

    p=p-next;

    }

    if(!p)

    {

    printf(** 此学生不存在! **\n);

    printf(*******************************\n);

    }

    else //待查找学生存在则输出信息

    {

    printf(****************************\n);

    printf(* 学生籍贯信息 *\n);

    printf(****************************\n);

    printf($学 号 :%s\n,p-stu.id);

    printf($姓 名 :%s\n,p-stu.name);

    printf($性 别 :%s\n,p-stu.sex);

    printf($出生日期:%s\n,p-stu.birth);

    printf($籍 贯 :%s\n,p-stu.addr);

    printf($手机号码:%s\n,p-stu.tel);

    printf(****************************\n);

    }

    }

    void UpdateStu()

    {

    StuNode *p=student;

    char id;

    printf(****************************\n);

    printf(**请输入要更新学生的学号 :\n-);

    scanf(%s,id);

    while(p) //查找待修改结点

    {

    if(strcmp(p-stu.id,id)==0)

    break;

    p=p-next;

    }

    if(!p)

    {

    printf(** 此学生不存在! **\n);

    printf(*******************************\n);

    }

    else

    {

    printf(-$原姓名:%s\n,p-stu.name);

    printf(-新姓名:);

    scanf(%s,p-stu.name);

    printf(-$原性别:%s\n,p-stu.sex);

    printf(-新性别:);

    scanf(%s,p-stu.sex);

    printf(-$原出生日期:%s\n,p-stu.birth);

    printf(-新出生日期:);

    scanf(%s,p-stu.birth);

    printf(-$原联系地址:%s\n,p-stu.addr);

    printf(-新联系地址:);

    scanf(%s,p-stu.addr);

    printf(-$原手机号码:%s\n,p-stu.tel);

    printf(-新手机号码:);

    scanf(%s,p-stu.tel);

    printf(** 修改成功! **\n);

    printf(*******************************\n);

    }

    }

    void OutputStu()

    {

    int i=0;

    StuNode *p=student;

    if(!p) //链表为空

    {

    printf(****************************\n);

    printf(** 系统中无学生人记录 **\n);

    printf(****************************\n);

    return;

    }

    while(p)

    {

    printf(**********************************\n);

    printf(* 学生%d信息 *\n,++i);

    printf(**********************************\n);

    printf(****************************\n);

    printf(* 学生籍贯信息 *\n);

    printf(****************************\n);

    printf($学 号 :%s\n,p-stu.id);

    printf($姓 名 :%s\n,p-stu.name);

    printf($性 别 :%s\n,p-stu.sex);

    printf($出生日期:%s\n,p-stu.birth);

    printf($籍 贯 :%s\n,p-stu.addr);

    printf($手机号码:%s\n,p-stu.tel);

    printf(****************************\n);

    p=p-next;

    }

    }

    void Exit()

    {

    StuNode *p=student;

    while(p) //释放通讯录每一个结点内存空间

    {

    student=p-next;

    free(p);

    p=student;

    }

    }

    void ReadFile()

    {

    StuNode *p;

    char id;

    FILE *pf=fopen(student.txt,r); //以读方式打开文件

    if(!pf) return; //打开文件失败

    //从文件中逐一读出每一联系人信息

    while(fscanf(pf,%s,id)!=EOF)

    {

    p=(StuNode*)malloc(sizeof(StuNode));

    strcpy(p-stu.id,id);

    fscanf(pf,%s,p-stu.name);

    fscanf(pf,%s,p-stu.sex);

    fscanf(pf,%s,p-stu.birth);

    fscanf(pf,%s,p-stu.addr);

    fscanf(pf,%s,p-stu.tel);

    //每一联系人加入到链表中

    p-next=student;

    student=p;

    p=NULL;

    }

    fclose(pf); //关闭文件

    }

    void WriteFile()

    {

    StuNode *p=student;

    FILE *pf=fopen(student.txt,w); //以写方式打开文件

    if(!pf) return; //打开文件失败

    while(p) //将链表中的每一结点写入文件

    {

    fprintf(pf,%s,p-stu.id);

    fscanf(pf,%s,p-stu.name);

    fscanf(pf,%s,p-stu.sex);

    fscanf(pf,%s,p-stu.birth);

    fscanf(pf,%s,p-stu.addr);

    fscanf(pf,%s,p-stu.tel);

    p=p-next;

    }

    fclose(pf); //关闭文件

    }

    int FindStu(char* id)

    {

    StuNode *p=student;

    while(p) //在链表中以学号方式查找某一联系人是否存在

    {

    if(strcmp(id,p-stu.id)==0)

    return 1; //存在则返回1

    p=p-next;

    }

    return 0; //不存在则返回0

    }

    void About()

    {

    printf(********************************\n);

    printf(* *\n);

    printf(*作者:依筱糯流 *\n);

    printf(* *\n);

    printf(********************************\n);

    system(pause);

    }

    void main()

    {

    ShowMenu();

    }

    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_829476.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-05 03:04:18  耗时:0.026
    0.0258s