学生成绩记录簿设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1课程设计(大作业)报告课程名称:程序设计基础设计题目:学生成绩记录簿设计院系:信息技术学院班级:xx设计者:xx学号:xx指导教师:xx设计时间:xx信息技术学院2昆明学院课程设计(大作业)任务书姓名:xx院(系):信息技术学院专业:计算机科学与技术学号:xx任务起止日期:xx课程设计题目:学生成绩记录簿课程设计要求:编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。具体功能:1.系统以菜单方式工作;2.创建学生成绩信息并以磁盘文件保存;3.读取磁盘文件并显示输出所有学生的成绩;4.查询学生成绩;(1)按学号查询成绩;(2)学号姓名查询成绩;5.修改指定姓名或学号的学生的成绩并可存盘;6.显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。工作计划及安排:星期一:老师的大概讲解及主函数、目录函数的编写和调试;星期二:创建学生信息、输出学生信息和修改学生信息的函数编写及调试;星期三:学生信息查询、学生成绩分段和学生成绩排序的函数编写及调试;星期四:整个函数的最终调试,课程设计(大作业)报告的书写;星期五:答辩。指导教师签字年月日3课程设计(大作业)成绩学号:xx姓名:xx指导教师:xx课程设计题目:学生成绩记录簿设计总结:通过这次的课程设计,增加了我对学习C语言学习的兴趣,虽然还不是真正的明白所有的C语言的子函数和里面的一些逻辑顺序,但我从C语言这门课程开始,已经发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的运行也有一个大体的了解。这次课程设计经过老师的讲解,自己的查找,在网上的搜索,实现题目上的要求,先做出一些简单的函数和程序,一步步的在做出其它的内容,不过在实际操作过程中犯得一些错误也还是会得到一些意外的收获。在具体的操作中,对这学期的C语言的理论知识得到巩固,在设计的过程中也发现自己的不足之处,在以后的学习和上机的操作中会更加注意,同时体会到C语言的简洁和灵活。在上机操作中我们的任何不懂的问题都会暴露出来,对于我们来说是是件好事,在课程设计的过程中特别是对数组和循环有了深刻的理解。通过实际的操作,学会C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题,解决问题的能力。指导教师评语:成绩:填表时间:指导教师签名:4目录一.问题的定义...........................5二、需求分析.............................5三、总体设计.............................5四、详细设计.............................6五、调试与测试..........................30六、结语................................315一.问题的定义编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。要求:1.数据存储采用文件形式。2.标准的C语言输入输出3.功能完善,适当注释4.模块化设计、结构化编程二、需求分析系统能实现以下主要功能:1.系统以菜单方式工作2.创建学生成绩信息并以磁盘文件保存;3.读取磁盘文件并显示输出所有学生的成绩;4.查询学生成绩(1)按学号查询成绩(2)学号姓名查询成绩4.添加成绩记录;5.修改指定姓名或学号的学生的成绩并可存盘;6.显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。三、总体设计根据系统的要求,系统总体设计如图1所示。图1系统总体结构学生成绩记录簿创建学生信息学生成绩排名退出成绩记录簿学生成绩分段查询学生信息修改学生成绩输出学生信息按学号修改按姓名修改按学号查询按姓名查询60分以下80—89分90分以上60—79分6四、详细设计该部分主要包括:数据结构设计、函数设计(包括函数原型、算法思想、流程描述)、代码设计及程序运行结果显示。(一)学生成绩数据结构设计#includestdio.h#includestdlib.h#includestring.hinti,j,k,y;FILE*fp;Structstu{intno;charname[30];floatcscore;longa;};structstus[100];(二)函数设计1.主函数main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。2.其他各功能函数(1)学生成绩信息录入函数voidinput()算法思想:①依次录入结构体数组中所包含的各个成员;②直到输入的结构体成员中信息全部为0,数据输入结束;③返回实际录入的学生成绩信息数。(2)将学生成绩信息输出为voidoutput()算法思想:①定义结构体变量的指针变量;②输出所输入的全部信息,若不能输出信息给出提示信息;③将文件中的信息依次读出,最后结构体的指针为NULL。(3)从文件中修改学生成绩信息voidmodify()算法思想:①定义指向结构体变量的指针和指向文件的指针;②修改方式分为两种(学号和姓名),选择是给出相应的信息;③将修改后的信息保存,并提示。3.流程描述(1)菜单函数7intfun(){intn;system(cls);printf(\n\n\t\t\t\t成绩记录薄);printf(\n\n\t\t\t);for(i=0;i33;i++)printf(*);printf(\n);printf(\t\t\t************菜单*************\n);printf(\t\t\t*1、创建学生的信息!\t*\n);printf(\t\t\t*2、输出所有学生的信息!\t*\n);printf(\t\t\t*3、修改成绩!\t*\n);printf(\t\t\t*4、查询!\t*\n);printf(\t\t\t*5、显示成绩分段的学生信息!\t*\n);printf(\t\t\t*6、学生成绩排名!\t*\n);printf(\t\t\t*7、退出成绩记录薄!\t*\n);printf(\t\t\t);for(i=0;i33;i++)printf(*);printf(\n\n);printf(\n\t\t\t请输入选项:);scanf(%d,&n);returnn;}(2)学生成绩信息录入函数voidinput(){system(cls);i=0;fp=fopen(out.dat,w);printf(请以0作为输入学生学号信息的结束!\n);do{printf(输入学生的学号:);scanf(%d,&s[i].no);printf(输入学生的姓名:);scanf(%s,s[i].name);printf(输入学生的C语言成绩:);scanf(%f,&s[i].cscore);printf(输入添加成绩的时间:);scanf(%ld,&s[i].a);if(s[i].no!=0)8fprintf(fp,%d%-4s%.1f%ld\n,s[i].no,s[i].name,s[i].cscore,s[i].a);}while(s[i].no!=0);fclose(fp);}voidoutput()//学生全部信息输出{if((fp=fopen(out.dat,r))==NULL){printf(Cannotopenthefile!\n);}printf(\t\t\t全部的学生信息:\n);k=0;while(fscanf(fp,%d%s%f%ld,&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!=EOF){printf(\t\t\t%d\t%s\t%.1f\t%ld\n,s[k].no,s[k].name,s[k].cscore,s[k].a);k++;}fclose(fp);}(3)学生信息输出函数voidoutput(){if((fp=fopen(out.dat,r))==NULL){printf(Cannotopenthefile!\n);}printf(\t\t\t全部的学生信息:\n);k=0;while(fscanf(fp,%d%s%f%ld,&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!=EOF){printf(\t\t\t%d\t%s\t%.1f\t%ld\n,s[k].no,s[k].name,s[k].cscore,s[k].a);k++;}fclose(fp);}(4)修改学生信息函数voidmodify(){charst[30];intx,num;9floatnu;longh;k=0;system(cls);if((fp=fopen(out.dat,r))==NULL){printf(Cannotopenthefile!\n);return;}while(fscanf(fp,%d%s%f%ld,&s[k].no,s[k].name,&s[k].cscore,&s[k].a)!=EOF){k++;}fclose(fp);printf(输入1表示用学号修改,输入2表示用姓名修改!请选择:\n);scanf(%d,&x);if(x==1){printf(请输入修改成绩人的学号:);scanf(%d,&num);for(i=0;ik;i++)if(num==s[i].no){printf(请输入修改的成绩:\n);scanf(%f,&nu);s[i].cscore=nu;printf(请输入修改的时间:\n);scanf(%ld,&h);s[i].a=h;fp=fopen(out.dat,w);for(i=0;ik;i++)fprintf(fp,%d%s%.1f%ld\n,s[i].no,s[i].name,s[i].cscore,s[i].a);fclose(fp);printf(修改成功\n);return;}printf(没有找到该生的信息!\n);return;}if(x==2){printf(请输入修改成绩人的姓名:);scanf(%s,st);for(i=0;ik;i++)10if(strcmp(s[i].name,st)==0){printf(请输入修改的成绩:\n);scanf(%f,&nu);s[i].cscore=nu;printf(请输入修改成绩的时间:\n);scanf(%ld,&h);s[i].a=h;fp=fopen(out.dat,w);for(i=0;ik;i++)fprintf(fp,%d%s%.1f%ld\n,s[i].no,s[i].name,s[i].cscore,s[i].a);fclose(fp);printf(修改成功\n);return;}printf(没有找到该生的信息!\n);return;}(5)代码设计和执行结果1.头文件Structstu{intno;/*学号*/charname[30];/*姓名*/floatcscore;/*成绩*/longa;/*时间*/};structstus[100];/******以下是函数原型*******/voidinput()/*输入记录*/voidoutput()/*输出记录*/voidmodify()/*修改记录*/2.源程序代码与运行结果11#includestdio.h#includestdlib.h#includestring.hinti,j,k,y;FILE*fp;structstu//结构体函数的定义{intno;charname[30];floatcscore;longa;};structstus[100];intfun()//目录函数{intn;system(cls);printf(\n\n\t\t\t\t成绩记录薄);printf(\n\n\t\t\t);12for(i=0;i33;i++)printf(*);printf(\n);printf(\t\t\t************菜单*************\n);prin

1 / 31
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功