《2022年c语言课设:点名系统 .pdf》由会员分享,可在线阅读,更多相关《2022年c语言课设:点名系统 .pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、沈 阳 航 空 航 天 大 学课程设计学号 153402010417班级电信 1504 姓名指导教师刘 鹤 丹2016 年9 月18 日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 20 页 - - - - - - - - - 沈 阳 航 空 航 天 大 学课 程 设 计 任 务 书学院:电子信息工程学院专业:电子信息工程班级:电子学号:题目:随机点名系统一、课程设计时间二、课程设计内容用 C 语言编写软件完成以下任务:教师在每次上课时,需要对学生随机点名提问;学生信息
2、应事先保存到文件 myfile.dat 中。学生共有8 人,名单如下:20013011001 杜永宁20013011002 王传华20013011003 殷泳20013011004 杨柳青20013011005 王丽20013011006 张华20013011007 白雪20013011008 薛峰所谓点名,是指将某位同学的姓名和学号打印到屏幕上,则表示该同学被点名 1 次;注意点名的随机性,即公正性。三、课程设计要求程序质量:贯彻结构化的程序设计思想。用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括“开始点名” 、 “显示所有同学点名情况” 、 “保存点名” 、 “退出” 4 项
3、。代码应适当缩进,并给出必要的注释,以增强程序的可读性。课程设计说明书:课程结束后, 上交课程设计说明书和源程序。课程设计说明书的内容参见提供的模板。四、指导教师和学生签字指导教师: _ 学生签名: _ 五、成绩六、教师评语名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸I 目录一、需求分析 . 1二、设计分析 . 2三、主要界面截图 . 6四、技术要点 . 9五、个人总结. 12六、参考文献. 12七
4、、源程序 . 12名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸1 一、需求分析此程序是为点名而设计,经分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个功能,他们的功能分别是:程序界面设计模块,文件读写模块,显示点名情况模块,随机算法模块。1、程序界面设计模块主要实现程序最初运行时程序界面友好、美观的的构型以及简明的操作提示;2、文件读写模块实现的功能是对file20.txt文件数
5、据的读取和存储,将文件中的数据保存到结构体student 中,并将点名次数通过 save 函数保存到文件中;3、显示点名情况模块按照题目的要求将数据文件中所有学生的学号、姓名、是否缺席打印到屏幕上;4、点名算法模块通过调用自定义函数open() 和 rew() 实现点名,并将被点到的学号、姓名、是否缺席打印到屏幕上;除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共
6、 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸2 二、设计分析1、整体框架图图 1:整体框架图随机点名系统菜单模块创建名单模块点名模块显示信息模块保存模块名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸3 2、流程图 2.1. 保存函数流程图如图所示,通过rb+的方式打开文件,通过 for 循环,将结构体中的保存的学生信息保存到文件当中。yes if(fp=fopen(file
7、20.txt,rb+)=NULL) No printf(文件打开失败 n for(i=0;i8;i+) if(fwrite(&stdi,sizeof(struct student),1,fp)!=1) yes No printf(文件保存失败 n); 文件保存成功关闭文件图 2 Sa ve 函数进行保存的流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸4 2.2 、 菜单函数流程图如图3 所示,通
8、过 switch 语句进行选择,调用不同的功能函数,从而达到实现各部分功能的作用。if(fp=fopen(file20.txt,ab+)=NULL) yes No 文件打开失败 Exit(0) for(i=0;i8;i+) scanf(%d,&c);switch(c);While(1) 真Case 1 否开始点名真 Case 2 否信息统计真Case 3; 否学生信息添加 Case 4 退出图 3:菜单模块的流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 20 页
9、- - - - - - - - - 沈阳航空航天大学设计用纸5 2.3 、点名函数流程图4 所示,通过采用随机数语句随机出数字 0-7,然后运用 switch 语句,通过 strcmp 函数,将结构体中保存的学生编号同固定编号比较, 如果相同则输出该编号对应的学生的信息numb=rand()%8+1switch(numb) 真case Case1 否strcpy(temp,20013011001)真Case2 strcpy(temp,20013011002)真Case3 trcpy(temp,20013011003). . . . . 真Case8 否 For(i=0,in,i+)yes no
10、 输出 peoi.num,peoi.name图 4:点名函数流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸6 三、主要界面截图图 5.主界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸7 图 6 开始
11、点名图 7 显示所有同学的点名情况名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸8 图 8 保存点名图 9 保存点名名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸9 四、技术要点1、结构体的定义并把原始信
12、息一同定义在结构体成员中,是程序的核心内容之一void main() int i,n; int c; FILE *fp; if(fp=fopen(f:myfile.txt,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); 从上面的定义中可以看出, 结构体类型定义中成员项都有确定的类型和名字,
13、而要使用结构体类型的数据,必须经过两个步骤:先由关键字struct和用户定义的结构体名来说明类型,然后在由它们说明变量。2、void write()是自定义函数它的主要用途是打开预存的学生的信息,并把它显示在屏幕上给老师点名。程序如下:void write() FILE *fp;/定义文件指针 / int n,i; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸10 if(fp=fopen(f:my
14、file.txt,a)=NULL) /如果文件已经存在,可以追加学生信息 if(fp=fopen(f:myfile.txt,w)=NULL) / 文件不存在时,创建新文件,输入学生信息 printf(文件打开失败! n); return; for(i=0;iN;i+) fprintf(fp,%st%st%dtn,sti.num,sti.name,sti.data); /把学生信息存放到文件中/ fclose(fp); 3 、void save(student peo) FILE *fp; fp=fopen(f:myfile.txt,r+); int i,n; for(i=0;iN;i+) fp
15、rintf(fp,%st%st%dtn,peoi.num,peoi.name,peoi.data); fclose(fp); void save(student peo) FILE *fp; fp=fopen(f:myfile.txt,r+); int i,n; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸11 for(i=0;iN;i+) fprintf(fp,%st%st%dtn,peoi.n
16、um,peoi.name,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); 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;
17、break; case b:h=0; for(i=0;i7;i+) fread(&sti,sizeof(struct student),1,fp); printf(%dt%st%cn,sti.num,sti.name,sti.data); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸12 4、void save() 是保存学生信息的自定义函数,主要将修改后的学生信息保存到file20.txt文档中
18、去,实现保存功能。程序如下:void save(student peo) FILE *fp; fp=fopen(f:myfile.txt,r+); int i,n; for(i=0;iN;i+) fprintf(fp,%st%st%dtn,peoi.num,peoi.name,peoi.data); fclose(fp); 在上面的程序段中,用到了三个调用函数语句进行操作,尽管在程序化设计中有些重复,但其很方便,应用及操作比较简单。比如 void open() 语句是为了打开 file20.txt文件并输出学生情况进行点名, void rew()语句点名是进行信息统计,void save()是
19、保存功能的函数,通过它实现了学生信息的添加及保存。五、个人总结在此次课设之前我C语言学的一般,只能勉强应付考试,很多概念都非常模糊记不清楚。虽然,我的编程题目并不算难,但是,在这一周的时间里,经过不断的学习与努力及与同学进行探讨,还有老师的指导,我的C语言编程终于能圆满完成。虽然程序还有一定的瑕渍,但我以尽力完成了。我感到C语言程序设计确实是一门很有用的学科,所以这次课设并不是一个结束,而是一个开始,一个对C语言更深入学习的开始。六、参考文献1 谭浩强C程序设计北京:清华大学出版社, 2005 2 Prata , s. C Primer Plus. 北京:人民邮电出版社,名师资料总结 - -
20、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸13 2005 七、源程序#include #include #include #include #define N 8 struct student char num20; char name10; int data; st8=20013011001,杜 永宁 ,0,20013011002,王传华,0,20013011003,殷泳,0,20013011004,杨柳青,0,2
21、0013011005,王丽 ,0, 20013011006,张华,0,20013011007,白雪,0,20013011008, 薛峰 ,0; void menu() printf(*n); printf(*MENU*n); printf(*欢迎使用教师上课点名系统*n); printf(* 输 入1 : 开 始 点 名*n); printf(* 输入2:显示所有同学点名情况*n); printf(* 输 入3 : 保 存 点 名*n); printf(* 输 入4: 退 出*n); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
22、- 名师精心整理 - - - - - - - 第 16 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸14 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;iN;i+) fprintf(fp,%st%st%dtn,s
23、ti.num,sti.name,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; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 20 页 -
24、- - - - - - - - 沈阳航空航天大学设计用纸15 else/文件存在时 / for(i=0;!feof(fp);i+)/用循环将文件中的数据读入到结构体中/ fscanf(fp,%s %s %d n,peoi.num,peoi.name,&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; cas
25、e 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,20013011008);break; for(i=0;iN;i+) if(strcmp(temp,
26、peoi.num)=0) break;/先找到要修改的职工号/ printf(%st%sn,peoi.num,peoi.name); peoi.data+; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸16 void show(student peo) int i,n; for(i=0;iN;i+) printf(%st%st%dn,peoi.num,peoi.name,peoi.data); v
27、oid save(student peo) FILE *fp; fp=fopen(f:myfile.txt,r+); int i,n; for(i=0;iN;i+) fprintf(fp,%st%st%dtn,peoi.num,peoi.name,peoi.data); fclose(fp); void main() int i,n; int c; FILE *fp; if(fp=fopen(f:myfile.txt,r)=NULL)/文件不存在的时候/ write(); else n=reads(st); menu(); while(1) scanf(%d,&c); switch(c) ca
28、se 1:rank_name(st);break; case 2:show(st);break; case 3: save(st);break; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 20 页 - - - - - - - - - 沈阳航空航天大学设计用纸17 case 4:exit(0); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 20 页 - - - - - - - - -