电子报告.doc

上传人:文库蛋蛋多 文档编号:3256686 上传时间:2023-03-12 格式:DOC 页数:18 大小:63KB
返回 下载 相关 举报
电子报告.doc_第1页
第1页 / 共18页
电子报告.doc_第2页
第2页 / 共18页
电子报告.doc_第3页
第3页 / 共18页
电子报告.doc_第4页
第4页 / 共18页
电子报告.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《电子报告.doc》由会员分享,可在线阅读,更多相关《电子报告.doc(18页珍藏版)》请在三一办公上搜索。

1、沈 阳 航 空 工 业 学 院 课程设计学 号 200604021016 班 级 6402101姓 名 李银光指导教师 王晓岩2007年 9 月 15 日沈阳航空工业学院课程设计任务书院系:电子 专业:电子信息工程 班级:6402101学号:200604021016 题目:选择教师管理系统一、 课程设计时间 2007年9月10日至2007年9月14日,共计1周,20学时二、 课程设计内容 用c语言编写软件完成以下内容: 有5位教师(参见文件file22_1.txt)同时讲同一门课,而学习此课程的学生(参见文件file22_2.txt)可以自由选取上课教师,但每个学生只能选1个老师。请模拟这个“

2、选教师”系统。功能应包括以下方面: 学生选辣椒室(包括改选)。 查询某位教师的学生人数。 查询某位学生所选的教师。 学生人数越多,表示该教师越受欢迎。请按照学生人数降序打印教师名单。 说明:file22_1.txt中数据的排列顺序是:教师号,姓名,学生人数;file22_2.txt中数据的排列顺序是:学号,姓名,教师。三、 课程设计要求 1.程序质量: 观测结构化的程序设计思想。 用户界面友好,功能明确,操作方面。 用户界面中的菜单至少应该包括“选教师”、“查询教师情况”、“查询学生情况”、“降序打印教师名单”、“退出”5选项。 2课程设计说明书: 课程结束后,上交课程设计说明书和源程序。课程

3、设计说明书的格式和内容参见提供的摸板。指导教师: 学生签名: 目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序段6四、个人总结12五、参考文献12六、源程序12一、需求分析经过我对c语言的所知还有本程序的题目可知分析,整个程序的设计实现大致分为五大模块,其中每一个模块对应一个函数,他们的功能分别是:选择老师、查询老师所选的学生人数、查询学生所选的老师、按选择老师的学生人数的降次顺序打印老师的名单。这些函数的实现严格按照题目的要求,清晰的表达了题设的内容。1、按课程设计需求的内容搜索老师的信息而且将选择的信息输入到file22_1里面;2、查询老师的信息:首先输入老师的姓名,之

4、后在屏幕上现实选择该老师的人数若没有选择该老师的学生则现实人数为0;3、查询学生所选的老师:该过程首先写入学生的学号,屏幕上就会显示该老师的姓名;4、最后一个程序要求就是在屏幕上输出所有文件夹的内容,并且是按降次的顺序现实file22_1中的内容。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个学生记录都包含学号、姓名,以及该学生所选择老师的姓名,而对老师则有老师的 姓名和选择该老师的学生人数,在程序当中,将学生和老师的记录类型定义为结构体类型,可以对文件中的资料进行读取,并显示和改选。尤其在实行资料的全部进程中都是主要按现

5、实文件夹1中的内容为主。而且数据处于文件中乐意永久保存,保证每次运行程序都可以采用原来的数据。二、程序流程图1、 程序总体结构图 程序流程图 设置界面函数 输入教师和 学生选择 查看教师 查看学生选 教师被选次数学生信息 教师 信息 教师情况 降序排列 主函数 if(fp=fopen(“d:fill22_1.txt”,“w”)=NULL) 是 否 输出 从键盘输入信息存入文件 文件打不 是否继续开 是 否 继续 输入学生信息并存入文件 输入 是 否 继续 返回 输入if(fp=fopen(“d:fill22_1.txt”,“r+”)=NULL) 是 否 选择要选课的学生 选择教师代码 for(

6、i=0;iSIZE;i+) 写入文件 输出成功界面 返回图1学生选择教师。 If(fp=fopen(“d:file22_2.txt”,“r”)=NULL)是 否输入学生学号 文件 打不 for(i=0;isize;i+) 开 if(stui.number=a) k+=1 输出结果 if(fp=fopen(“d: file22_1.txt”,“r”)=NULL是 否 文件 输入老师号码 打不 for(i=0;iSIZE;i+) 开 读入文件 if(teai.number=a) teai.yxjs=1;k+=1 输出结果 图2查询某位教师的学生人数。 图3某位学生所选的教师。If(fp=fopen

7、(“d:file22_2.txt”,“r”)=NULL)是 否输入学生学号 文件 打不 for(i=0;isize;i+) 开 if(stui.number=a) k+=1 输出结果if(fp=fopen(d;file22_1.txt,r)=NULL)是 否 输入教师号码 for(i=0;iSIZE;i+)文件 打不 读入文件开 for(j=0;jSIZE;j+)for(i=0;iteai+1.yxjs 真 假 teai.yxjs teai+1.yxjs 输出结果 图4学生人数越多,表示该教师越受欢迎。请按照学生人数降序打印教师名单。三、核心技术的实现说明及相应程序段本程序主要由四个自定义函数

8、和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。对于这些函数,下面分别进行说明。1、学生自定义选择老师 要使文件file22_1.txt显示,首先应确定打开文件,并定义了个结构体数组,将该文件中的各个数据赋予结构体数组的各个成员,并将输出的结果输入到file22_1的文件里面。具体的程序段如下:void option() FILE *teacher,*student; int i,j; long int num_teacher,num_student; printf(请输入你的学号:n); scanf(%ld,&num_student) ; printf(请选老师:n

9、); scanf(%ld,&num_teacher); for(i=0;isize;i+) if(num_student=Student_listi.num_s) break; for(j=0;j5;j+) if(num_teacher=Teacher_listj.num_t) strcpy(Student_listi.teacher,Teacher_listj.name); Teacher_listj.count+; break; if(teacher=fopen(G:file22_1.txt,w)=NULL) printf(找不到这个文件,请确认文件输入是不否错误n); return;fo

10、r(i=0;i5;i+)fprintf(teacher,%4d %10s %4dn,Teacher_listi.num_t,Teacher_listi.name,Teacher_listi.count);if(student=fopen(G:file22_2.txt,w)=NULL) printf(找不到这个文件,请确认文件输入是不否错误n);return;for(i=0;isize;i+)fprintf(student,%10ld %10s %10sn,Student_listi.num_s,Student_listi.name,Student_listi.teacher); fclose(

11、teacher); fclose(student);2、查询选择老师的人数 首先应该学生选择老师,然后把所选择的信息写入file22_1的文件里面。void search_T() int i; char name20; printf(请输入你想查询老师的姓名:n) ; scanf(%s,name); for(i=0;i5) printf(对不起,没有这个老师n); printf(%10dn,Teacher_listi.count);3、查询学生所选则的老师首先应该读取老师的文件夹里的内容然后在搜索老师的信息,最后就是把老师的所有信息输出到屏幕上,程序如下void search_S() int

12、i; long num_student; printf(请输入你的学号:n); scanf(%ld,&num_student); for(i=0;isize) printf(the student not exsited); printf(%10sn,Student_listi.teacher);void print() int i,j; char temp20; for(i=0;i5;i+) for(j=0;j5-i;j+) if(Teacher_listj.countTeacher_listj+1.count) strcpy(temp,Teacher_listj.name); strcpy

13、(Teacher_listj.name,Teacher_listj+1.name); strcpy(Teacher_listj+1.name,temp); printf(按降序打印教师名单n); for(i=0;i5;i+) printf(%10sn,Teacher_listi.name);printf(n);四、个人总结 这个学期一开学就有C语言的课程设计,因为放假没怎么看过,这周做课设,而且需要独立完成。 对我来说有点困难,当要开始设计的时候,文件的操作很吃力,在整个课程设计完成后,总的感觉是收获非常大。 自己一边编程序一边在电脑里输入,经过几天的编程,差不多编完了,然后一运行竟然20多点

14、错误,当时是非常失望,但后来经过细细的检查修改,后来综于把程序做的一点问题没有,这个是非常重要的过程,在改错的过程中懂了不少对C语言的知识,我觉得开这门课程设计课非常有用,以后更对C语言感兴趣,有了学好C语言的新动力。这次C语言课程设计结束了,以后很多地方会用上C语言,我相信通过这次设计打下了坚实的基础。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006六、源程序#includestdio.h#includestdlib.h#includestring.h#define size 10struct Teacher

15、 int num_t; char name20; int count; Teacher_list5;struct Student long int num_s; char name20; char teacher20;Student_listsize;void load() int i;FILE *teacher,*student;if(teacher=fopen(G:file22_1.txt,r)=NULL) printf(找不到这个文件,请确认文件输入是不否错误n); exit(0);if(student=fopen(G:file22_2.txt,r)=NULL) printf(找不到这个

16、文件,请确认文件输入是不否错误n); exit(0);for(i=0;i5;i+)fscanf(teacher,%d%s%d,&Teacher_listi.num_t,Teacher_listi.name,&Teacher_listi.count);for(i=0;isize;i+)fscanf(student,%ld%s%s,&Student_listi.num_s,Student_listi.name,Student_listi.teacher); fclose(teacher); fclose(student);void option() FILE *teacher,*student;

17、int i,j; long int num_teacher,num_student; printf(请输入你的学号:n); scanf(%ld,&num_student) ; printf(请选老师:n); scanf(%ld,&num_teacher); for(i=0;isize;i+) if(num_student=Student_listi.num_s) break; for(j=0;j5;j+) if(num_teacher=Teacher_listj.num_t) strcpy(Student_listi.teacher,Teacher_listj.name); Teacher_l

18、istj.count+; break; if(teacher=fopen(G:file22_1.txt,w)=NULL) printf(找不到这个文件,请确认文件输入是不否错误n); return;for(i=0;i5;i+)fprintf(teacher,%4d %10s %4dn,Teacher_listi.num_t,Teacher_listi.name,Teacher_listi.count);if(student=fopen(G:file22_2.txt,w)=NULL) printf(找不到这个文件,请确认文件输入是不否错误n);return;for(i=0;isize;i+)fp

19、rintf(student,%10ld %10s %10sn,Student_listi.num_s,Student_listi.name,Student_listi.teacher); fclose(teacher); fclose(student);void search_T() int i; char name20; printf(请输入你想查询老师的姓名:n) ; scanf(%s,name); for(i=0;i5) printf(对不起,没有这个老师n); printf(%10dn,Teacher_listi.count);void search_S() int i; long n

20、um_student; printf(请输入你的学号:n); scanf(%ld,&num_student); for(i=0;isize) printf(the student not exsited); printf(%10sn,Student_listi.teacher);void print() int i,j; char temp20; for(i=0;i5;i+) for(j=0;j5-i;j+) if(Teacher_listj.countTeacher_listj+1.count) strcpy(temp,Teacher_listj.name); strcpy(Teacher_

21、listj.name,Teacher_listj+1.name); strcpy(Teacher_listj+1.name,temp); printf(按降序打印教师名单n); for(i=0;i5;i+) printf(%10sn,Teacher_listi.name);printf(n);main() int x; load(); while(1) printf(1 选老师n); printf(2 查询某位老师的学生数n); printf(3 查询某位学生所选老师n); printf(4 按降序打印教师名单n); printf(5 退出n); printf(请选择你所需要的操作n); scanf(%d,&x);switch(x) case 1:option();break; case 2:search_T();break; case 3:search_S();break; case 4:print();break; case 5:exit(0);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号