C语言网

 找回密码
 加入社区!

QQ登录

只需一步,快速开始

查看: 4269|回复: 36

发一个学生成绩管理的代码 [复制链接]

Rank: 1

主题
0
帖子
8
C币
40 枚
在线时间
2 小时
发表于 2009-8-30 10:18:56 |显示全部楼层
分享到:


  1.   #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. int INDEX[32];
  5. struct STUDENT
  6. {
  7. int id,age,chinese,math,english;
  8. char name[21];
  9. }students[32];
  10. void page_title(char *menu_item)
  11. {
  12. clrscr();
  13. printf(">>> 学 生 管 理 系 统 <<<\n\n- %s -\n\n",menu_item);
  14. }
  15. void return_confirm(void)
  16. {
  17. printf("\n按任意键返回……\n");
  18. getch();
  19. }
  20. void student_new(void)
  21. {
  22. int n;
  23. page_title("录入学生基本信息");
  24. for(n=0;n<32;n++)
  25.   if(students[n].id==0) break;
  26. printf("学号:");
  27. scanf("%d",&students[n].id);
  28. printf("姓名:");
  29. scanf("%s",&students[n].name);
  30. printf("年龄:");
  31. scanf("%d",&students[n].age);
  32. return_confirm();
  33. }
  34. int search_id(void)
  35. {
  36. int n,i;
  37. printf("请输入学生学号:");
  38. scanf("%d",&i);
  39. for(n=0;n<32;n++)
  40.   {
  41.   if(students[n].id==i&&students[n].id!=0)
  42.    {
  43.    printf("学号:%d\n",students[n].id);
  44.    printf("姓名:%s\n",students[n].name);
  45.    printf("年龄:%d\n",students[n].age);
  46.    return n;
  47.    }
  48.   }
  49. printf("\n输入错误或学号不存在.\n");
  50. return -1;
  51. }
  52. void student_del(void)
  53. {
  54. int n;
  55. page_title("注销学生基本信息");
  56. if((n=search_id())!=-1) students[n].id=0;
  57. printf("\n!该学生已注销.\n");
  58. return_confirm();
  59. }
  60. void student_edit(void)
  61. {
  62. int n;
  63. page_title("编辑学生基本信息");
  64. if((n=search_id())!=-1)
  65.   {
  66.   printf("\n请重新输入新信息:\n学号:");
  67.   scanf("%d",&students[n].id);
  68.   printf("姓名:");
  69.   scanf("%s",&students[n].name);
  70.   printf("年龄:");
  71.   scanf("%d",&students[n].age);
  72.   }
  73. return_confirm();
  74. }
  75. void score_input(void)
  76. {
  77. int s,n,t;
  78. page_title("录入成绩");
  79. printf("\n请用数字键选择科目\n1-语文 2-数学 3-英语\n");
  80. scanf("%d",&s);
  81. for(n=0;n<32;n++)
  82.   {
  83.   if(students[n].id!=0)
  84.    {
  85.    printf("学号:%d 姓名:%s 成绩:",students[n].id,students[n].name);
  86.    scanf("%d",&t);
  87.    switch(s)
  88.     {
  89.     case 1 : students[n].chinese=t;break;
  90.     case 2 : students[n].math=t;break;
  91.     case 3 : students[n].english=t;break;
  92.     }   
  93.    }  
  94.   }
  95. return_confirm();
  96. }
  97. void score_edit(void)
  98. {
  99. int n;
  100. page_title("修改成绩");
  101. if((n=search_id())!=-1)
  102.   {
  103.   printf("语文:%d 数学:%d 英语:%d\n",students[n].chinese,students[n].math,students[n].english);
  104.   printf("\n请重新输入成绩:\n语文:");
  105.   scanf("%d",&students[n].chinese);
  106.   printf("数学:");
  107.   scanf("%s",&students[n].math);
  108.   printf("英语:");
  109.   scanf("%d",&students[n].english);
  110.   }
  111. return_confirm();
  112. }
  113. void sort_it(char nn)
  114. {
  115. int n,m,p,x,t[32];
  116. for(n=0;n<32;n++)
  117.   {
  118.   switch(nn)
  119.    {
  120.    case '1' : t[n]=students[n].id;break;
  121.    case '2' : t[n]=students[n].chinese;break;
  122.    case '3' : t[n]=students[n].math;break;
  123.    case '4' : t[n]=students[n].english;break;
  124.    case '5' : t[n]=students[n].chinese+students[n].math+students[n].english;break;
  125.    }
  126.   }
  127. for(n=0;n<32;n++)
  128.   {
  129.   x=0;
  130.   p=-1;
  131.   for(m=0;m<32;m++)
  132.    {
  133.    if(t[m]>x)
  134.     {
  135.     x=t[m];
  136.     p=m;
  137.     }
  138.    }
  139.   t[p]=-1;
  140.   INDEX[n]=p;
  141.   }
  142. }
  143. void browser(void)
  144. {
  145. int n,x;
  146. char k;
  147. sort_it('1');
  148. while(1)
  149. {
  150. page_title("浏览");
  151. printf("按数字键选择排序方式或按 0 返回\n");
  152. printf("学号-1\t姓名\t\t年龄\t语文-2\t数学-3\t英语-4\t总分-5\n");
  153. for(n=0;n<32;n++)
  154.   {
  155.   if(INDEX[n]!=-1)
  156.    {
  157.    x=INDEX[n];
  158.    printf("%d\t%s\t",students[x].id,students[x].name);
  159.    printf("%d\t%d\t",students[x].age,students[x].chinese);
  160.    printf("%d\t%d\t",students[x].math,students[x].english);
  161.    printf("%d\n",students[x].chinese+students[x].math+students[x].english);
  162.    }
  163.   }
  164. k=getch();
  165. if(k<'6'&&k>'0') sort_it(k);
  166. else if(k=='0') break;
  167. else continue;
  168. }
  169. }

  170. void main(void)
  171. {
  172. menu: page_title("操作选单");
  173. printf("请用数字键选择操作\n\n");
  174. printf("1 录入学生基本信息\n2 修改学生基本信息\n");
  175. printf("3 注销学生基本信息\n\n4 录入成绩\n5 修改成绩\n\n");
  176. printf("6 浏览...\n \n0 退出\n");
  177. switch(getch())
  178.   {
  179.   case '1' : student_new();break;
  180.   case '2' : student_edit();break;
  181.   case '3' : student_del();break;
  182.   case '4' : score_input();break;
  183.   case '5' : score_edit();break;
  184.   case '6' : browser();break;
  185.   case '0' : exit(0);
  186.   }
  187. goto menu;
  188. }
复制代码


多多指教啊~
hello world~

Rank: 1

主题
0
帖子
8
C币
40 枚
在线时间
2 小时
发表于 2009-8-30 10:38:19 |显示全部楼层
顶上去哈~~~
hello world~

Rank: 1

主题
0
帖子
2
C币
2 枚
在线时间
0 小时
发表于 2009-9-7 00:09:12 |显示全部楼层
程序写的蛮好的

Rank: 1

主题
0
帖子
7
C币
12 枚
在线时间
1 小时
发表于 2009-11-12 22:57:46 |显示全部楼层
汗!你还顶上去?纠结!你是在 Tc 环境下编写的吗??至少里面有vc无法解析的外部符号_clrscr!!但是 还是值得肯定!

Rank: 1

主题
0
帖子
3
C币
3 枚
在线时间
0 小时
发表于 2010-1-22 23:26:51 |显示全部楼层
程序写的蛮好的

Rank: 1

主题
0
帖子
4
C币
4 枚
在线时间
0 小时
发表于 2010-1-30 18:35:40 |显示全部楼层
看不懂!!!

Rank: 1

主题
0
帖子
17
C币
17 枚
在线时间
1 小时
发表于 2010-2-25 21:14:35 |显示全部楼层
写的很好啊!!但是有点遗憾,就是你用的数组,总感觉结合链表会更好!!!!

Rank: 1

主题
0
帖子
2
C币
3 枚
在线时间
0 小时
发表于 2010-3-4 10:19:57 |显示全部楼层
初学者 看不懂 能不能搞简单一点啊

Rank: 1

主题
0
帖子
17
C币
7 枚
在线时间
3 小时
发表于 2010-6-3 11:35:41 |显示全部楼层
我靠 楼主犀利啊!

Rank: 1

主题
0
帖子
7
C币
7 枚
在线时间
0 小时
发表于 2010-6-5 18:11:28 |显示全部楼层
9# syaluqidong
谢谢楼主的无私奉献!
您需要登录后才可以回帖 登录 | 加入社区!

C语言 ( 粤ICP备11042647号-2 )

GMT+8, 2012-2-23 15:11

©2009-2011 cyuyan.com.cn

回顶部