收藏 分销(赏)

成绩管理系统V6.0.doc

上传人:w****g 文档编号:4131123 上传时间:2024-07-31 格式:DOC 页数:14 大小:98.04KB
下载 相关 举报
成绩管理系统V6.0.doc_第1页
第1页 / 共14页
成绩管理系统V6.0.doc_第2页
第2页 / 共14页
成绩管理系统V6.0.doc_第3页
第3页 / 共14页
成绩管理系统V6.0.doc_第4页
第4页 / 共14页
成绩管理系统V6.0.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、Harbin Institute of TechnologyC语言实验大作业课程名称: C语言程序设计 报告类型: 程序设计报告 实验题目: 学生成绩管理系统v6。0 实验类型: (综合设计型/创新研究型) 所在院系: 航天学院电子信息类 学生类别: 本科生 指导教师: 郭萍 学生姓名: 王福海 班级和学号: 电子信息五班 1162100527 实验时间: 2017。5.20 成绩评定:哈尔滨工业大学1 实验目的将教材中所包含的内容系统化考察,考察一维、二维数组,函数的调用,排序、查找、统计分析等常用算法,指针,动态数组以及结构体的应用。2 实验内容和要求1。实验内容学生成绩管理系统V6。0。

2、某班有最多不超过30人(具体人数由键盘输入)参加最多不超过六门的考试(具体门数由键盘输入),定义结构体类型,用结构体数组作函数参数,编程实现学生成绩的管理。2。实验要求采用自顶向下、逐步求精的模块化设计思想设计小型数据库管理系统,对学生成绩进行管理.要求按系统的需求分析、系统设计(总体设计、各个模块的设计)、系统实现(各个模块的实现)、系统测试等过程组织报告内容,说明采用了什么数据结构和算法,遇到哪些问题,这些问题是如何解决的,本设计的亮点和难点在哪里,实验结果如何,有哪些收获和学习体会.3.系统功能需求分析本系统主要实现下面的功能:(1)录入每个学生的学号和考试成绩;(2)计算每门课程的总分

3、和平均分;(3)计算每个学生的总分和平均分;(4) 按成绩由高到低排出名次表;(5) 按成绩由低到高排出名次表;(6) 按学号由小到大排出成绩表;(7) 按姓名字典的排序排出成绩表;(8) 按学号查询学生排名及其考试成绩;(9) 按姓名查询学生排名及其考试成绩;(10) 按优秀(90100)、良好(8089)、中等(7079)、及格(6069)、不及格(059)5个类别,统计每个类别的人数以及所占的百分比;(11) 输出每个学生学号姓名各科成绩及每门考试的总分平均分;(12) 将每个学生信息写入文件;(13) 从文件中读取每个学生信息并显示;4。实验环境采用win10操作系统,使用软件Dev-

4、c+。3 系统设计1. 系统功能模块划分学生成绩管理系统按姓名排序按学号排序录入成绩录入文件读取文件标准分析排名排序计算总分平均分按学生成绩排名每个学生每门课五个档次2。 主要算法排序:进行学生成绩的排序从而出现排名表查找:通过多种方式如学号,姓名查找特定学生的成绩3.数据结构输出每个学生学号姓名各科成绩及每门考试的总分平均分按成绩由高到低排出名次表计算每个学生的总分和平均分计算每门课程的总分和平均分录入每个学生的学号和考试成绩按成绩由低到高排出名次表按姓名字典的排序排出成绩表按学号查询学生排名及其考试成绩按姓名查询学生排名及其考试成绩5个类别,统计每个类别的人数以及所占的百分比按学号由小到大

5、排出成绩表将每个学生信息写入文件从文件中读取每个学生信息并显示退出 用户输入指令4.各模块(函数)的功能和接口设计:序号函数名函数功能函数参数1Menu显示菜单获得输入的选项无2Readscore录入学生信息STU stu, m,n3Aversumofeverystudent计算每个学生总成绩平均值STU stu, m,n4Aversumofeverycourse计算每门课程总成绩平均成绩STU stu, m,n5Sortbyscore按成绩排序STU stu, m,n6Ascending升序floata,b7Descending降序floata,b8Assortbynum按学号排序STU s

6、tu, m,n9Sortbyname按姓名排序STU stu, m,n10Searchbynum按学号查询学生信息STU stu, m,n11Searchbyname按姓名查询学生信息STU stu, m,n12StatisticAnlysis(STU stu, int n, int m)分析学生成绩五个分数段所占百分比STU stu, m,n13PrintScore打印输出学生成绩STU stu, m,n14WritetoFile写入程序 D盘student.txtSTU stu, m,n15ReadfromFile读取文件STU stu, m,n4 系统实现1.系统的总流程图:显示菜单-输

7、入用户的选择-根据用户的输入选择不同的操作 case 1: Readscore(stu,n,m); break; case 2: Aversumofeverystudent(stu ,n,m); break; case 3: Aversumofeverycourse(stu ,n,m); break; case 4: Sortbyscore(stu ,n,m,Descending); printf(”n成绩降序排序n”); Printscore( stu ,n, m); break; case 5: Sortbyscore(stu ,n,m,Ascending); printf(n成绩升序排序

8、n); Printscore( stu ,n, m); break; case 6: Assortbynum( stu , n, m); printf(”n学号升序排序n”); Printscore( stu ,n, m); break; case 7: Sortbyname( stu , n, m); printf(n姓名升序排序n”); Printscore( stu ,n, m); break; case 8: Searchbynum( stu , n, m); break; case 9: Searchbyname( stu , n, m); break; case 10: Stati

9、sticAnlysis( stu , n, m); break; case 11: Printscore( stu ,n, m); break; case 12: Writetofile(stu,n,m); break; case 13: Readfromfile(stu,&n,&m); break; case 0: printf(”End of program!n”); exit(0);2. 程序的全部源代码:1 include 0 ? stui。sum/m:1;134 printf(”student d: sum=.0f,aver=。0fn”,i+1,stui.sum,stui。aver)

10、;135 136 137 /AverSumofEveryCourse:计算每门课程的总分和平均分/138 void AverSumofEveryCourse(STU stu,int n,int m)139 140 int i,j;141 float sum6,aver6;142 for(j=0;jm;j+)143 144 sumj = 0;145 for(i=0;in;i+)146 147 sumj=sumj+stui。scorej;148 149 averj = n0?sumj/n : -1;150 printf(course %d:sum=。0f,aver=.0fn”,j+1,sumj,a

11、verj);151 152 153 /* SortbyScore:将每个学生按总成绩排序/154 void SortbyScore(STU stu,int n, int m,int(*compare)(float a,float b)155 156 int i,j,k,t;157 for(i=0;in-1;i+)158 159 k=i;160 for(j=i+1;jn;j+)161 162 if((compare)(stuj。sum,stuk.sum) 163 k=j;164 165 if(k!=i)166 167 for(t=0;tm;t+)168 169 SwapFloat(stuk。sc

12、oret,&stui.scoret);170 171 SwapFloat(&stuk。sum,stui.sum);172 SwapFloat(stuk。aver,stui.aver);173 SwapLong(stuk。num,&stui。num);174 SwapChar(stuk。name,stui。name);175 176 177 178 / Ascending:按照升序/179 int Ascending(float a,float b)180 181 return ab;182 183 / Descending:按照降序 /184 int Descending(float a,fl

13、oat b)185 186 return ab;187 188 /* SwapFloat:交换单精度浮点型数据 /189 void SwapFloat(float x,float *y)190 191 float temp;192 temp = x;193 *x = y;194 y = temp;195 196 /* SwapLong交换长整形数据 /197 void SwapLong(long x,long *y)198 199 long temp;200 temp = x;201 *x = *y;202 *y = temp;203 204 / SwapChar交换字符型数据 */205 v

14、oid SwapChar(char x,char y)206 207 char temp10;208 strcpy(temp,x);209 strcpy(x,y);210 strcpy(y,temp);211 212 / AsSortbyNum:将学生按照学号顺序排列 */213 void AsSortbyNum(STU stu,int n,int m)214 215 int i,j,k,t;216 for(i=0;in1;i+)217 218 k=i;219 for(j=i+1;jn;j+)220 221 if(stuj。numstuk.num) 222 k=j;223 224 if(k!=

15、i)225 226 for(t=0;tm;t+)227 228 SwapFloat(&stuk。sum,stui.sum);229 230 SwapFloat(&stuk.sum,stui。sum);231 SwapFloat(stuk。aver,stui。aver);232 SwapLong(&stuk.num,&stui。num);233 SwapChar(stuk.name,stui.name);234 235 236 237 / SortbyName:将学生按照字典顺序排列 /238 void SortbyName(STU stu,int n,int m)239 240 int i,j

16、,t;241 for(i=0;in1;i+)242 243 for(j=i+1;jn;j+)244 245 if(strcmp(stuj。name,stui.name)0)246 247 for(t=0;tm;t+)248 249 SwapFloat(stui.scoret,stuj。scoret);250 251 SwapFloat(stui。sum,&stuj.sum);252 SwapFloat(stui。aver,stuj。aver);253 SwapLong(stui。num,stuj。num);254 SwapChar(stui.name,stuj.name);255 256 25

17、7 258 259 /* SearchbyNum:按学号查找并打印学生成绩 /260 void SearchbyNum(STU stu,int n,int m)261 262 long number;263 int i,j;264 printf(Input the number you want to search);265 scanf(”ld”,number);266 for(i=0;in;i+)267 268 if(stui.num = number)269 270 printf(ldtst,stui。num,stui。name);271 for(j=0;jm;j+)272 273 pri

18、ntf(。0ft”,stui.scorej);274 275 printf(”%。0ft.0fn”,stui。sum,stui.aver);276 return;277 278 279 printf(”nNot found! n);280 281 /* SearchbyName:按名字查找并打印学生成绩 */282 void SearchbyName(STU stu,int n,int m)283 284 char x10;285 int i,j;286 printf(”Input the name you want to search”);287 scanf(s,x);288 for(i=0

19、;in;i+)289 290 if(strcmp(stui。name,x)=0)291 292 printf(%ldtst”,stui.num,stui。name);293 for(j=0;jm;j+)294 295 printf(”.0ft,stui。scorej);296 297 printf(。0ft%.0fn”,stui.sum,stui.aver);298 return;299 300 301 printf(”nNot found!n”);302 303 / StatisticAnalysis:统计各分段的学生及其所占百分比 /304 void StatisticAnalysis(S

20、TU stu,int n,int m)305 306 int i,j,total,t6;307 for(j=0;jm;j+)308 309 printf(”For course d:n”,j+1);310 memset(t,0,sizeof(t)); /将数组t的元素全部初始化为0/ 311 for(i=0;in;i+)312 313 if(stui.scorej=0stui。scorej60) t0+;314 else if(stui。scorej70) t1+;315 else if(stui。scorej80) t2+;316 else if(stui.scorej90) t3+;317

21、 else if(stui.scorej100) t4+;318 else if(stui.scorej=100) t5+;319 320 for(total=0,i=0;i=5;i+)321 322 total=total+ti;323 324 for(i=0;i=5;i+)325 326 if(i=0) 327 printf(”60tdt%.2fn”,ti,(float)ti/n100);328 else if(i=5) 329 printf(%dtdt。2fn, (i+5)10,ti,(float)ti/n*100);330 else 331 printf(d-dt%dt%。2fn”,(

22、i+5)10,(i+5)*10+9,ti,(float)ti/n100);332 333 334 335 / PrintScore:打印输出学生成绩 */336 void PrintScore(STU stu,int n,int m)337 338 int i,j;339 for(i=0;in;i+)340 341 printf(ldt%st”,stui。num,stui。name);342 for(j=0;jm;j+)343 344 printf(。0ft,stui。scorej);345 346 printf(。0ft%。0fn”,stui。sum,stui。aver);347 348 349 / WritetoFile:写入程序 student.txt */350 void WritetoFile(STU stu,int n,int m)351 352 FILE fp;353 int i,j;354 if((fp=fopen(”student.txt”,w”) = NULL)355 356

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服