课 程 设 计 任 务 书
一、课程设计题目:教室管理系统
二、课程设计工作自 2007 年 9 月 10 日至 2006 年 9 月 14 日止
三、课程设计内容:
已知学校可用的教室都存放在文件 file25_1.txt 中;每天的上课时间段存
放在文件 file25_2.txt 中;教学周 1~16 周;每周仅允许在周 1~周 5 上课。
某位任课教师想通过你编写的软件申请上课教室。教师申请时,将提供
以下信息:教学周,星期,课节,教室。例如:第 3 周,周 4,1~2 节,B
楼 112 教室。
如果此教室的此时间段已经被占用,则提示教师,另作其它申请;否则,
批准申请,并及时将新的占用信息写入 file25_1.txt。
说明:file25_1.txt 文件中每行的内容按照顺序为:教学楼号,教室号,
若干占用信息。
四、课程设计要求:
程序质量:
贯彻结构化程序设计思想。
用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
封面
课程设计任务书
目录
需求分析(分析题目的要求)
程序流程图(总体流程图和主要功能模块流程图)
核心技术的实现说明及相应程序段
个人总结
参考资料
源程序及适当的注释
指导教师:________
学生签名:________
沈 阳 航 院 设 计 用 纸
目录
一、需求分析..................................................1
二、程序流程图..............................................5
三、核心技术的实现说明及相应程序段......8
四、个人总结................................................13
五、参考文献................................................14
六、源程序....................................................14
I
沈 阳 航 院 设 计 用 纸
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实
现大致分为六个模块,其中每一个模块对应一个函数,他
们的功能分别是:读取教室数据函数(load),输入数据函数
(write),确定请求函数(complet),显示菜单函数(menu)。
1、读取教室数据函数 主要实现程序最初运行时读取教
室占用信息并且将其显示至选课系统界面上.
2、输入数据函数 实现的功能是用户借以确认要选的教
室是否被占用.
3、确定请求函数 按照题目的具体要求将新的占用信息
写入到指定的文件中去.
4、显示菜单函数 显示友好的用户界面,引导用户使用该
软件
除上面介绍的功能之外,程序还具有退出功能,可以
在程序的一次运行当中循环执行所有的功能,并根据需要
终止程序的执行。
每一个教室信息都包括教学楼号,教室号,是被占
1
沈 阳 航 院 设 计 用 纸
用.在程序当中,将教室使用信息类型定义为结构体类
型 ,添 加以 及追 加的 教室 信息 直接 写 R 入 D 盘的
file25_1.txt 文件中,其他函数每次对教室占用信息的访
问,其数据来源都是 file25_1.txt 文件,这样做不但可
以保证教室信息数据的一致性,而且可以对教室信息
进行永久保存,保证每次运行程序都可以采用原来的
数据。
程序整体流程图及各子函数流程图
1.程序整体流程图
打开文件
读取文件
读出数据
输入请求
数据分析
保存数据
显示结果
退出系统
2
沈 阳 航 院 设 计 用 纸
1 程序总体结构图
(1)读取输入请求
打开文件
请 输 入
1 3
4
读取数据
返 回
(2)数据分析
输入 2
building
假
classroom
A B 真
111,112
121,122 真
information
假
3-4-1~2, 5-4-5~6 真
假
1、 具体功能框图
(1)读取教室数据函数(load)
3
沈 阳 航 院 设 计 用 纸
读写方式打开 D 盘文件 flie25_1.txt 不成功
真
假
循环变量 i=1
当 i 小于 8 时
读取文件中的教室信息
输出“不能打开该文件”
输出教学楼号 教室号 占用信息
循环变量 i=1
当 i 小于 8 时
依次从文件中输出教室信息
回到显示菜单函数(menu)
(2)输入数据函数(write)
输出教学楼号
从键盘输入要查询的教学楼号
输出教室号
从键盘输入要查询的教室号
输出上课信息
从键盘输入要上课的时间段
循环变量 i=1
当 i 小于 8 时
依次将输入的信息与文件中原有的信息进行比较,结果相等?
真
假
输出“对不起,该教室已被占用!”
输出“可以使用该教室”
将输入的占用信息保存到原文件中
continue
回到显示菜单函数(menu)
4
沈 阳 航 院 设 计 用 纸
(3) 确定请求函数(complet)
2) 不 是
return;
输出 “ 确 定?
1)是
2)不是”
1)
是
打开 D 盘文件 flie25_1.txt 不成功
真
假
输出“不能打
开该文件
循环变量 i=1
当 i 小于 8 时
依次将新的结构体
数组里的信息写到
原文件中
关闭文件
回到显示菜单函数(menu)
return;
(4) 显示菜单函数(menu)
真
输出表格
输入值 c=1?
假
读取教室数据
真
输入值 c=2?
假
函数(load)
输入值 c=3?
输入数据函数 真
假
(write) 确定请求
输入 c=
函数
假
(complet) 退出 continue
真 4
5
沈 阳 航 院 设 计 用 纸
三、核心技术的实现说明及相应程序段
本程序主要由四个自定义函数和一个主函数组成,其
中主函数以菜单的形式调用其他函数来实现要求的所有
功能。在这些函数当中,读取教室数据函数(load)、输
入数据函数(write)和确定请求函数(complet)是程序中较为
核心的部分,下面分别进行说明
1 读取教室数据函数
读取教室数据函数是在文件 file25_1.txt 已经存在的情
况下,此时文件要以读写方式打开,这样才可以保证以前
已经存在的数据不丢失。具体的程序段如下:
void load_()
{
int i;
FILE *fp;
if((fp=fopen("C:\\file25_1.txt","rb"))==NULL)
{printf("不能打开该文件/n");
}
for(i=0;i<8;i++)
fscanf(fp,"%s %d
%s",&cla[i].building,&cla[i].classroom,&cla[i].information) ;
6