帮初中同学做的简单的课程设计
Posted king丶貔貅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了帮初中同学做的简单的课程设计相关的知识,希望对你有一定的参考价值。
因为同学没学链表,结构体,只能简单并且麻烦的做了一个课程设计。内容为存储学生信息和考试成绩,对成绩单进行编辑,排序,删除,显示等功能。
代码如下:
1 #include <stdio.h> 2 #include <conio.h> 3 #include <string.h> 4 #define NUMSTU 5000 /*最大学生人数*/ 5 #define NUMSCORE 4 /*成绩个数*/ 6 #define NAMELEN 100 /*姓名的最大长度<10*/ 7 void main() 8 { 9 char menuItem,subItem; /*用户输入的菜单项*/ 10 int i,j,l; 11 unsigned long tempNo; //用于排序对调内存的中间变量 12 char tempName[NAMELEN]; 13 float sum,k; 14 15 /*主要数据结构*/ 16 unsigned long no[NUMSTU]={0}; /*学号*/ 17 char name[NUMSTU][NAMELEN]={""}; /*姓名*/ 18 float score[NUMSTU][NUMSCORE]={0}; /*数学、语文、英语、平均成绩*/ 19 int excellentNum[3]={0}; /*每科成绩为优秀(>=90)的人数*/ 20 char subject[NUMSCORE][NAMELEN]={"数学","语文","英语","平均"}; 21 int currentNumStu; /*当前表中的学生人数*/ 22 23 currentNumStu=0; 24 do 25 { 26 printf("|-------------------------------------------------------|\\n"); 27 printf("|\\t\\t\\t\\t\\t\\t\\t|\\n"); 28 printf("|\\t\\t 请输入选项编号(0 ~~ 7): \\t\\t|\\n"); 29 printf("|\\t\\t\\t\\t\\t\\t\\t|\\n"); 30 printf("|-------------------------------------------------------|\\n"); 31 printf("|\\t\\t\\t\\t\\t\\t\\t|\\n"); 32 printf("|\\t\\t 1——创建成绩单 \\t\\t|\\n"); 33 printf("|\\t\\t 2——添加学生 \\t\\t|\\n"); 34 printf("|\\t\\t 3——编辑学生 \\t\\t|\\n"); 35 printf("|\\t\\t 4——删除学生 \\t\\t|\\n"); 36 printf("|\\t\\t 5——统计成绩 \\t\\t|\\n"); 37 printf("|\\t\\t 6——排序成绩单 \\t\\t|\\n"); 38 printf("|\\t\\t 7——显示成绩 \\t\\t|\\n"); 39 printf("|\\t\\t 0——退出 \\t\\t|\\n"); 40 printf("|-------------------------------------------------------|\\n"); 41 42 printf("请输入选项编号(0 ~ 7): "); 43 /*清除键盘缓冲区*/ 44 fflush(stdin); 45 scanf("%c",&menuItem); 46 47 switch(menuItem) 48 { 49 case \'1\':/*创建成绩单*/ 50 if(currentNumStu>0) 51 { 52 printf("\\n不能重新创建学生成绩单\\n"); 53 } 54 else 55 { 56 printf("注意:输入的结束标志为学号为0!\\n"); 57 i=0; 58 printf("请输入学号:"); 59 scanf("%lu",&no[i]); 60 61 /*清除键盘缓冲区*/ 62 fflush(stdin); 63 while(no[i]!=0&¤tNumStu<NUMSTU) 64 { 65 printf("请输入姓名:"); 66 gets(name[i]); 67 for(j=0; j<NUMSCORE-1; j++) 68 { 69 printf("请输入%s成绩:",subject[j]); 70 scanf("%f",&score[i][j]); 71 } 72 73 /*计算平均成绩*/ 74 sum=0; 75 for(j=0; j<NUMSCORE-1; j++) 76 sum = sum+score[i][j]; 77 score[i][3] = sum/3; 78 79 currentNumStu++; 80 if(currentNumStu==NUMSTU) 81 { printf("成绩单已满!结束创建!!\\n"); 82 break; 83 } 84 i++; 85 86 printf("请输入学号:"); 87 scanf("%lu",&no[i]); 88 /*清楚键盘缓冲区*/ 89 fflush(stdin); 90 } 91 } 92 break; 93 case \'2\': 94 /*添加学生*/ 95 if(currentNumStu>=NUMSTU) 96 { 97 printf("成绩单已满!不可再加学生信息!!\\n"); 98 } 99 else 100 { 101 i=currentNumStu; 102 printf("请输入学号:"); 103 scanf("%lu",&no[i]); 104 fflush(stdin); 105 printf("请输入姓名:"); 106 gets(name[i]); 107 for(j=0; j<NUMSCORE-1; j++) 108 { 109 printf("请输入%s成绩:",subject[j]); 110 scanf("%f",&score[i][j]); 111 } 112 113 /*计算平均成绩*/ 114 sum=0; 115 for(j=0; j<NUMSCORE-1; j++) 116 sum = sum+score[i][j]; 117 score[i][3] =sum/3; 118 currentNumStu++; 119 printf("添加成功!"); 120 } 121 break; 122 case \'3\':/*编辑学生信息*/ 123 scanf("%lu",&tempNo); 124 for(i=0;i<currentNumStu;i++) 125 if(no[i]==tempNo) 126 break; 127 if(i!=currentNumStu) 128 { 129 for(j=0; j<NUMSCORE-1; j++) 130 { 131 printf("请输入%s成绩:",subject[j]); 132 scanf("%f",&score[i][j]); 133 } 134 135 /*计算平均成绩*/ 136 sum=0; 137 for(j=0; j<NUMSCORE-1; j++) 138 sum = sum+score[i][j]; 139 score[i][3] =sum/3; 140 printf("编辑成功!"); 141 } 142 else 143 printf("不存在该学生!\\n"); 144 break; 145 case \'4\':/*删除指定学号的学生信息*/ 146 printf("请输入学号:"); 147 scanf("%lu",&tempNo); 148 for(i=0;i<currentNumStu;i++) 149 if(no[i]==tempNo) 150 break; 151 if(i!=currentNumStu) 152 { 153 for(;i<currentNumStu-1;i++) 154 { 155 no[i]=no[i+1]; 156 strcpy(name[i],name[i+1]); 157 for(j=0; j<NUMSCORE; j++) 158 { 159 score[i][j]=score[i+1][j]; 160 } 161 } 162 currentNumStu--; 163 printf("删除成功!"); 164 } 165 else 166 printf("不存在该学生!\\n"); 167 break; 168 case \'5\':/*统计每科成绩>=90分以上的学生人数*/ 169 if(currentNumStu==0) 170 printf("目前无记录,请添加成绩单信息!\\n"); 171 else 172 { 173 for(i=0;i<currentNumStu;i++) 174 for(j=0; j<NUMSCORE-1; j++) 175 { 176 if(score[i][j]>=90) 177 excellentNum[j]++; 178 } 179 printf("%10s%10s%10s\\n","数学成绩","语文成绩","英语成绩"); 180 for(j=0; j<NUMSCORE-1; j++) 181 printf("%10d", excellentNum[j]); 182 printf("\\n"); 183 } 184 break; 185 case \'6\':/*按学号升序或降序排列实现*/ 186 printf("|---------------------------------------|\\n"); 187 printf("| |\\n"); 188 printf("| 排序菜单 |\\n"); 189 printf("| |\\n"); 190 printf("|---------------------------------------|\\n"); 191 printf("| |\\n"); 192 printf("| 1——按学号升序排列 |\\n"); 193 printf("| 2——按学号降序排列 |\\n"); 194 printf("|---------------------------------------|\\n"); 195 196 printf("请输入选项编号(1 ~2): "); 197 fflush(stdin); 198 scanf("%c",&subItem); 199 200 switch(subItem) 201 { 202 case \'1\': 203 if(currentNumStu<2) 204 { 205 printf("成绩表中少于2人则不做排序!\\n"); 206 } 207 else 208 { 209 /*按学号升序排列*/ 210 for(i=0;i<currentNumStu-1;i++) 211 for(j=i+1; j<currentNumStu; j++) 212 { 213 if(no[i]>no[j]) 214 { 215 tempNo=no[i]; 216 no[i]=no[j]; 217 no[j]=tempNo; 218 strcpy(tempName,name[i]); 219 strcpy(name[i],name[j]); 220 strcpy(name[j],tempName); 221 for(l=0; l<NUMSCORE; l++) 222 { 223 k=score[i][l]; 224 score[i][l]=score[j][l]; 225 score[j][l]=k; 226 } 227 } 228 } 229 printf("排序结束,请选择菜单项显示信息!\\n"); 230 } 231 break; 232 case \'2\': 233 if(currentNumStu<2) 234 { 235 printf("成绩表中少于2人则不做排序!\\n"); 236 } 237 else 238 { 239 /*按学号降序排列*/ 240 for(i=0;i<currentNumStu-1;i++) 241 for(j=i+1; j<currentNumStu; j++) 242 { 243 if(no[i]<no[j]) 244 { 245 tempNo=no[i]; 246 no[i]=no[j]; 247 no[j]=tempNo; 248 strcpy(tempName,name[i]); 249 strcpy(name[i],name[j]); 250 strcpy(name[j],tempName); 251 for(l=0; l<NUMSCORE; l++) 252 { 253 k=score[i][l]; 254 score[i][l]=score[j][l]; 255 score[j][l]=k; 256 } 257 } 258 } 259 printf("排序结束,请选择菜单项显示信息!\\n"); 260 } 261 break; 262 default:printf("非法输入\\n"); 263 } 264 break; 265 case \'7\':/*显示学生信息*/ 266 if(currentNumStu==0) 267 { 268 printf("无学生记录,请创建成绩单!\\n"); 269 } 270 else 271 { 272 printf("学生信息如下:\\n"); 273 printf("%15s%15s%10s%10s%10s%10s\\n","学号","姓名","数学成绩","语文成绩","英语成绩","平均成绩"); 274 for(i=0; i<currentNumStu; i++) 275 { 276 printf("%15lu",no[i]); 277 printf("%15s",name[i]); 278 for(j=0; j<NUMSCORE; j++) 279 printf("%10.1f", score[i][j]); 280 printf("\\n"); 281 } 282 } 283 break; 284 case \'0\':printf("您选择了“0——退出”\\n");break; 285 default:printf("非法输入\\n"); 286 } 287 288 }while(menuItem!=\'0\'); 289 }
以上是关于帮初中同学做的简单的课程设计的主要内容,如果未能解决你的问题,请参考以下文章