您好,欢迎访问三七文档
沈阳航空工业学院课程设计学号__________班级__________姓名__________指导教师___尹航___年月日沈阳航空工业学院课程设计任务书电子工程系电子信息工程专业84020103班学号2008040201106一、课程设计题目:教师上课随机点名二、课程设计工作自2009年9月7日起至2009年9月11日止三、课程设计内容:用C语言编写软件完成以下任务:教师在每次上课时,需要对学生点名提问。学生信息应事先保存到文件file20.txt中。学生共有7人,名单如下:101杜永宁N102段楠N103冯红N104郝苇N105胡龙N106李南N107刘盈N所谓点名,是指将某位同学的姓名和学号打印到屏幕上,则表示该同学是否缺席。四、课程设计要求:1.程序质量:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。用户界面中的菜单至少应包括“开始点名”、“信息统计”、“学生信息添加”、“退出”4项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。2.课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容如下:课程设计任务书程序设计题目需求分析(分析题目的要求)程序框图核心技术的实现方法及程序源代码及注释个人总结[参考资料]五、指导教师:学生签名:六、成绩:七、教师评语:目录一、需求分析..................................................................2二、程序流程图..............................................................3三、核心技术的实法现方..............................................6四、个人总结.................................................................11五、参考文献................................................................12六、源程序....................................................................12沈阳航院设计用纸2一、需求分析此程序是为点名而设计,经分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个功能,他们的功能分别是:程序界面设计模块,文件读写模块,显示点名情况模块,随机算法模块。1、程序界面设计模块主要实现程序最初运行时程序界面友好、美观的的构型以及简明的操作提示;2、文件读写模块实现的功能是对file20.txt文件数据的读取和存储,将文件中的数据保存到结构体student中,并将点名次数通过save函数保存到文件中;3、显示点名情况模块按照题目的要求将数据文件中所有学生的学号、姓名、是否缺席打印到屏幕上;4、点名算法模块通过调用自定义函数open()和rew()实现点名,并将被点到的学号、姓名、是否缺席打印到屏幕上;除上面介绍的功能之外,程序还具有退出功能,可以沈阳航院设计用纸3在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。二、程序流程图1、整体框架图:输出目录选项定义结构体点名及显示模块修改模块保存模块结束开始沈阳航院设计用纸4图1:整体框架图2、流程图Save函数进行保存的流程图yesif((fp=fopen(file20.txt,rb+))==NULL)Noprintf(文件打开失败\nfor(i=0;i7;i++)if(fwrite(&std[i],sizeof(structstudent),1,fp)!=1)yesNoprintf(文件保存失败\n);文件保存成功图2Save函数进行保存的流程图沈阳航院设计用纸53、点名模块的流程图if((fp=fopen(file20.txt,ab+))==NULL)yesNo文件打开失败Exit(0)for(i=0;i7;i++)scanf(%d,&c);switch(c);While(1)真Case1否开始点名真Case2否信息统计真Case3;否学生信息添加Case4退出图3:点名模块的流程图沈阳航院设计用纸64、学生信息修改图if((fp=fopen(file20.txt,ab+))==NULL)yesNo文件打开失败Exit(0)scanf(%c,&j);h=0;While(h)真Case1否修改信息真Case2否h=0;跳出;图3:学生信息修改图三、核心技术的实法现方1、结构体的定义并把原始信息一同定义在结构体成员中,是程序的核心内容之一structstudent{longnum;沈阳航院设计用纸7charname[10];chardata;}st[7];从上面的定义中可以看出,结构体类型定义中成员项都有确定的类型和名字,而要使用结构体类型的数据,必须经过两个步骤:先由关键字struct和用户定义的结构体名来说明类型,然后在由它们说明变量。2、Voidopen()是自定义函数它的主要用途是打开预存的学生的信息,并把它显示在屏幕上给老师点名。程序如下:voidopen(){inti;FILE*fp;if((fp=fopen(file20.txt,ab+))==NULL){printf(文件打开失败\n);exit(0);沈阳航院设计用纸8}for(i=0;i7;i++){fread(&st[i],sizeof(structstudent),1,fp);printf(%d\t%s\t%c\n,st[i].num,st[i].name,st[i].data);}}3、Voidrew()是学生信息修改程序,提供给老师对缺席学生信息的修改,即缺席的学生,老师只要输入学号,程序就将该学生的缺席情况自动改为”Y”。如下:voidrew(){inti;inth=1;intk;charj;FILE*fp;if((fp=fopen(file20.txt,r))==NULL)沈阳航院设计用纸9{printf(文件打开失败\n);exit(0);}printf(***********学生缺席请按'a'进行修改*********\n);printf(***********输入'b'跳出修改**********\n);while(h){scanf(%c,&j);switch(j){case'a':printf(缺席学生学号\n);scanf(%d,&k);k=k-101;st[k].data='Y';break;case'b':h=0;}}沈阳航院设计用纸10for(i=0;i7;i++){fread(&st[i],sizeof(structstudent),1,fp);printf(%d\t%s\t%c\n,st[i].num,st[i].name,st[i].data);}}4、voidsave()是保存学生信息的自定义函数,主要将修改后的学生信息保存到file20.txt文档中去,实现保存功能。程序如下:voidsave(){inti;FILE*fp;if((fp=fopen(file20.txt,rb+))==NULL){printf(文件打开失败\n);exit(0);沈阳航院设计用纸11}for(i=0;i7;i++)if(fwrite(&st[i],sizeof(structstudent),1,fp)!=1)printf(文件保存失败\n);}在上面的程序段中,用到了三个调用函数语句进行操作,尽管在程序化设计中有些重复,但其很方便,应用及操作比较简单。比如voidopen()语句是为了打开file20.txt文件并输出学生情况进行点名,voidrew()语句点名是进行信息统计,voidsave()是保存功能的函数,通过它实现了学生信息的添加及保存。四、个人总结在此次课设之前我C语言学的一般,只能勉强应付考试,很多概念都非常模糊记不清楚。虽然,我的编程题目并不算难,但是,在这一周的时间里,经过不断的学习与努力及与同学进行探讨,还有老师的指导,我的C语言编沈阳航院设计用纸12程终于能圆满完成。虽然程序还有一定的瑕渍,但我以尽力自己独立完成了。我感到C语言程序设计确实是一门很有用的学科,所以这次课设并不是一个结束,而是一个开始,一个对C语言更深入学习的开始。并借着机会继续学习C语言,努力尽早通过国家计算机二级考试。五、参考文献1姚合生.C程序设计.北京:清华大学出版社,20082刘成等.C语言程序设计实验指导与习题集.北京:中国铁道出版社,2006六、源程序#includestdlib.h#includestdio.h#includemath.hstructstudent{longnum;charname[10];chardata;}st[7]={{101,杜永宁,'N'},{102,段楠,'N'},{103,冯红,'N'},{104,郝苇,'N'},{105,胡龙,'N'},{106,李南,'N'},{107,刘盈,'N'}};沈阳航院设计用纸13voidopen(){inti;FILE*fp;if((fp=fopen(file20.txt,ab+))==NULL){printf(文件打开失败\n);exit(0);}for(i=0;i7;i++){fread(&st[i],sizeof(structstudent),1,fp);printf(%d\t%s\t%c\n,st[i].num,st[i].name,st[i].data);}}voidrew(){inti;inth=1;intk;charj;FILE*fp;if((fp=fopen(file20.txt,r))==NULL){printf(文件打开失败\n);exit(0);}printf(***********学生缺席请按'a'进行修改*********\n);printf(***********输入'b'跳出修改**********\n);while(h){scanf(%c,&j);switch(j){case'a':printf(缺席学生学号\n);scanf(%d,&k);k=k-101;st[k].data='Y';break;case'b':h=0;沈阳航院设计用纸14}}for(i=0;i7;i++){fread(&st[i],sizeof(structstudent),1,fp);printf(%d\t%s\t%c\n,st[i].num,st[i].name,st[i].data);}}voidsave(){inti;FILE*fp;if((fp=fopen(file20.txt,rb+))==NULL){printf(文件打开失败\n);exit(0);}for(i=0;i7;i++)if(fwrite(&st[i],sizeof(structstudent),1,fp)!=1)printf(文件保存失败\n);}voidmain(){structstudent{longnum;charname[10];chardata;}st[7]={{101,杜永宁,'N'},{102,段楠,'N'},{103,冯红,'N'},{104,郝苇,'N'},{105,胡龙,'N'},{106,李南,'N'},{107,刘盈,'N'}};inti;intc;printf(**************************************************************************\n);printf(********************************MENU**************************************\n);printf(*********************
本文标题:教师上课点名系统
链接地址:https://www.777doc.com/doc-6247637 .html