200504061284教师上课随机点名_第1页
200504061284教师上课随机点名_第2页
200504061284教师上课随机点名_第3页
200504061284教师上课随机点名_第4页
200504061284教师上课随机点名_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、头用标准文案 沈阳航空工业学院 课程设计 学 号 班 级 姓 名 指导教师 精彩文档 实用标准文案 年 月 日 精彩文档 沈阳航空工业学院 课程设计任务书 机械与汽车 学院 机械设计制造及其自动化 专业5406108 班 学号 200504061284 一、课程设计题目:教师上课随机点名 二、课程设计工作自2007年7月9日起至2007年7月14日止 三、课程设计内容: 运用所学的C语言知识,编制和调试程序,具有如下功能: 教师在每次上课时,需要对学生随机点名提问。每次只提问1名同 学,对于任何一位同学的提问次数不可超过3次。如果所有的同学都被 提问了 3次,则次数归 0,重新开始。学生信息应

2、事先保存到文件 myfile.dat 中。学生共有 4人,名单如下: 20013011001杜永宁20013011002王传华 20013011003殷泳20013011004杨柳青 所谓点名,是指计算器将某位同学的姓名和学号打印到屏幕上,则表 示该同学被点名1次。 四、课程设计要求: 程序质量: 贯彻结构化程序设计思想。 用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。 用户界面中的菜单至少应包括“开始点名”、“显示所有同学点名情 况”、“保存点名”、“退出” 4项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。 课程设计说明书: 课程结束后,上交课程设计说明书(打印稿和

3、电子稿),其内容如下: 封面需求分析(分析题目的要 课程设计任务书求) 目录 程序流程图(总体流程图和主要功能模块流程图) 核心技术的实现说明及相应程序段 个人总结 参考资料 源程序及适当的注释 指导教师: 学生签名: 目录 一、程序设计题目 1 二、需求分析1 三、程序流程图 2 四、核心技术的实现方法、程序段及注释 5 五、 个人总结 7 六、 参考文献 8 七、 完整源程序代码 8 一、程序设计题目 教师上课随机点名,具体要求如下: 1、开始点名 2、显示所有同学点名情况 3、保存点名 4、退出 注:每个学生数据至少应该包括学号、姓名、被点到 的次数,学生数据要保存在you.txt文件中

4、。 二、需求分析 经过对程序设计题目的严格分析大体得知,整个程序 的设计实现分为四个模块,其中每一个模块对应一个函 数,他们的功能分别是:教师开始点名函数(start(),显 示点名情况函数(display。),保存点名记录函数(save(), 退出点名系统函数(exit(O)。所有函数的实现严格按照题 目的要求。 1、教师开始点名函数实现的功能是随机抽取结构体数 组里存储的一个学生信息,并打印到计算机屏幕上,称之 为一次点名,连续调用就是多次随机点名。根据学生是否 在席的情况,教师选择“确认”使学生被点到的次数加一, 选择“取消”则表示此次点名无效。 2、显示点名情况函数实现的功能是将学生学

5、号和姓名 连并被点到的次数打印到用户屏幕上; 3、 保存点名记录函数实现的功能是将点名完毕后的存 储于计算机内存的学生数据传递到一个程序自动新建的 外存文件里面,这个文件的文件名及路径是D:you.txt ; 4、 退出点名系统函数该函数实现的功能是结束本次点 名,退出点名系统; 每一个学生记录都包含学号、姓名,以及被点到的次 数,学生信息的类型定义为结构体数组类型, 系统刚开始 调用的学生信息均来自于 D:myfile.dat , D:myfile.dat 中的被点到的次数均为零,并将点完名的 学生信息保存到D:you.txt 中。 三、程序流程 1、 程序总体框图 输出菜单项 图1.程序总

6、体框图 2、具体功能框图 (1)教师开始点名函数start(); 图2.教师开始点名函数start() (2)显示点名情况函数display。; 0=k 输出“ stuk.num ”,“ k+1=k 直到ki 输出“文件打开失败!” 名 把stu里存储的点 信息保存you.txt i+1=i 直到i申明即可调用。 四、核心技术的实现方法、程序段及注释 本程序主要由三个自定义函数、一个标准库函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来 实现要求的所有功能。,其中三个自定义的函数是程序中 较为核心的部分,下面分别进行说明。 1、教师开始点名函数start() 此函数

7、首先是从结构体数组 stu的四个成员里面随 机抽取一个成员并打印到计算机屏幕上。这里要用到 rand()这个标准库函数,rand() % n(n是整数)可产生0到 n-1之间的一个随机整数,如果谁被抽到了一次,在其点 名次数小于3次的情况下,被点到的次数就加一。待所有 的同学被点到三次后,则将被点到的次数都归零。具体的 程序段如下: void start() /*开始点名 */ int i,j; i=rand()%8; /*产生一个0-7范围内的一个随机整数*/ printf(n 选择“确认点名”或“取消点名”); prin tf(n%s%s,stui. nu m,stui. name); i

8、f(stui.t3) switch(getch()/*实现确认或者取消一次点名的功能*/ 确认成功!);stui.t+;break; 取消成功!);break; 出错!); case1: prin tf(n case2: prin tf(n default: prin tf(n if(stu0.t=3)j8;j+) stuj.t=0; /*所有的学生被点了三次后,点名次数重 新归零*/ 2、显示点名情况函数display。 该函数的核心功能是将教师点名过程中每个同学被 点到的次数连同他本人的学号及姓名一起打印到计算机 屏幕上显示,以便判断某位同学被点到次数是否超过了三 次,如果哪位同学被随机抽

9、取的次数超过了三次,则这位 同学被点到的次数就不会再增加了。具体程序段如下: void display() /*将点名情况显示到屏幕上*/ int k; for(k=0;k8;k+) prin tf(n%s %s %d次 ,stuk. num,stuk. name,stuk.t); 3、保存点名记录函数save() 教师点名完毕以后将点名的结果要保存起来,save() 函数就是要实现这个功能的。此函数需要先定义一个文件 指针,然后用“ w+ ”的形式为读写新建一个名为you.txt 的文本文档,然后将计算机内存中(即结构体数组stu 中)存储的点名结果传递到计算机外存D:you.txt文本 文

10、档中。此文档保存在根目录下。具体的程序段如下: void save() /*将点名完毕后的内存点名信息保存到外存 D:you.txt 文本文档中*/ int i; FILE *fp1; if(fp仁 fope n( D:you.txt,w+)=NULL) printf(文件打开失败!); else for(i=0;i8;i+) fprin tf(fp1,%s %s %d次 n,stui. nu m,stui. name,stui.t); fclose(fp1); printf(n保存点名成功!); 4、主函数main() 主函数的功能主要是将保存学生点名原始数据的外 存文件myfile.dat

11、中的学生信息传递到内存结构体数组 stu中,并调用各个自定义的函数,四个菜单项功能主要 是凭switch语句来实现的,并加一个goto循环,以实 现连续多次点名。 注意:myfile.dat应预先保存到下,才能成功地 将外存数据传递到内存结构体数组中。 五、个人总结 本次的C语言课程设计时间短,工作强度大,通过这次 学习对我的逻辑思维能力,学习效率很有益处,是一次难 得的锻炼机会。由于课设的题目富有挑战性,大大开拓了 我过去学习C语言那种相对局限的认知能力,并大致掌握 了如何实现软件设计中将各个功能模块化这一重要设计 知识。 这次课设让我大体掌握了 Visual C+的基本功能, 突破了那种以

12、往以TC环境为主要设计媒介的思想束缚。 通过一周的课设使我的 VC功能大大增强,设计起来得心 应手,待全部源代码设计完毕后不禁有一种意犹未尽、行 云流水的畅感,我决定以后继续进修VC+,熟悉它的每 一项功能,达到一个初级程序编程员的水平。 课设的上机期间,辅导老师也给予了我们莫大的帮 助,攻克了设计过程中一个又一个问题, 核心问题的成功 有很大一部分来自于教师的热心辅导, 在此我深切的感谢 你们,感谢你们那种无私的奉献。 六、参考文献 1谭浩强.C程序设计.北京:清华大学出版社,2005 2刘成等.C语言程序设计实验指导与习题集.北京: 中国铁道出版社,2006 七、完整源程序代码 #i nc

13、lude #i ncludevstri ng.h #i nclude #in clude struct stude nt char num20; /* 存储学生学号*/ char name30; /*存储学生姓名*/ int t; /*点名次数*/ stu8; void start() /* 开始点名 */ int i,j; i=rand()%8; /*产生一个0-7范围内的一个随机整数*/ printf(nxuan zhe“que ren dian ming ” huo “que xiao dian mi ng ” ); prin tf(n%s%s,stui. nu m,stui. name

14、); if(stui.t3) switch(getch()/*实现确认或者取消一次点名的功能*/ case1:prin tf(nquerenche ng gon g!);stui.t+;break; case2: prin tf(nque xiao che ng gon g!);break; default: prin tf(nchu cuo!); if(stu0.t=3)j8;j+) stuj.t=0; /*所有的学生被点了三次后,点名次数重 新归零*/ void display。/*将点名情况显示到屏幕上*/ int k; for(k=0;k8;k+) prin tf(n%s%s %d次

15、,stuk. num,stuk. name,stuk.t); void save() /*将点名完毕后的内存点名信息保存到外存 D:you.txt文本文档中*/ int i; FILE *fp1; if(fp仁 fope n( D:you.txt,w+)=NULL) prin tf(we n jia n da kai shi bai!); else for(i=0;i8;i+) fprin tf(fp1,%s%s %d次 n,stui. nu m,stui. name,stui.t); fclose(fp1); prin tf(nbao chun dia n ming che ng gon g

16、!); mai n() FILE *fp2; int i; printf( * *n); printf( a.kai shi dianming (l.que ren qu xiao 2.que xiao)nn); prin tf(b.xia n shi suo you xue she ng dia n ming qing kua ngnn ”); prin tf(c.bao cun dia n mingnn ”); prin tf(d.tui chu dia n ming xi tongnn ”); printf( * *n); prin tf( qing xua n zhe yi ge cai dan xia ng:); if(fp2=fope n( D:myfile.dat,w+)=NULL) prin tf(da kai wen jia n shi bai!); else for(i=0;i8;i+) fsca

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论