教师上课随机点名C语言.doc_第1页
教师上课随机点名C语言.doc_第2页
教师上课随机点名C语言.doc_第3页
教师上课随机点名C语言.doc_第4页
教师上课随机点名C语言.doc_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

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

文档简介

沈 阳 航 院 设 计 用 纸沈 阳 航 空 工 业 学 院 课程设计学 号 _班 级 _ 姓 名 _指导教师 _年 月 日 沈阳航空工业学院课程设计任务书机械与汽车 学院 机械设计制造及其自动化 专业 5406108 班 学号 200504061284一、课程设计题目:教师上课随机点名二、课程设计工作自2007年7月9日起至2007年7月14日止三、课程设计内容:运用所学的C语言知识,编制和调试程序,具有如下功能:教师在每次上课时,需要对学生随机点名提问。每次只提问1名同学,对于任何一位同学的提问次数不可超过3次。如果所有的同学都被提问了3次,则次数归0,重新开始。学生信息应事先保存到文件myfile.dat中。学生共有4人,名单如下:20013011001 杜永宁 20013011002 王传华20013011003 殷泳 20013011004 杨柳青所谓点名,是指计算器将某位同学的姓名和学号打印到屏幕上,则表示该同学被点名1次。四、课程设计要求:程序质量:l 贯彻结构化程序设计思想。l 用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。l 用户界面中的菜单至少应包括“开始点名”、“显示所有同学点名情况”、“保存点名”、“退出”4项。l 代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:l 封面l 课程设计任务书l 目录l 需求分析(分析题目的要求)l 程序流程图(总体流程图和主要功能模块流程图)l 核心技术的实现说明及相应程序段l 个人总结l 参考资料l 源程序及适当的注释指导教师:_学生签名:_目录一、程序设计题目1二、需求分析1三、程序流程图2四、核心技术的实现方法、程序段及注释5五、个人总结7六、参考文献8七、完整源程序代码8 沈 阳 航 院 设 计 用 纸一、程序设计题目教师上课随机点名,具体要求如下:1、开始点名2、显示所有同学点名情况3、保存点名4、退出注:每个学生数据至少应该包括学号、姓名、被点到的次数,学生数据要保存在you.txt文件中。二、需求分析经过对程序设计题目的严格分析大体得知,整个程序的设计实现分为四个模块,其中每一个模块对应一个函数,他们的功能分别是:教师开始点名函数(start(),显示点名情况函数(display(),保存点名记录函数(save(),退出点名系统函数(exit(0)。所有函数的实现严格按照题目的要求。1、教师开始点名函数 实现的功能是随机抽取结构体数组里存储的一个学生信息,并打印到计算机屏幕上,称之为一次点名,连续调用就是多次随机点名。根据学生是否在席的情况,教师选择“确认”使学生被点到的次数加一,选择“取消”则表示此次点名无效。2、显示点名情况函数 实现的功能是将学生学号和姓名连并被点到的次数打印到用户屏幕上;3、保存点名记录函数 实现的功能是将点名完毕后的存储于计算机内存的学生数据传递到一个程序自动新建的外存文件里面,这个文件的文件名及路径是D:you.txt;4、退出点名系统函数 该函数实现的功能是结束本次点名,退出点名系统;每一个学生记录都包含学号、姓名,以及被点到的次数,学生信息的类型定义为结构体数组类型,系统刚开始调用的学生信息均来自于D:myfile.dat,D:myfile.dat 中的被点到的次数均为零,并将点完名的学生信息保存到D:you.txt中。三、程序流程1、 程序总体框图开始输出菜单项myfile.dat=stu4输入c输入b输入d输入a exit()函数save()函数display()函数start()函数 结束图1. 程序总体框图2、具体功能框图(1)教师开始点名函数start();rand()%8=i 输出点名一次stui.tstui.t(stui.t=3)&(stui.t=3)&(stui.t=3)是 否0=j0=stuj.tj+1=j直到jk输出“stuk.num”,“”k+1=k直到ki输出“文件打开失败!” 把stu里存储的点名 信息保存you.txt i+1=i 直到i4关闭D:you.txt文件输出“保存点名成功!”图4. 保存点名记录函数 save() (4)退出点名系统函数exit(0);此函数为c语言标准库函数,只需在源程序开头加一个#include申明即可调用。 四、核心技术的实现方法、程序段及注释本程序主要由三个自定义函数、一个标准库函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。,其中三个自定义的函数是程序中较为核心的部分,下面分别进行说明。1、教师开始点名函数start() 此函数首先是从结构体数组stu的四个成员里面随机抽取一个成员并打印到计算机屏幕上。这里要用到rand()这个标准库函数,rand()n(n是整数)可产生0到n-1之间的一个随机整数,如果谁被抽到了一次,在其点名次数小于3次的情况下,被点到的次数就加一。待所有的同学被点到三次后,则将被点到的次数都归零。具体的程序段如下:void start() /*开始点名*/ int i,j; i=rand()%8; /*产生一个0-7范围内的一个随机整数*/ printf(n选择“确认点名”或“取消点名”); printf(n%s%s,stui.num,); if(stui.t3) switch(getch()/*实现确认或者取消一次点名的功能*/ case1: printf(n确认成功!);stui.t+;break;case2: printf(n取消成功!);break;default: printf(n出错!); if(stu0.t=3)&(stu1.t=3)&(stu2.t=3)&(stu3.t=3) for(j=0;j8;j+) stuj.t=0; /*所有的学生被点了三次后,点名次数重新归零*/2、显示点名情况函数display()该函数的核心功能是将教师点名过程中每个同学被点到的次数连同他本人的学号及姓名一起打印到计算机屏幕上显示,以便判断某位同学被点到次数是否超过了三次,如果哪位同学被随机抽取的次数超过了三次,则这位同学被点到的次数就不会再增加了。具体程序段如下:void display() /*将点名情况显示到屏幕上*/ int k; for(k=0;k8;k+) printf(n%s%s%d次,stuk.num,,stuk.t);3、保存点名记录函数save()教师点名完毕以后将点名的结果要保存起来,save()函数就是要实现这个功能的。此函数需要先定义一个文件指针,然后用“w+”的形式为读写新建一个名为you.txt的文本文档,然后将计算机内存中(即结构体数组stu中)存储的点名结果传递到计算机外存D:you.txt文本文档中。此文档保存在D:根目录下。具体的程序段如下:void save() /*将点名完毕后的内存点名信息保存到外存D:you.txt文本文档中*/ int i; FILE *fp1; if(fp1=fopen(D:you.txt,w+)=NULL) printf(文件打开失败!); else for(i=0;i8;i+) fprintf(fp1,%s%s%d次n,stui.num,,stui.t); fclose(fp1); printf(n保存点名成功!);4、主函数main()主函数的功能主要是将保存学生点名原始数据的外存文件myfile.dat中的学生信息传递到内存结构体数组stu中,并调用各个自定义的函数,四个菜单项功能主要是凭switch语句来实现的,并加一个goto循环,以实现连续多次点名。注意:myfile.dat应预先保存到D:下,才能成功地将外存数据传递到内存结构体数组中。五、个人总结本次的C语言课程设计时间短,工作强度大,通过这次学习对我的逻辑思维能力,学习效率很有益处,是一次难得的锻炼机会。由于课设的题目富有挑战性,大大开拓了我过去学习C语言那种相对局限的认知能力,并大致掌握了如何实现软件设计中将各个功能模块化这一重要设计知识。 这次课设让我大体掌握了Visual C+的基本功能,突破了那种以往以TC环境为主要设计媒介的思想束缚。通过一周的课设使我的VC功能大大增强,设计起来得心应手,待全部源代码设计完毕后不禁有一种意犹未尽、行云流水的畅感,我决定以后继续进修VC+,熟悉它的每一项功能,达到一个初级程序编程员的水平。课设的上机期间,辅导老师也给予了我们莫大的帮助,攻克了设计过程中一个又一个问题,核心问题的成功有很大一部分来自于教师的热心辅导,在此我深切的感谢你们,感谢你们那种无私的奉献。 六、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成 等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006七、完整源程序代码#include#include#include#includestruct student 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 ming”); printf(n%s%s,stui.num,); if(stui.t3) switch(getch()/*实现确认或者取消一次点名的功能*/ case1: printf(nque ren cheng gong!);stui.t+;break; case2: printf(nque xiao cheng gong!);break;default: printf(nchu cuo!); if(stu0.t=3)&(stu1.t=3)&(stu2.t=3)&(stu3.t=3) for(j=0;j8;j+) stuj.t=0; /*所有的学生被点了三次后,点名次数重新归零*/void display() /*将点名情况显示到屏幕上*/ int k; for(k=0;k8;k+) printf(n%s%s%d次,stuk.num,,stuk.t);void save() /*将点名完毕后的内存点名信息保存到外存D:you.txt文本文档中*/ int i; FILE *fp1; if(fp1=fopen(D:you.txt,w+)=NULL) printf(wen jian da kai shi bai!); else for(i=0;i8;i+) fprintf(fp1,%s%s%d次n,stui.num,,stui.t); fclose(fp1); printf(nbao chun dian ming cheng gong!);main() FILE *fp2; int i; printf(*n); printf( a.kai shi dian ming (1.que ren qu xiao 2.que xiao)nn); printf( b.xian shi suo you xue sheng dian ming qing kuangnn); printf( c.bao cun dian mingnn); printf( d.tui chu dian ming xi tongnn); printf(*n); printf(qing xuan zhe yi ge cai dan xiang:); if(fp2=fopen(D:myfile.dat,w+)=NULL) printf(da kai wen jian shi bai!); else for(i=0;i8;i+) fsc

温馨提示

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

评论

0/150

提交评论