上课随机点名系统.docx
- 文档编号:25343528
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:15
- 大小:616.54KB
上课随机点名系统.docx
《上课随机点名系统.docx》由会员分享,可在线阅读,更多相关《上课随机点名系统.docx(15页珍藏版)》请在冰豆网上搜索。
上课随机点名系统
C语言课程设计实习报告
专业:
地球物理与空间信息学院
学号:
班级序号:
姓名:
***
指导教师:
张*
C语言程序设计报告
(实习日期:
2013-12至2014-1)
一、C语言课程设计的目的:
高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。
其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼同学的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力。
二、题目:
教师上课点名系统
制作一个自动点名系统使之有以下功能:
1、每次选取相应的功能,系统随即抽取一个学生,显示给老师,用做点名。
2、学生名单存在一个文本文件students.txt中。
3、可以使用另一个文本文件,记录学生被点名的次数,或在students.txt文件中加入一个记录学生被点名次数的字段。
4、一般用文本界面显示菜单,自行设计和完成菜单功能,供老师点选,可以考虑动态显示系统选择的过程,最好能设计成图形界面。
5、每个学生被点中的概率和次数尽量一样,不能出现一个学生被点两次了,还有学生没被点中的情况。
三、总体设计
根据分析,整个系统可以设计为以下四个部分:
四、详细设计
1、结构体
structstudent
{
intnum;
charname[20];
inttime;
}std[SIZE];
2、主函数
主函数的设计用来打开文本文件,并提供数据输入和数据处理以及三个函数的调用,其中各功能模块用菜单方式选择。
voidmain()
{
voidfunction1();
voidfunction2();
voidfunction3();
}
主函数具体的程序如下:
voidmain()
{
voidkaishidianming();
voiddianmingcishu();
voidcishuguiling();/*对被调用函数的声明*/
chars;
FILE*fp;
if((fp=fopen("D:
\\c\\kechengsheji\\students.txt","r+"))==NULL)
{
printf("cannotopenthisfile\n");
exit(0);
}/*打开文本文件*/
for(i=0;i { fscanf(fp,"%d%s",&std[i].num,std[i].name); std[i].time=0; }/*读取文本文件保存在内存中*/ printf("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("-*-*-*-*-*-点名了请小心! -*-*-*-*-*-\n"); printf("-*-*-*输入1: 开始点名*-*-*-\n"); printf("-*-*-*输入2: 点名情况*-*-*-\n"); printf("-*-*-*输入3: 次数归零*-*-*-\n"); printf("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n\n"); for(;;) { s=getchar(); switch(s) { case'1': kaishidianming(); break; case'2': dianmingcishu(); break; case'3': cishuguiling(); break; }/*使用switch语句进行选择实现不同函数功能*/ } fclose(fp); } 主函数的流程图如下: 开始 显示菜单功能 判断 调用函数实现各功能 结束 3、各功能模块设计 (1)点名模块 voidkaishidianming() { l++; k=k+l/(SIZE+1); loop: srand((unsigned)time(NULL));/*产生随机数进行点名*/ for(m=0;m<1;m++) { n=rand()%57; if(std[n].time { std[n].time++; printf("学号\t\t姓名\t\t被点次数\n"); printf("%d%-15d%-10s%10d\n",t,std[n].num,std[n].name,std[n].time); } elsegotoloop; } }点名模块流程图如下: 不公平 (2)次数统计模块 voiddianmingcishu() { printf("学号\t\t姓名\t\t被点次数\n"); for(i=0;i printf("%d%-15d%-10s%10d\n",t,std[i].num,std[i].name,std[i].time); } (3)次数清零模块 voidcishuguiling() { for(i=0;i std[i].time=0; k=1; l=0; printf("点名次数已归零\n"); } 五、上机操作 1、进入界面 2、进行点名 3、点名次数查询 4、次数归零 学习心得 在以前C程序设计的学习中,我们只需要写几个简单的程序,完成一些简单的功能,输入手段也都是单一的从键盘输入,从未涉及到对文件的操作,所以书本上九、十章的内容基本上没怎么掌握。 但是通过这次C语言课程设计的学习,我感受到了独自完成一个程序去实现一个目的快乐,也增强了对于C语言相关知识的了解。 当然,过程不是一帆风顺的。 为了完成程序,由于对文件操作内容的不熟悉,我首先把课本看了几遍,弄清楚了一些基本的知识。 还有在程序编写的过程中,错误频出,虽然经常是一些简单的问题,但寻找错误的过程总是那么的痛苦。 所以,经过这次C语言课程设计,我深深的感受到了耐心和细心在程序编写中的重要性。 最后祝贺自己完成了程序! 六、算法和系统的优缺点 此系统最大的有点是简明易懂,操作方便,在一次点名过程中,实现了点名的公平性。 但每次退出点名系统后,不能对点名次数进行保存,不便于调用。 改进思路: 可以用一个文件,将点名的次数进行保存。 七、源程序(附录) #include #include #include #include #defineSIZE57 inti,n,m; intk=1,l=0,t=0;/*全局变量的定义*/ structstudent { intnum; charname[20]; inttime; }std[SIZE];/*结构体数组的定义*/ voidmain() { voidkaishidianming(); voiddianmingcishu(); voidcishuguiling();/*对被调用函数的声明*/ chars; FILE*fp; if((fp=fopen("D: \\c\\kechengsheji\\students.txt","r+"))==NULL) { printf("cannotopenthisfile\n"); exit(0); }/*打开文本文件*/ for(i=0;i { fscanf(fp,"%d%s",&std[i].num,std[i].name); std[i].time=0; }/*读取文本文件保存在内存中*/ printf("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n"); printf("-*-*-*-*-*-点名了请小心! -*-*-*-*-*-\n"); printf("-*-*-*输入1: 开始点名*-*-*-\n"); printf("-*-*-*输入2: 点名情况*-*-*-\n"); printf("-*-*-*输入3: 次数归零*-*-*-\n"); printf("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n\n"); for(;;) { s=getchar(); switch(s) { case'1': kaishidianming(); break; case'2': dianmingcishu(); break; case'3': cishuguiling(); break; }/*使用switch语句进行选择实现不同函数功能*/ } fclose(fp); } voidkaishidianming() { l++; k=k+l/(SIZE+1); loop: srand((unsigned)time(NULL));/*产生随机数进行点名*/ for(m=0;m<1;m++) { n=rand()%57; if(std[n].time { std[n].time++; printf("学号\t\t姓名\t\t被点次数\n"); printf("%d%-15d%-10s%10d\n",t,std[n].num,std[n].name,std[n].time); } elsegotoloop; } } voiddianmingcishu() { printf("学号\t\t姓名\t\t被点次数\n"); for(i=0;i printf("%d%-15d%-10s%10d\n",t,std[i].num,std[i].name,std[i].time); } voidcishuguiling() { for(i=0;i std[i].time=0; k=1; l=0; printf("点名次数已归零\n"); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上课 随机 点名 系统