C语言程序设计--学生信息管理系统

2023-11-10

题目:学生信息管理系统

1  系统设计

1.1设计要求

1.1.1设计任务

创建一个学生信息管理系统,让它来运行和管理学生信息,进行对学生学号、姓名、性别、年龄、出生年月日、住址、电话、E—maill等信息的管理。

1.1.2性能指标要求

程序具有对学生信息的入录、查询、修改、删除、保存、添加等功能,对于输入错误的信息能得到提示并能进行选择。

1.2设计思路及设计框图

1.2.2设计思路

采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。

本学生信息管理系统采用结构体数组链表来实现,它由如下六大功能模块组成:

添加学生信息函数:对学生的信息进行添加输入。

全部学生信息函数:储存已输入全部学生的信息,进行管理。

修改学生信息函数:对已输入学生的信息进行修改。

删除学生信息函数:对已经不需要了的信息进行删除处理。

查看学生信息函数:可以按不同方式查看学生的信息。

主函数:对其他子函数进行调用处理。

1.2.2总体设计框图

2  各个模块的设计

主函数main()

main()函数主要实现了对整个程序的运行控制,以及相关功能模块的调用。菜单放在主函数中方便简洁,用户进入学生信息管理系统时,需要显示主菜单,提示用户进行选择,完成相应任务。

main(  )   //主函数

{

  int a;

  printf("\n\t  〓〓〓〓〓〓〓〓  ☆  学生信息管理系统     ☆   〓〓〓〓〓〓〓〓\n\n");

  printf("\n\t  〓〓〓〓〓〓〓〓  ☆  未经允许,不得使用   ☆   〓〓〓〓〓〓〓〓\n");

  printf("\t\n");

T: printf("\n\t 〓〓〓〓〓〓〓〓 ★  ☆ 1.添加学生信息  ☆  ★ 〓〓〓〓〓〓〓〓 \n");

   printf("\n\t 〓〓〓〓〓〓〓〓 ★  ☆ 2.全部学生信息  ☆  ★ 〓〓〓〓〓〓〓〓 \n");

   printf("\n\t 〓〓〓〓〓〓〓〓 ★  ☆ 3.修改学生信息  ☆  ★ 〓〓〓〓〓〓〓〓 \n");

   printf("\n\t 〓〓〓〓〓〓〓〓 ★  ☆ 4.删除学生信息  ☆  ★ 〓〓〓〓〓〓〓〓 \n");

   printf("\n\t 〓〓〓〓〓〓〓〓 ★  ☆ 5.查看学生信息  ☆  ★ 〓〓〓〓〓〓〓〓 \n");

   printf("\n\t 〓〓〓〓〓〓〓〓 ★  ☆ 6.退出本系统    ☆  ★ 〓〓〓〓〓〓〓〓 \n");

       scanf("%d",&a);

  switch(a)

  {

  case 1:tianjia( );goto T;

  case 2:quanbu( );goto T;

  case 3:xiugai( );goto T;

  case 4:shanchu( );goto T;

  case 5:chakan( );goto T;

  case 6:break;

  default:printf("\t你的输入不正确,请再次输入: \n");

  }

  printf("\t谢谢您对本系统的支持和使用\n\n");

  printf("\t2019年9月10日\n\n\n\n\n\n\n");

}

添加学生信息函数

此函数实现学生信息的添加,将信息存入结构体数组中。

tianjia( )  //添加信息函数

{

   int num,num2,i,x;

   G:printf("\t请输入学号: ");

   H:scanf("%d",&num);

   V:if(num>100)

     {

       printf("\n这个学号太大了!\n请输入1--100的学号:");

       scanf("%d",&num);

       if(num>100)goto V;

       printf("\n");

     }

     num2=looknum(num);

     if(num==num2)  //判断这个学号是否存在

     {

       printf("\n这个学号已经存在,请重新输入另一个学号。");

       goto H;

     }

     i=num-1;

     stu[i].num=num;

     printf("\t请输入姓名: ");

       scanf("%s",stu[i].name);

     printf("\t请输入性别: ");

       scanf("%s",stu[i].sex);

     printf("\t请输入年龄: ");

       scanf("%d",&stu[i].age);

     printf("\t请输入出生日期: ");

       scanf("%s",stu[i].bro);

     printf("\t请输入住址: ");

       scanf("%s",stu[i].add);

     printf("\t请输入手机号: ");

       scanf("%s",stu[i].phone);

     printf("\t请输入E-maill: ");

       scanf("%s",stu[i].em);

     printf("\n\t<*添加信息成功*>\n\n ");

     printf("\t1.继续添加\n");

     printf("\t2.退出添加\n");

     scanf("%d",&x);

     switch(x)

     {

     case 1:goto G;

     default:break;

     }

}

全部学生信息模块

此模块对输入学生的信息进来存储管理。

quanbu()  //输出全部信息函数

 {

   int i;

   printf("\t\t全部学生信息如下\n\n");

   printf("学号\t姓名\t性别\t年龄\t出生日期\t住址\t手机号\t\tE-maill\n");

   for(i=0;i<=100;i++)

       if(stu[i].num!=0)

           printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",

           stu[i].num,stu[i].name,stu[i].sex,stu[i].age,stu[i].bro,stu[i].add,stu[i].phone,stu[i].em);

 }

修改学生信息模块

此模块对已输入的学生信息可以进行修改。

xiugai( )   //修改信息函数

 {

   int x,y,num,num2;

K:printf("\t请输入要修改的学号: ");

  scanf("%d",&num);

  num2=looknum(num);

  if(num==num2)  //判断这个学号是否存在

  {

    printf("\n\t这个学号的信息如下\n\n");

    printf("学号\t 姓名\t 性别\t 年龄\t 出生日期\t 住址\t 手机号\t\tE-mail\n");

   

            printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",stu[num-1].num,

            stu[num-1].name,stu[num-1].sex,stu[num-1].age,

            stu[num-1].bro,stu[num-1].add,stu[num-1].phone,stu[num-1].em);

            printf("\n\t1.确认修改");

            printf("\n\t2.取消修改\n");

            scanf("%d",&x);

            if(x==1)

            {

               stu[num-1].num;

               printf("\t请输入姓名: ");

                  scanf("%s",stu[num-1].name);

               printf("\t请输入性别: ");

                  scanf("%s",stu[num-1].sex);

               printf("\t请输入年龄: ");

                  scanf("%d",stu[num-1].age);

               printf("\t请输入出生日期: ");

                  scanf("%s",stu[num-1].bro);

               printf("\t请输入住址: ");

                  scanf("%s",stu[num-1].add);

               printf("\t请输入手机号: ");

                  scanf("%s",stu[num-1].phone);

               printf("\t请输入E-maill: ");

                  scanf("%s",stu[num-1].em);

                  printf("\n\t<*修改信息成功*>\n");

                  goto P;

            }

        else  goto P;

  }

   else

   {

     printf("\n\t没有这个学号,你可能记错了!\n");

P:  printf("\n\t1.继续修改\n");

    printf("\n\t2.退出修改\n");

    scanf("%d",&y);

    switch(y)

    {

    case 1:goto K;

    default:break;

    }

   }

 }

查询学生信息模块

此模块可以查询已存储的学生信息。

void chakan( )   //查看信息函数

{

  int x=1,y=2,z=2,i,num,num2;

  char name;

  printf("\t1.按照学号查询\n\t2.按照姓名查询\n");

  scanf("%d",&x);   //输入查看方式

  if(x==1)    //学号查找

  {

M:printf("\t请输入查看的学号: ");

  scanf("%d",&num);

  num2=looknum(num);

  if(num==num2)  //判断这个学号是否存在

  {

    printf("\t这个学号信息如下\n\n");

 printf("学号\t 姓名\t 性别\t 年龄\t 出生日期\t 住址\t 手机号\t\tE-mail\n");

   

            printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",stu[num-1].num,

            stu[num-1].name,stu[num-1].sex,stu[num-1].age,

            stu[num-1].bro,stu[num-1].add,stu[num-1].phone,stu[num-1].em);

   goto J;

  }

  else

  {

       printf("\n\t没有这个学号,你可能记错了!\n");

     J:printf("\n\t1.继续查看\n");

       printf("\n\t2.退出查看\n");

            scanf("%d",&y);

switch(y)

            {

            case 1:goto M;

            default:break;

  }

 }

}

if(x==2)   //姓名查询

{

U:printf("\t请输入查看的姓名: ");

  scanf("%s",&name);

  for(i=0;i<=100;i++)

  {

   if(strcmp(&stu[i].name,&name)==0)   //字符串比较

       if(stu[i].num!=0)   //判断这个学号是否存在

       {

         printf("\t这个姓名的信息如下\n\n");

         printf("学号\t姓名\t性别\t年龄\t出生日期\t住址\t手机号\t\tE-maill\n");

         printf("%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",

           stu[i].num,stu[i].name,stu[i].sex,stu[i].age,

           stu[i].bro,stu[i].add,stu[i].phone,stu[i].em);

         goto  Q;

       }

  }

  if(i==101)

  {

       printf("\n\t没有这个行吗,你可能记错了!\n");

     Q:printf("\n\t1.继续查看\n");

       printf("\n\t2.退出查看\n");

            scanf("%d",&z);

switch(z)

            {

            case 1:goto U;

            default:break;}

  }

}

}

3功能测试

3.1 测试仪器与设备

Visualc++6.0

3.2 性能指标测试

  1. 3.2.1在主菜单中选择1

当用户输入1并按回车键后,即可进入添加学生信息界面。若是第一次运行该程序,应能实现从键盘输入学生信息到数组中,

当输入一名学生的信息完成时会弹出以下界面,选择1继续添加,选择2退出添加

  1. 3.2.2在主菜单中选择2

当选择2时,界面会弹出全部学生的信息如下图

  1. 3.2.3在主菜单中选择3

当选着3时,界面会弹出要修改学生的学号进行查询修改的界面如下图

学号为1的学生信息

  1. 3.2.4在主菜单中选择4

选择4界面会弹出如下图

选择1可以删除该学生的信息,2取消删除学生的信息

  1. 3.2.5在主菜单中选择5

当选择5时会弹出以下界面,1按照学号查询,2按照姓名查询

当输入的学号错误时会出现以下界面

输入学号正确时会弹出以下界面

  1. 3.2.6在主菜单中选择6

当选择6时退出本系统,弹出的界面如下图

需要全部资料可在我的资源里下载,包括程序文档、源程序。

 需要完整的资料可在我的资源里下载,也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。            

纷传点击用微信打开即可,过程有点繁琐请见谅。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言程序设计--学生信息管理系统 的相关文章

随机推荐

  • KMP算法-时间复杂度分析

    KMP算法 假设m为模式串strM的长度 n为待匹配的字符串strN的长度 KMP的基本过程 求模式串strM的next数组 遍历比较待匹配的字符串strN 过程 遍历strN 遍历时出现strM j 的回跳 比较strN i strM j
  • 闲聊ROOT权限——ROOT权限的前世今生

    最近工作一直很忙 竟然慢慢地疏远了CSDN的博客 然而在工作中遇到问题 又会被多次的引导至CSDN 故笔者抽空也将自己学习的成果与大家分享在这里 希望能帮助到需要帮助的人 本文将从几个方面 由浅至深地讲述ROOT到底是什么东西 一 ROOT
  • python2.x脚本转换为python3.x脚本方法详细步骤与实践分享

    1 安装python3 x 2 设置python环境变更 将C Python36 Scripts C Python36 追加加到系统变更PATH中 注 C Python36为安装路径 若不一致请更换成你的安装路径 3 找到2to3 py脚本
  • java环境能加快matlab运行吗,花了一天,解决java调用matlab

    鉴于labview做不了web labview强项在于硬件仪器控制 可能也可以做web 还不会 虽然有web发布工具 但是基于远程前面板 最后效果都呈现在前面板上 涉及了跳转页面 matlab绘图等只在服务器端上显示的问题 因此 打算用ja
  • 支付通道简述

    1 苹果内购流程图 官方文档 简体中文文档 Apple Developer 苹果内购没有通知 需要前端调用后端接口 通知后端支付成功 订单号由前端提供 后端通过订单号处理业务逻辑 返回值示例 苹果服务器验证后的返回值文档地址 respons
  • js写一个简单的计算机,js实现一个简易计算器

    本文实例为大家分享了JS实现简易计算器的具体代码 供大家参考 具体内容如下14th test 这是一个标题 以下是一个简易计算器 第一个数 第二个数 var res 保存计算结果 function add var first documen
  • linux动态链接库的编译和使用

    文章目录 1 动态链接库的编译 2 可执行程序的编译 3 运行可执行程序 4 设置动态库查询目录 方法一 更改环境变量LD LIBRARY PATH 方法二 通过 Wl rpath编译链接选项指定 方法三 修改配置文件 etc ld so
  • 互联网企业使用云计算,有什么优势?

    现如今 上云已经成为企业发展过程中不可逆转的历史潮流趋势 如今 越来越多的企业开始采用云计算 因为它会给企业带来很多惊人的好处 云计算不仅可以降低企业成本 提高灵活性和弹性 还能优化资源的利用 从而提企业高竞争力 自动软件更新 许多公司及其
  • 2021.08.28-MMsegmentation0.16.0+Cuda10.1+Ubuntu16.04+Pytorch1.8环境安装

    个人在目标检测方向的学习比较深入 但在深度学习的图像处理中 语义分割也是一个很重要的方向 所以也想一探究竟 熟悉一下基本流程和工作原理 现打算在LINUX系统Ubuntu16 04上安装mmsegmentation框架 因为之前主要使用mm
  • 百度地图JavaScript API开发GIS服务

    百度地图JavaScript API是由JavaScript语言编写的应用程序接口 支持HTTP和HTTPS 免费对外开放 在使用前 需先申请密钥 ak 才可使用 主要分为两种类型的版本 JavaScript API GL 使用了WebGL
  • map erase 内存释放问题

    资料出处 http www cnblogs com goodness archive 2012 05 16 2503832 html 研究了下c 中map的内存占用情况 很多人说map中的erase以及clear不能释放内存 这几天实验了下
  • 多态介绍。

    Override 规范上 推荐加上 帮你校验是否是方法重写 方法重写在子类继承了父类的方法之后 如果发现在当前的需求下 父类的方法不够强大 所以在子类中就可以对此方法进行重写 特点 1 方法名相同 2 参数列表相同 3 返回值类型不能大于父
  • Python绘制时间序列数据的时序图、自相关图和偏自相关图

    时序图 自相关图和偏相关图是判断时间序列数据是否平稳的重要依据 本文涉及的扩展库numpy pandas statsmodels一般可以使用pip进行在线安装 如果安装失败 可以到http www lfd uci edu gohlke py
  • [Luogu] P1438 无聊的数列

    题目背景 无聊的 YYB 总喜欢搞出一些正常人无法搞出的东西 有一天 无聊的 YYB 想出了一道无聊的题 无聊的数列 K峰 这题不是傻X题吗 题目描述 维护一个数列 a i a i ai 支持两种操作 1 l r K D 给出一个长度等于
  • java 接口类与抽象类

    接口可以继承接口 抽象类可以实现 implements 接口 但不可以继承自接口 抽象类可以继承具体类 抽象类中可以有静态的 main 方法 抽象类里可以有抽象方法 抽象方法一定要在抽象类里 抽象类可以派生 抽象类的父类可以是非抽象类 某一
  • XSS之xss-labs-level5

    文章目录 0x01 XSS Labs 0x02 实验工具 0x03 实验环境 0x04 实验步骤 0x05 实验分析 0x06 参考链接 0x01 XSS Labs XSS 跨站脚本攻击 是指恶意攻击者往Web页面里插入恶意Script代码
  • 递归对比对象函数

    在JavaScript中 对象之间的比较通常通过引用进行 当你使用 运算符比较两个对象时 它会检查它们是否引用了同一个内存地址 而不是逐个比较对象的属性 上图可见 obj1和 是两个不同的对象 尽管它们具有相同的结构 都是空对象 因此 使用
  • vue项目使用vue-video-player实现视频直播功能

    文章目录 引言 一 基本使用 1 播放mp4 2 options常用属性 3 常用事件 二 使用videojs contrib hls播放m3u8 三 视频链接测试工具 potplayer 引言 随着互联网的快速发展 视频直播已经成为了越来
  • [C++]拷贝(复制)构造函数

    拷贝 复制 构造函数 拷贝构造函数是一种特殊的构造函数 其形参为本类的对象引用 形式如下 class 类名 public 类名 形参 构造函数 类名 类名 对象名 拷贝构造函数 拷贝构造函数实例 include
  • C语言程序设计--学生信息管理系统

    题目 学生信息管理系统 1 系统设计 1 1设计要求 1 1 1设计任务 创建一个学生信息管理系统 让它来运行和管理学生信息 进行对学生学号 姓名 性别 年龄 出生年月日 住址 电话 E maill等信息的管理 1 1 2性能指标要求 程序