上课随机点名系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计实习报告
专业:地球物理与空间信息学院
学号:
班级序号:
姓名:* * *
指导教师:张*
C语言程序设计报告
(实习日期: 2013-12至2014-1)
一、C语言课程设计的目的: (3)
二、题目:教师上课点名系统 (3)
三、总体设计 (4)
四、详细设计 (4)
1、结构体 (4)
2、主函数 (5)
3、各功能模块设计 (8)
(1)点名模块 (8)
(2)次数统计模块 (9)
(3)次数清零模块 (10)
五、上机操作 (11)
1、进入界面 (11)
2、进行点名 (12)
3、点名次数查询 (13)
六、算法和系统的优缺点 (16)
七、源程序(附录) (16)
一、C语言课程设计的目的:
高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼同学的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。
二、题目:教师上课点名系统
制作一个自动点名系统使之有以下功能:
1、每次选取相应的功能,系统随即抽取一个学生,显示给老师,
用做点名。
2、学生名单存在一个文本文件students.txt中。
3、可以使用另一个文本文件,记录学生被点名的次数,或在
students.txt文件中加入一个记录学生被点名次数的字段。
4、一般用文本界面显示菜单,自行设计和完成菜单功能,供老师
点选,可以考虑动态显示系统选择的过程,最好能设计成图形界面。
5、每个学生被点中的概率和次数尽量一样,不能出现一个学生被
点两次了,还有学生没被点中的情况。
三、总体设计
根据分析,整个系统可以设计为以下四个部分:
四、详细设计
1、结构体
struct student {
int num;
char name[20];
int time;
}std[SIZE]; 上课点名系统
读取数据进行点名次数统计次数归零
2、主函数
主函数的设计用来打开文本文件,并提供数据输入和数据处理以及三个函数的调用,其中各功能模块用菜单方式选择。
void main()
{
void function1();
void function2();
void function3();
}
主函数具体的程序如下:
void main()
{
void kaishidianming();
void dianmingcishu();
void cishuguiling(); /*对被调用函数的声明*/
char s;
FILE * fp;
if((fp=fopen("D:\\c\\kechengsheji\\students.txt","r+"))==NULL) {
printf("cannot open this file\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)点名模块 void kaishidianming() { 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 ); } else goto loop; }