c语言课设:点名系统_第1页
c语言课设:点名系统_第2页
c语言课设:点名系统_第3页
c语言课设:点名系统_第4页
c语言课设:点名系统_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、沈阳航空航天大学课程设计学号 7班级电信 1504姓名指导教师刘 鹤 丹2016年9 月18 日沈阳航空航天大学课程设计任务书学院:电子信息工程学院专业:电子信息工程班级:电子学号:题目:随机点名系统一、课程设计时间二、课程设计内容用 C 语言编写软件完成以下任务:教师在每次上课时,需要对学生随机点名提问;学生信息应事先保存到文件 myfile.dat 中。学生共有8 人,名单如下:20013011001杜永宁20013011002王传华20013011003殷泳20013011004杨柳青20013011005王丽20013011006张华20013011007白雪20013011008 薛

2、峰所谓点名,是指将某位同学的姓名和学号打印到屏幕上,则表示该同学被点名 1 次;注意点名的随机性,即公正性。三、课程设计要求程序质量:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括 “开始点名” 、“显示所有同学点名情况”、“保存点名” 、“退出” 4 项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后, 上交课程设计说明书和源程序。 课程设计说明书的内容参见提供的模板。四、指导教师和学生签字指导教师: _学生签名: _五、成绩六、教师评语目录一、需求分析0二、设计分析0三、主要界面截图5四、技术要点7五、个人总结11六

3、、参考文献11七、源程序11一、需求分析此程序是为点名而设计,经分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个功能,他们的功能分别是:程序界面设计模块,文件读写模块,显示点名情况模块,随机算法模块。1、程序界面设计模块主要实现程序最初运行时程序界面友好、美观的的构型以及简明的操作提示;2、文件读写模块实现的功能是对file20.txt文件数据的读取和存储,将文件中的数据保存到结构体 student 中,并将点名次数通过 save 函数保存到文件中;3、显示点名情况模块按照题目的要求将数据文件中所有学生的学号、姓名、是否缺席打印到屏幕上;4、点名算法模块通过调用自定义函数o

4、pen() 和 rew() 实现点名,并将被点到的学号、姓名、是否缺席打印到屏幕上;除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。二、设计分析1、整体框架图随机点名系统菜单模块创显保建点示存名名信模单模息块模块模块块图 1:整体框架图2、流程图2.1. 保存函数流程图如图所示,通过rb+ 的方式打开文件,通过 for 循环,将结构体中的保存的学生信息保存到文件当中。 if(fp=fopen("file20.txt","rb+")=NULL)yesNoprintf("文件for(i

5、=0;i<8;i+)打开失败 n"if(fwrite(&stdi,sizeof(struct student),1,fp)!=1)yesNoprintf("文件文件保存成功保存失败 n");关闭文件图 2 Sa ve函数进行保存的流程图2.2 、菜单函数流程图如图 3 所示,通过 switch 语句进行选择,调用不同的功能函数,从而达到实现各部分功能的作用。if(fp=fopen("file20.txt","ab+")=NULL)yes文件打开失败Exit(0)Nofor(i=0;i<8;i+)scanf

6、("%d",&c);switch(c);While(1)Case 1真否Case 2真否Case 3;开始点名真信息统计否Case 4学生信息添加退出图 3:菜单模块的流程图2.3 、点名函数流程图4 所示,通过采用随机数语句随机出数字 0-7 ,然后运用 switch 语句,通过 strcmp 函数,将结构体中保存的学生编号同固定编号比较, 如果相同则输出该编号对应的学生的信息numb=rand()%8+1switch(numb)真 Case1 case 否strcp真Case2y(temp,"20strcpy(t真Case301301emp,"

7、;2001001"13011002trcpy(temp.)"),"20013011 .003").真Case8.否For( i=0,i<n,i+)yesno输出 peoi.num,图 4:点名函数流程图三、主要界面截图图 5.主界面图 6开始点名图 7 显示所有同学的点名情况图 8 保存点名图 9 保存点名四、技术要点1、结构体的定义并把原始信息一同定义在结构体成员中,是程序的核心内容之一void main()int i,n;int c;FILE *fp;if(fp=fopen("f:myfile.txt",&

8、quot;r")=NULL)/文件不存在的时候 /write();else n=reads(st);menu();while(1)scanf("%d",&c);switch(c)case 1:rank_name(st);break;case 2:show(st);break;case 3: save(st);break;case 4:exit(0);从上面的定义中可以看出, 结构体类型定义中成员项都有确定的类型和名字,而要使用结构体类型的数据,必须经过两个步骤:先由关键字 struct 和用户定义的结构体名来说明类型,然后在由它们说明变量。2、 void

9、write() 是自定义函数它的主要用途是打开预存的学生的信息,并把它显示在屏幕上给老师点名。程序如下:void write()FILE *fp;/定义文件指针/int n,i;if(fp=fopen("f:myfile.txt","a")=NULL) /如果文件已经存在,可以追加学生信息if(fp=fopen("f:myfile.txt","w")=NULL) /文件不存在时,创建新文件,输入学生信息printf("文件打开失败!n");return;for(i=0;i<N;i+)fpr

10、intf(fp,"%st%st%dtn",sti.num,,sti.da ta);/把学生信息存放到文件中/fclose(fp);3 、void save(student peo)FILE *fp;fp=fopen("f:myfile.txt","r+");int i,n;for(i=0;i<N;i+)fprintf(fp,"%st%st%dtn",peoi.num,,peoi.data);fclose(fp);void save(student peo)FILE *fp;f

11、p=fopen("f:myfile.txt","r+");int i,n;for(i=0;i<N;i+)fprintf(fp,"%st%st%dtn",peoi.num,,peoi.data);fclose(fp); 。如下: void rew()int i; int h=1; int k; char j; FILE *fp; if(fp=fopen("file20.txt","r")=NULL)printf(" 文件打开失败 n"); exit(0)

12、;printf("*学 生 缺 席 请 按 'a' 进 行 修 改*n");printf("*输入 'b'跳出修改*n");while(h)scanf("%c",&j);switch(j)case 'a':printf("缺席学生学号n");scanf("%d",&k);k=k-101;stk.data='Y'break;case 'b':h=0;for(i=0;i<7;i+)fread(&am

13、p;sti,sizeof(struct student),1,fp);printf("%dt%st%cn",sti.num,,sti.data);4、void save() 是保存学生信息的自定义函数,主要将修改后的学生信息保存到file20.txt文档中去,实现保存功能。程序如下:void save(student peo)FILE *fp;fp=fopen("f:myfile.txt","r+");int i,n;for(i=0;i<N;i+)fprintf(fp,"%st%st%dtn"

14、,peoi.num,,peoi.data);fclose(fp); 在上面的程序段中,用到了三个调用函数语句进行操作,尽管在程序化设计中有些重复,但其很方便,应用及操作比较简单。比如 void open() 语句是为了打开file20.txt文件并输出学生情况进行点名, void rew()语句点名是进行信息统计,void save()是保存功能的函数,通过它实现了学生信息的添加及保存。五、个人总结在此次课设之前我 C语言学的一般,只能勉强应付考试,很多概念都非常模糊记不清楚。虽然,我的编程题目并不算难,但是,在这一周的时间里,经过不断的学习与努力及与同学进行探讨,还有老师的

15、指导,我的 C语言编程终于能圆满完成。虽然程序还有一定的瑕渍,但我以尽力完成了。我感到 C语言程序设计确实是一门很有用的学科,所以这次课设并不是一个结束,而是一个开始,一个对C语言更深入学习的开始。六、参考文献1 谭浩强 C 程序设计 北京:清华大学出版社, 20052 Prata ,s.C Primer Plus.北京:人民邮电出版社,2005七、源程序#include <stdlib.h>#include <stdio.h>#include<string.h>#include <math.h>#define N 8struct student

16、char num20;char name10;int data;st8="20013011001","",0,"20013011003","",0,"20013011005",""20013011006","",0,"20013011008","杜永宁",0,"20013011002","殷泳",0,"20013011004","王丽 &

17、quot;,0,张华",0,"20013011007","薛峰 ",0;王传华杨柳青白雪void menu()printf("*n");printf("*MENU*n");printf("*欢迎使用教师上课点名系统*n");printf("*输 入1:开始点名*n");printf("*输入2:显示所有同学点名情况*n");printf("*输 入3:保存点名*n");printf("*输 入4:退 出*n"

18、;);printf("*n");void write()FILE *fp;/定义文件指针 /int n,i;if(fp=fopen("f:myfile.txt","a")=NULL) /如果文件已经存在,可以追加学生信息if(fp=fopen("f:myfile.txt","w")=NULL)/文件不存在时,创建新文件,输入学生信息printf("文件打开失败!n");return;for(i=0;i<N;i+)fprintf(fp,"%st%st%dtn&q

19、uot;,sti.num,,sti.data);/把学生信息存放到文件中/fclose(fp);int reads(struct student peoN) /读取学生文件中数据存到结构体中并返回结构体数组元素个数/FILE *fp;int i=0;if(fp=fopen("f:myfile.txt","r")=NULL)/文件不存在的时候/printf("文件打开失败!n");return 0;else/文件存在时 /for(i=0;!feof(fp);i+)/用循环将文件中的数据读入到结构体中 /fscanf(fp

20、,"%s%s%dn",peoi.num,,&peoi.data);fclose(fp);return i;/返回结构体数组元素个数/void rank_name(student peo)int numb,n,i;char temp20;numb=rand()%8+1;switch(numb)case 1:strcpy(temp,"20013011001");break;case 2:strcpy(temp,"20013011002");break;case 3:strcpy(temp,"20013011003");break;case 4:strcpy(temp,"20013011004");break;case 5:strcpy(temp,"20013011005");break;case 6:strcpy(temp,"20013011006");break;case 7:strcpy(temp,"20013011007");break;case 8:strcpy(temp,"20013011

温馨提示

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

评论

0/150

提交评论