教师签到系统课程设计报告.docx
《教师签到系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《教师签到系统课程设计报告.docx(15页珍藏版)》请在冰点文库上搜索。
![教师签到系统课程设计报告.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/fbdd0e68-74cc-4c86-b49e-7540f147c3a6/fbdd0e68-74cc-4c86-b49e-7540f147c3a61.gif)
教师签到系统课程设计报告
沈阳航空航天大学
课程设计报告
课程设计名称:
C语言课程设计
课程设计题目:
(与任务书的题目名称一致)
院(系):
专业:
班级:
学号:
姓名:
指导教师:
完成日期:
2011年7月22日
目录
第1章题目与概要设计1
1.1题目的内容与要求1
1.2概要设计1
第2章详细设计2
2.1主模块2
2.2读盘模块3
2.3签到模块4
2.4排序模块5
2.5统计模块6
第3章调试分析7
第4章执行结果8
参考文献10
附录(程序清单)11
第1章题目与概要设计
1.1题目的内容与要求
课程设计的内容是……。
具体要求如下:
本节内容参照任务书,但是不要照抄,用自己的话描述
(1)……
(2)……
……
1.2概要设计
(此处用语言、图表等描述对该题目的总体解决方案)
…
图1.1功能模块图
本节描述程序分为几个模块,简述每个模块的功能,画出功能模块图。
注意图必须写图号,图号规则是图节号.图的序号,本图是第一节的第一个图,所以叫图1.1。
下一节的第一个图叫图2.1,下一节的第二个图叫图2.2,依次类推。
在描述部分必须提到所画的图号。
第2章详细设计
2.1主模块
(此处按模块功能详细介绍具体实现的细节,可通过流程图或伪语言来描述,图要有图标,表要有表题,不能只有图或表,没有文字叙述,图或表前要有语言介绍,图或表后若有说明也要写清楚。
)
图2.1主模块流程图
2.2读盘模块
图2.2读盘模块流程图
2.3签到模块
图2.3签到模块流程图
2.4排序模块
图2.4排序模块流程图
2.5统计模块
图2.5统计模块流程图
本节主要描述每个模块的具体功能,对于主要的模块需要画程序流程图,本范例给的是只要能描述程序逻辑即可。
注意,必须对所画的图进行文字描述。
图号和使用同上节所示。
第3章调试分析
(描述程序调试,测试的详细过,将遇到的问题和解决方法描述清楚)
1.从文件读取信息最后一个信息总是读不到
原因:
从文件读到链表里不同于直接输入链表,差别就在于
直接输入时最后一个作为判断条件不输入到链表里
解决方法:
将链表建立是的最后一个指针向后移一位即
p2->next=p1;
p1->next=NULL;
2.输出到屏幕上时个字符距离不同一,看起来比较杂乱
原因:
字符输出格式没有进行控制
解决方法:
在printf里百分号前加上需要的空格或数字
3.排序是由于地址比较多,非常容易搞混
解决方法:
将定义的各个地址都用直接意思的单词代替,
便于使用
第4章执行结果
运行操作及结果:
1)在文件中输入3名教师信息
读盘模块显示如下:
签到模块显示如下:
排序模块显示如下:
统计模块显示如下:
2)在文件中输入5名教师信息
读盘模块显示如下:
签到模块显示如下:
排序模块显示如下:
统计模块显示如下:
参考文献
[1]谭浩强《C语言设计(第三版)》清华大学出版社2005
[2]谭浩强《数据结构》清华大学出版社2005
[3]姜学军《数据结构》中国轻工业出版社2004
[4]张磊《C语言程序设计》高等教育出版社2002
[5]郭大海《实用C语言》中国电力出版社2000
附录(程序清单)
代码:
#include
#include
#include
#include
#defineLENsizeof(structteacher)
#defineNULL0
structteacher
{
longnum;
charname[20];
floatshijian;
structteacher*next;
};/*建立结构体*/
intn=0;
structteacher*duqu(void)/*教师信息的读盘操作*/
{FILE*fp;
intn=0;
structteacher*p1,*p2,*head;
if((fp=fopen("F:
\\AA.txt","r"))==NULL)
{
printf("cannotopenthefile");
exit(0);
}
p1=p2=(structteacher*)malloc(LEN);
head=NULL;
printf("读入教师号信息:
\n");
while(fscanf(fp,"%ld%s%f",&p1->num,p1->name,&p1->shijian)!
=-1)
{n=n+1;
printf("%ld%s%f",p1->num,p1->name,p1->shijian);
printf("\n");
if(n==1){head=p1;}
else{p2->next=p1;}
p2=p1;
p1=(structteacher*)malloc(LEN);
}
p2->next=NULL;
fclose(fp);
returnhead;}
structteacher*change(structteacher*head)/*教师按教师号签到*/
{structteacher*p1;
intj;
longnum;
floatshijian;
p1=head;
printf("\n教师按教师号签到:
\n");
while(p1!
=NULL)
{n=n+1;
p1=p1->next;}
for(j=0;j{
printf("输入教师号签到:
");
scanf("%ld",&num);
p1=head;
while(num!
=p1->num)
p1=p1->next;
printf("请输入时间:
");
scanf("%f",&shijian);
p1->shijian=shijian;
}
return(head);
}
structteacher*sort(structteacher*head)/*统计排序*/
{
structteacher*p1;
inti,j,n=0,k=0;
structmember/*建立结构体,将链表中的信息复制到结构体中,用于冒泡排序*/
{
longnum;
charname[20];
floatshijian;
}tea[20],mem;
p1=head;
while(p1!
=NULL)
{n=n+1;
p1=p1->next;}
p1=head;
while(p1!
=NULL)
{
if(k{
tea[k].num=p1->num;
strcpy(tea[k].name,p1->name);
tea[k].shijian=p1->shijian;
}
k++;
p1=p1->next;
}
/*通过签到时间排序*/
printf("\n通过签到时间排序:
");
printf("\n");
for(j=0;jfor(i=0;iif(tea[i].shijian>tea[i+1].shijian)
{mem=tea[i];
tea[i]=tea[i+1];
tea[i+1]=mem;
}
for(i=0;i{printf("%ld%s%f",tea[i].num,tea[i].name,tea[i].shijian);
printf("\n");
}
/*通过教师号排序*/
printf("\n通过教师号排序:
\n");
printf("\n");
{for(j=0;jfor(i=0;iif(tea[i].num>tea[i+1].num)
{mem=tea[i];
tea[i]=tea[i+1];
tea[i+1]=mem;
}
for(i=0;i{printf("%ld%s%f",tea[i].num,tea[i].name,tea[i].shijian);
printf("\n");
}
}
return(head);
}
structteacher*demand(structteacher*head)/*统计迟到教师*/
{
structteacher*p1;
p1=head;
printf("\n统计迟到教师:
\n");
while(p1->shijian>=8.00)
{printf("%ld%s%f\n",p1->num,p1->name,p1->shijian);
p1=p1->next;}
return(head);
}
voidmain()
{structteacher*head;
head=duqu();
head=change(head);
head=sort(head);
head=demand(head);
}
课程设计总结:
学生填写感受,学到的东西等等,不能太少
这是我大学里的第一个课程设计,从接到题开始就觉得困难有点多,有很多东西是平时并没有完全学过的,更多要自己去查找资料,去问身边知道的人。
课设的程序一般都比较大,跟平时上机题有很大区别,要运用到很多方面的知识。
开始编程序的时候就暴露了平时学习不扎实的漏洞,很多时候要通过看书来解决一些基本的问题,所以我感觉书本学习还是要放在第一位的。
在编完一段程序后,自己调试显得很重要,很多自己不知道的知识都是要从调程序里得到,当然也有很多从其他人那里学到,通过自己多次调程序,还有其他同学的请教,自己对知识又重新理解了一遍。
在做课设期间我也认识了团队的力量,同样一个程序在不同人眼里指认的错误是不一样的,一个人能看出的错误可能是一方面的,只有向其人不断地讨教才能让程序更加的完善。
做出一个程序之后,然后要做出一个完整的报告,虽然报告的工作量并不比程序的工作量小,但这个报告会使程序更加完善,让自己对程序的理解更深。
这是大学课设的开始,做一次课设就是对自己能力的一个直接的提升,虽然能力是平时自己一点一滴积累起来的,但这次课设让我们知道自己的不足。
课设也能弥补自己以前没学扎实的部分。
当做完自己的设计,有一种如释重负的感觉,虽然写下自己的总结是我还不知道自己能不能过答疑,但这次课设自己得到已远比结果更重要。
学生填写感受,学到的东西等等,不能太少
指导教师评语:
指导教师(签字):
年月日
课程设计成绩