A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 任子杰 中级黑马   /  2015-11-8 00:56  /  638 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. //编写一个学生管理系统程序,用来记录学生的信息(包括姓名、年龄、性别、学号、分数),提供增加、删除、查询学生信息的入口。
  2. #include <stdio.h>
  3. #include <string.h>
  4. #define stuMax 100
  5. void init();
  6. void addStu();
  7. void deleteStu();
  8. void listStu();
  9. int validateInput(int num,int min,int max);

  10. //定义结构体
  11. typedef  struct{

  12.     char name[10];
  13.     int age;
  14.     char sex[4];
  15.     int sid;
  16.     double score;
  17.      
  18. }student;

  19. //定义学生数组
  20. student stu[stuMax];
  21. //定义学生人数
  22. int stuCount=0;
  23. //记录操作编号
  24. int fno;



  25. int main(int argc, const char * argv[]) {
  26.    
  27.     init();
  28.     while (1)
  29.     {
  30.         printf("\n");
  31.         printf("系统初始化中......\n");
  32.         printf("*******************\n");
  33.         printf("   1.增加学生信息\n");
  34.         printf("   2.删除学生信息\n");
  35.         printf("   3.查询学生信息\n");
  36.         printf("   4.退出系统按任意键\n");
  37.         printf("*******************\n");
  38.         printf("\n");
  39.         // 提示用户输入
  40.         printf("请输入你要操作的功能编号\n");
  41.         
  42.    
  43.         scanf("%d",&fno);
  44.         validateInput(fno, 1, 4);
  45.         switch (fno)
  46.         {
  47.             case 1:
  48.                 addStu();
  49.                 break;
  50.             case 2:
  51.                 deleteStu();
  52.                 break;
  53.             case 3:
  54.                 listStu();
  55.                 break;
  56.             case 4:
  57.                 printf("系统正在退出");
  58.                 printf("系统已退出");
  59.                 return 0;
  60.                 break;
  61.             default:
  62.                 return 0;
  63.                 break;
  64.         }
  65.     }
  66. }



  67. //增加
  68. void addStu(){
  69.     printf("你选择的是增加学生\n");
  70.    
  71.     //获取用户输入,赋值给结构体中的相应属性
  72.     printf("请输入要增加的学生姓名\n");
  73.     scanf("%s",stu[stuCount].name);
  74.    
  75.     printf("请输入要增加的学生年龄:\n");
  76.     scanf("%d",&stu[stuCount].age);
  77.    
  78.     printf("请输入要增加的学生性别:\n");
  79.     scanf("%s",stu[stuCount].sex);
  80.    
  81.     printf("请输入要增加的学生学号:\n");
  82.     scanf("%d",&stu[stuCount].sid);
  83.    
  84.     printf("请输入要增加的学生分数:\n");
  85.     scanf("%lf",&stu[stuCount].score);
  86.    
  87.     stuCount++;

  88. }
  89. //删除
  90. void deleteStu(){

  91.     printf("你选择的是删除学生\n");
  92.     int no;
  93.     printf("请选择删除学生的编号\n");
  94.     scanf("%d",&no);
  95.     int result=validateInput(no, 1, stuCount);
  96.     if (result!=0)
  97.     {

  98.         //如果删除的元素是最后一个
  99.         if(no==stuCount)
  100.         {
  101.             stuCount--;
  102.             printf("删除成功\n");
  103.         }
  104.         else
  105.         {
  106.             for (int i=no; no<stuCount; i++)
  107.             {
  108.                 stu[no-1]=stu[no];
  109.                
  110.             }
  111.             stuCount--;
  112.             printf("删除成功....\n");
  113.         }
  114.         
  115.     }
  116. }
  117. //查看
  118. void listStu(){

  119.     printf("你选择的是查看学生\n");
  120.     if (stuCount==0)
  121.     {
  122.         printf("没有学生信息存在!\n");
  123.         
  124.     }else
  125.     {
  126.         printf("编号\t 姓名\t 年龄\t 性别\t 学号\t 分数\t \n");
  127.         for(int i=0;i<stuCount;i++) {
  128.             
  129.             printf("%d\t %s\t %d\t %s\t %d\t %f\t \n",i+1,stu[i].name,stu[i].age,stu[i].sex,stu[i].sid,stu[i].score);
  130.         }
  131.     }

  132. }

  133. //判断输入是否非法
  134. int validateInput(int num,int min,int max){

  135.     if (num<min||num>max) {
  136.         printf("非法的输入");
  137.         return 0;
  138.     }
  139.     return 1;
  140. }
复制代码


1 个回复

倒序浏览
就这一点代码吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马