已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈 阳 航 空 航 天 大 学 课程设计学 号 班 级 姓 名 指导教师 李飞2013 年 3 月 8 日沈阳航空航天大学课程设计任务书系: 专业: 班级:学号: 题目:教师上课随机点名一、课程设计时间20122013第2学期第2周,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:教师在每次上课时,需要对学生随机点名提问。学生信息应事先保存到文件myfile.dat中。学生共有8人,名单如下:20013011001 杜永宁 20013011002 王传华20013011003 殷泳 20013011004 杨柳青20013011005王丽 20013011006张华20013011007白雪 20013011008薛峰所谓点名,是指将某位同学的姓名和学号打印到屏幕上,则表示该同学被点名1次。注意点名的随机性,即公正性。三、课程设计要求1程序质量:l 贯彻结构化的程序设计思想。l 用户界面友好,功能明确,操作方便。l 用户界面中的菜单至少应包括“开始点名”、“显示所有同学点名情况”、“保存点名”、“退出”4项。l 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容如下:l 课程设计任务书l 程序设计题目l 需求分析(分析题目的要求)l 程序框图l 核心技术的实现方法及程序源代码及注释l 个人总结l 参考资料课程设计说明书: 课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、成绩六、教师评语沈阳航空航天大学设计用纸目录一、需求分析1二、设计分析3三、主要界面截图5四、技术要点6五、个人总结7六、参考文献7七、源程序719一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。该系统是一个较典型的数据管理系统,其使用者被假定为某办公室的学生成绩管理人员,系统应该具有安全、稳定、功能齐全的特点。1. 安全性分析系统管理的数据涉及到学院的所有同学,数据量较大且是一种基础性数据,能够为其它方面的学生管理工作提供重要参考,所以要通过设置密码等手段确保数据不能被随意的删减和修改。2. 稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。3. 主要功能分析(1)数据输入:允许用户输入学号、姓名、班级、数学成绩、计算机成绩、英语成绩。对用户由于疏忽录入的非法数据,能够及时提示并更正。(2)数据保存:对于输入的数据,或被修改的数据应该保存到某个磁盘文件中,实现永久存储。文件的具体格式题目未作具体要求,所以可采用随机文件,也可采用文本文件。不管采用哪种文件形式,文件中的数据应有固定的格式,以便于程序自动读取或人工阅读。(3)数据查询:用户输入查询条件,系统规则地在界面显示查询结果,且显示的数据尽量全面。当输入学号时,可查询到该学生的学号、姓名、各门课程成绩等信息;当输入成绩时,可查询到关于当前课程与此成绩匹配的学生名单。二、设计分析主要有5个功能模块,每个模块对应一个C语言自定义函数。这些函数原型及其功能简述如下:1、 save函数:自定义save()函数,用来保存初始化的结构体stu=20013011001,杜永宁,0,20013011002,王传华,0,20013011003,殷泳,0,20013011004,杨柳青,0,20013011005,王丽,0,20013011006,张华,0,20013011007,白雪,0,20013011008,薛峰,0;2、 menu函数:自定义menu()函数,用来设置人机交流界面,更好的为用户提供服务。3、 sav函数:自定义sav()函数,用来保存结构体(点名后,同学们的点名情况)4、 show函数:自定义show()函数,用来输出数据,显示点名信息。1、 程序总体结构图(传统流程图或N-S框图)当(1)假输入值n=1真开始点名srand( )假输入值n=2真显示Show( )假输入值n=3真保存Sav( )n=4退出图1程序总体结构图2、主要功能模块框图(传统流程图或N-S框图)(1)保存初始化结构体save函数读写方式打开myfile.dat不成功假真输出cannot open file循环变量i=1当i=8时学生信息写入文件i+关闭文件图2保存初始化结构体save函数(2)随机点名函数srand()读写方式打开myfile.dat不成功假真输出cannot open file定义从零开始的时间种子选取零到七之间的随机数istu.x+输出被点同学的信息将点名后同学的信息存入文件关闭文件(3)保存点名信息函数sav()读写方式打开myfile.dat不成功假真输出file cannot open循环变量i=1i=8学生信息写入i+关闭文件三、主要界面截图图1 程序主界面图2 随机点名界面图3 点名情况显示界面四、技术要点1、结构体的应用定义了结构体用来描述学生的学号、姓名、以及被点名次数。具体的定义如下:stu=20013011001,杜永宁,0,20013011002,王传华,0,20013011003,殷泳,0,20013011004,杨柳青,0,20013011005,王丽,0,20013011006,张华,0,20013011007,白雪,0,20013011008,薛峰,0;所定义的结构体主要用于定义数组。2、文件操作包括了文件的写入和读取两个方面。文件的写入操作,用于保存录入的学生数据,也用于保存点名后的数据。例如如下程序段用于保存录入的学生信息:void save()int i;FILE *fp;if(fp=fopen(myfile.dat,wb)=NULL)printf(cannot open filen);elsefor(i=0;i8;i+)fwrite(&stui,sizeof(struct student),1,fp);fclose(fp);3、关于随机点名的算法实现从系统中随机点名的功能是这次课程设计的题目中比较陌生的,也是比较难得一个环节,通过查阅图书和网上论坛,随机点名的功能首先需要选取一个随机数,随机数的选取可使用srand(unsigned)time(0)语句实现,以时间为种子,在不同时间选取一个随机数,以此避免伪随机数的产生,通过选取07之间的随机数,便可实现对8位同学随机点名,语句如下:void srand()/使用随机函数进行随机点名int i;FILE *fp;if(fp=fopen(myfile.dat,wb)=NULL)printf(cannot open filen);else srand(int)time(0); i=rand()%7; stui.x+;printf(n学号:%s 姓名:%s 被点名次数:%dn,stui.num,,stui.x);fprintf(fp,%s %s %d,stui.num,,stui.x);fclose(fp);五、个人总结 本次课程设计让我学到了很多的东西并且首先要感谢老师细心耐心地指导,由于c语言知识是大一下学习的,至今已经过了一年时间,一些知识或多或少的有所忘记,但通过这次课程设计,我再一次重温了c语言的知识,由于课设题目的原因,我更多地了解了结构体和文件的知识。 本次课设我的题目是教室随机点名系统,主要知识点是结构体、文件和随机函数的使用,这三个知识点又是在大一下学期没有深入学习的,所以这次课程设计让我温习了旧知识又学习了新知识。而且由于国家计算机二级考试在本月末举行,这更加有利于我的c语言复习,争取在考试中取得优秀的成绩。六、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 徐波.c专家编程.人民邮电出版社,20083 百度百科/view/657249.htm4 百度贴吧 /p/2808522七、源程序#include#include#include#includestruct student/定义结构体char num20;char name10;int x;struct student stu=20013011001,杜永宁,0,20013011002,王传华,0,20013011003,殷泳,0,20013011004,杨柳青,0,20013011005,王丽,0,20013011006,张华,0,20013011007,白雪,0,20013011008,薛峰,0;void save()/将结构体保存在文件里int i;FILE *fp;if(fp=fopen(myfile.dat,wb)=NULL)printf(cannot open filen);elsefor(i=0;i8;i+)fwrite(&stui,sizeof(struct student),1,fp);fclose(fp);void menu();void srand();void show();void sav();void main()int n;while (1)menu();printf(n请输入你要的操作序号);scanf(%d,&n);switch(n)case 1:srand();break;case 2:show();break;case 3:sav();break;case 4:exit(0);default: printf(输入错误,请输入列表中存在的序号!n );void menu()/人机菜单printf(nnnnn*欢迎使用*);printf(n*教师随机点名系统*);printf(n*1.开始点名*);printf(n*2.显示所有同学点名信息*);printf(n*3.保存*);printf(n*4.退出*);void srand()/使用随机函数进行随机点名int i;FILE *fp;if(fp=fopen(myfile.dat,wb)=NULL)printf(cannot open filen);else srand(int)time(0); i=rand()%7; stui.x+;printf(n学号:%s 姓名:%s 被点名次数:%dn,stui.num,,stui.x);fprintf(fp,%s %s %d,stui.num,,stui.x);fclose(fp);void show()/显示学生点名信息int i;FILE *fp;if(fp=fopen(myfile.dat,wb)=NULL)printf(cannot open filen);elseprintf(nnnn学生点名情况);for(i=0;i8;i+)printf(n学号:%s 姓名:%s 被点次数%dn,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浅论当代隶书创作碑与简的融合
- 论文发表专家意见评语
- 互联网医疗纳入医保支付的风险与对策分析
- 评语大全之毕设答辩评语
- 2021年第19届NOC-Python赛项选拔赛(含答案)
- 基于ADAMS的驾驶室悬置优化设计
- 浅论《萧萧》中的主人公形象
- 西南大学全日制工程硕士专业学位研究生培养方案【模板】
- 函授会计毕业论文
- 中考作文议论文真题5
- CJT156-2001 沟槽式管接头
- 2024年民办普通高中行业分析报告
- 信号与系统 (第三版) 全套课件(上)
- 篮球竞赛风险管理与应急预案制定
- 2023南头古城项目简介招商手册
- 智能化农业机械装备技术
- 工厂介绍文案
- 青岛大学考研真题-电路
- 各岗位安全知识及职责培训
- 因公出国人员审查表
- 新外研版高中英语选择性必修一Unit3 Writing教学课件
评论
0/150
提交评论