04033015选择教师管理系统文档格式.docx
《04033015选择教师管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《04033015选择教师管理系统文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
(2)查询某位教师的学生人数。
(3)查询某位学生所选的教师。
(4)学生人数越多,表示该教师越受欢迎。
请按照学生人数降序打印教师名单。
说明:
file14_1.txt中数据的排列顺序是:
教师号,姓名,学生人数;
file14_2.txt中数据的排列顺序是:
学号,姓名,教师名。
三、课程设计要求
1.程序质量:
✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“选教师”、“查询教师情况”、“查询学生情况”、“降序打印教师名单”、“退出”5项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:
课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、说明书成绩
六、教师评语
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段5
四、课设总结11
五、参考文献11
六、源程序11
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个函数,它们的功能分别是:
选择教师数据函数,查询教师数据函数,查询学生数据函数,教师降序排列函数。
在这些函数当中,四个函数的实现严格按照题目的要求。
1、选择教师数据函数主要实现程序最初运行时教师数据的选择以及其后的运行中学生数据的追加功能;
2、查询教师数据函数实现的功能是按照学号对学生的数据查询学生信息;
3、查询学生数据函数实现的功能是按照教师号对教师的数据查询教师信息;
4、教师降序排列函数按照题目的具体要求实现的是选择教师人数的递减排序显示;
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
二、程序流程图
1、程序总体结构图
图1程序总体结构图
2、具体功能框图
(1)选择教师数据函数choose
图2选择教师数据函数
(2)读取教师数据reads
图3读取学生数据
(3)查询学生函数del(查询教师函数与此相似)
(4)按总分排序函数sort
(4)教师降序函数sort
图5总分排序函数
图4查询函数
图5教师降序函数
三、核心技术的实现说明及相应程序段
本程序主要由六个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。
在这些函数当中,选择数据函数和降序函数是程序中较为核心的部分,下面分别进行说明。
1、选择教师数据函数
选择数据,先列出所选教师的名单和教师号,再输入自己学号来确认学生的信息,学号需在给定的文件里所有的学生,接下来再在给定的教师里选择,教师被选择一次tch[i].num++。
具体的程序段如下:
inti,num,num_t,num_s;
{
printf("
\n教师号姓名"
);
\n1崔晓莲"
\n2朱艳明"
\n3于海霞"
\n4王林"
\n5罗育勇"
}
\n请输入学号,按回车键确认:
"
scanf("
%d"
&
num);
for(i=0;
i<
n_stu;
i++)
if(stu[i].no==num)
break;
if(i>
=n_stu)
{
printf("
无此学生信息!
return;
}
num_s=i;
\n请输入选择的教师号,按回车键确认:
n_tch;
if(tch[i].no==num)
=n_tch)
无此教师信息!
num_t=i;
strcpy(stu[num_s].t_name,tch[num_t].name);
tch[num_t].num++;
孩儿啊!
你真棒啊!
这老师嗷嗷的.刚刚的啊!
选择成功\n"
}
2、降序函数
对于教师的排序采用的排序算法是冒泡法排序,其中总分的求得是在排序的过程中实现的,这部分程序仍然调用了reads函数,整个排序过程在结构体数组teach中实现,由于排序算法涉及到两个数组元素的信息交换,因此还需要定义一个中间变量来协助。
排序函数使选教师人数数据的排列顺序发生了变化,因此也需要队员文件进行更新。
具体的程序段如下:
voidsort()/*降序打印教师名单*/
{
FILE*fp;
structteachertemp;
inti,j;
n_tch-1;
for(j=0;
j<
n_tch-1-i;
j++)
{
if(tch[j].num<
tch[j+1].num)
{
temp=tch[j];
tch[j]=tch[j+1];
tch[j+1]=temp;
}
if((fp=fopen("
d:
\\file14_1.txt"
"
w"
))==NULL)/*更新文件*/
打开文件失败!
j=1;
for(i=0;
fprintf(fp,"
%d\t%s\t%d\n"
tch[i].no,tch[i].name,tch[i].num);
fclose(fp);
if((fp=fopen("
\\file14_2.txt"
%d\t%s\t%s\n"
stu[i].no,stu[i].name,stu[i].t_name);
}
四、课设总结
通过这次一周时间的C语言课程设计,学到了很多C语言编程的相关知识和认识到自己欠缺的方面。
针对这次题目选择教师管理系统,参照老师模板,更进一步学习和了解了几种函数的运用如选择函数,查询函数,排列函数。
以前不怎么熟悉的指针文件运用,这次通过再次研究明白,成功的在自己的课题上运行。
感觉很有成就和优越感,因为第一次编写相对自己较为复杂的程序。
这次课程设计总的来说编写的较好,完成了老师的课题要求,但有扩展的地方还需多加努力才能把它做的更完美!
也感谢老师对我们的指导。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
#include<
stdio.h>
string.h>
stdlib.h>
intn_tch=0,n_stu=0;
structteacher
intno;
charname[20];
intnum;
}tch[20];
structstudent
chart_name[20];
}stu[20];
voidreads()
inti=0;
r"
))==NULL)
printf("
文件打开失败!
\n"
return;
else
!
feof(fp);
fscanf(fp,"
tch[i].no,tch[i].name,&
tch[i].num);
n_tch++;
fclose(fp);
stu[i].no,stu[i].name,stu[i].t_name);
n_stu++;
voidquery_s()/*查询学生信息*/
inti,num;
\n请输入要查询的学生学号,按回车键确认:
输入错误\n"
\n学生信息如下:
voidquery_t()/*查询教师信息*/
\n请输入要查询的教师号,按回车键确认:
\n教师信息如下:
tch[i].no,tch[i].name,tch[i].no);
voidchoose()/*选择教师*/
inti,num,num_t,num_s;
voidmenu()/*菜单*/
*************************班级成绩管理系统************************"
\n1选教师"
\n2查询学生数据"
\n3查询教师数据"
\n4降序打印教师名单"
\n5退出"
voidmain()
intn;
reads();
while
(1)
{
menu();
\n请输入您要选择的操作序号,按回车键确认:
scanf("
n);
switch(n)
case1:
choose();
break;
case2:
query_s();
case3:
query_t();
case4:
sort();
case5:
exit(0);
default:
输入错误,请输入列表中存在的序号!
\n"