《C语言程序设计实训说明书-某学院教学信息管理系统 .docx》由会员分享,可在线阅读,更多相关《C语言程序设计实训说明书-某学院教学信息管理系统 .docx(61页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结中北高校程序设计实训说 明 书软件工程学 号:1314010xxx某学院教学信息治理系统学院、 系:软件学院专业:学 生 姓 名:设 计 题 目:起迄日期 :2021 年 11 月 21 日2021 年 1 月 17 日指导教师 :何志英2021 年 1 月 10日可编辑资料 - - - 欢迎下载精品名师归纳总结一、选题要求题目一:某学院教学信息治理系统功能:1、每一条记录包括一位老师的职工号、姓名、职称、性别、3 门主讲课程(课程名称、开课学期、课程性质(学位与非学位课)和教学成效),教学成效综合评分。2、输入功能: 可以一次完成如干条记录的输入。3、显示功能: 完成全部老师
2、记录的显示。4、查找功能: 完成按姓名或课程查找老师的相关记录,并显示。5、排序功能: 按职工号或教学成效综合评分进行排序。6、插入功能: 按教学成效综合评分高低插入一条老师记录。7、将老师记录存在文件中。8、应供应一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清楚美观.要求:1、用 C 语言实现系统。2、利用结构体数组实现教学信息的数据结构设计。3、系统具有增加,查询,插入,排序等基本功能。4、系统的各个功能模块要求用函数的形式实现。5、将教学信息存在文件中。考试题目要求:1、按老师性别统计统计评分的最终2、删除一个函数,程序仍能正常运行二、程序设计方法及主要函数介绍 程序设计
3、方法1. 数据结构的设计:程序要求文档中要求使用结构体数组完成设计,每一条记录包括一位老师的职工号、姓 名、职称、性别、 3 门主讲课程(课程名称、开课学期、课程性质(学位与非学位课)和教学成效),教学成效综合评分。数据结构设计如下:typedef struct Course/ 课程的定义与描述char courseName40;/ 课程名称可编辑资料 - - - 欢迎下载精品名师归纳总结int semester;/ 开课学期char type8;/ 课程性质char teceff;/ 教学成效Course;typedef struct Teacher/ 老师的定义与描述char name8;
4、/ 姓名int num;/ 职工号char sex2;/ 性别int tecscore;/ 教学成效综合评分char position8;/ 职称Course course3;/3门主讲课程Teacher;2. 主函数与其他函数的关系:3. 结构化的程序设计方法将有用功能封装在每一个子函数中,主函数通过调用子函数来实现相对应的功能。表达了“自顶向下,逐步求精”的结构化程序设计思想。4. “高内聚,低耦合”的程序设计原就将各个使用功能封装在函数中来让主函数调用,而不是将全部有用功能集合在主函数中,使得各个模块相对独立,耦合性得以降低,有利于程序的爱护。可编辑资料 - - - 欢迎下载精品名师归纳
5、总结主要函数介绍:1. 以卡片形式输出全部老师信息注:由于版面缘由, 输出函数显得有些乱,但是这并不影响程序的运行结果,真实的运行结果是很整齐的。 (下图是 DevC+ V5.5.3版本下的编码界面)void PrintInforTeacher T/ 输出全部老师信息(以卡片形式)printf-;printf|所 有 教 师 记 录|;printf-+;printf|全院现有在职老师%d 名,全部信息如下|,TeacherNum;printf-可编辑资料 - - - 欢迎下载精品名师归纳总结-+nn;forint i=0;iTeacherNum;+iprintf+-+-+-+-+-+-+-+-
6、+;printf|职工号 |%3d|姓名 | %8s |性别 | %s |职称 |%8s|,Ti.num,Ti.name,Ti.sex,Ti.position;printf+-+-+-+-+-+-+-+-+-+;printf|主 讲 课 程1|课 程 名|%-40s|,Ti.course0.courseName;printf+-+-+-+-+-+-+;printf|学期 |%d|课程性质 |%8s|教学成效|%c|,Ti.course0.semester,Ti.course0.type,Ti.course0.teceff;printf+-+-+-+-+-+-+;printf|主 讲 课 程2|
7、课 程 名|%-40s|,Ti.course1.courseName;printf+-+-+-+-+-+-+;printf|学期 |%d|课程性质 |%8s|教学成效|%c|,Ti.course1.semester,Ti.course1.type,Ti.course1.teceff;可编辑资料 - - - 欢迎下载精品名师归纳总结printf+-+-+-+-+-+-+;printf|主 讲 课 程3|课 程 名|%-40s|,Ti.course2.courseName;printf+-+-+-+-+-+;printf|学期 |%d|课程性质 |%8s|教学成效|%c|,Ti.course2.s
8、emester,Ti.course2.type,Ti.course2.teceff;printf+-+-+-+-+-+-+-+;printf|教 学 效 果 综 合 评 分 |%3d|,Ti.tecscore;printf+-+-+nn;systemPAUSE;/ 输完一个老师信息,等待用户查看确认,确认无误后再打印下一老师的相关信息/for/PrintInfor2. 对老师信息排序void Sort_NTeacher T,int n/ 当 n=1 时按职工号排序,当n=2 时按教学成效综合评分排序ifn=1/ 按职工号排序Teacher temp;forint i=0;iTeacherNum
9、-1;i+/ 冒泡法排序forint j=0;jTeacherNum-1-i;j+ ifTj+1.numTj.num可编辑资料 - - - 欢迎下载精品名师归纳总结temp=Tj;Tj=Tj+1;Tj+1=temp;/if/forprintf排序结果如下: n; forint i=0;iTeacherNum;i+printf %8s%d ,Ti.name,Ti.num;/for printfn;/ifelse/ 按教学成效综合评分排序Teacher temp;forint i=0;iTeacherNum-1;+i/ 冒泡法排序forint j=0;jTeacherNum-1-i;+j ifTj
10、+1.tecscoreTj.tecscoretemp=Tj;Tj=Tj+1;Tj+1=temp;/if/forforint i=0;iTeacherNum;i+printfttt第%d名:%-8s分数: %3dn,i+1,Ti.name,Ti.tecscore;/for/else/Sort_N3. 按教学成效综合评分高低插入一条老师记录由于程序要求要依据教学成效综合评分高低进行插入操作,故老师信息必需按确定次序排列,但是在执行该操作之前不能保证用户已经执行了相应的排序操作,故需要再执行一次可编辑资料 - - - 欢迎下载精品名师归纳总结排序操作,以保证接下来的程序能够正常运行插入信息的算法大致
11、描述如下:在操作之前,老师的教学成效综合评分已经依据从小到大的次序排列。先确定插入位置,如需对数据移动就进行移动操作,最终将待插记录复制到插入位置。插入位置有两种:A. 在全部老师信息之后插入:当该老师分数大于全部老师的分数时,直接将该教 师信息复制在最终一个老师后面的结构体中,无需进行移动, 此时的基本操作为数据的复制。B. 在开头或者其他老师之前插入:当该老师分数中意以下表达式: min=tecscore请按要求输入老师信息:n;printf-请输入老师的职工号(3 位数字) : ; scanf%d,&TB.num;printf-请输入老师的姓名 : ;scanf%s,TB.name;pr
12、intf-请输入老师的性别 男或女 : ;scanf%s,TB.sex;printf-请输入老师的职称 : ; scanf%s,TB.position;forint j=0;j请输入该老师第 %d门主讲课程的信息 : n,j+1; InputClassInforTB.coursej;可编辑资料 - - - 欢迎下载精品名师归纳总结printfn;/forprintf-请输入老师的教学成效综合评分0-100: ; scanf%d,&TB.tecscore;printf-为保证结果正确,程序将对您的老师按教学成效综合评分进行排序:n; Teacher temp;forint i=0;iTeache
13、rNum-1;+i/ 冒泡法排序forint j=0;jTeacherNum-1-i;+j ifTj+1.tecscoreTj.tecscoretemp=Tj;Tj=Tj+1;Tj+1=temp;/if/forint flag=-1;forint i=0;i=Ti.tecscoreflag=i;/if/forprintf插入位置: %dn,flag; ifflag=-1flag=TeacherNum;/ 在末尾插入elseforint i=TeacherNum-1;i=flag;i-/ 移动插入位置后面的全部数据strcpyTi+1.name,Ti.name; Ti+1.num=Ti.num;
14、 strcpyTi+1.sex,Ti.sex; Ti+1.tecscore=Ti.tecscore;strcpyTi+1.position,Ti.position;可编辑资料 - - - 欢迎下载精品名师归纳总结forint j=0;j3;j+strcpyTi+1.coursej.courseName,Ti.coursej.courseName; Ti+1.coursej.semester=Ti.coursej.semester; strcpyTi+1.coursej.type,Ti.coursej.type; Ti+1.coursej.teceff=TB.coursej.teceff;/fo
15、r/for/else strcpyTflag.name,TB.name; Tflag.num=TB.num; strcpyTflag.sex,TB.sex; Tflag.tecscore=TB.tecscore;strcpyTflag.position,TB.position;/ 插入记录forint j=0;j插入后的结果如下 :n; PrintInforT;/InsertInfor三、程序源代码(包括注释)/-引入头文件 -#include / 使用了 system 和 exit 函数#include / 使用了 printf 、 scanf 以及文件读写函数#include /使用了 s
16、trcmp 、strcpy 等字符串处理函数/-宏定义 -可编辑资料 - - - 欢迎下载精品名师归纳总结#define MAXTEACHERNUM 300/ 一个学院最大老师数,上限可调/-自定义数据类型 -/-老师和课程的定义-typedef struct Course/ 课程的定义与描述char courseName40;/ 课程名称int semester;/ 开课学期char type8;/ 课程性质char teceff;/ 教学成效Course;typedef struct Teacher/ 老师的定义与描述char name8;/ 姓名int num;/ 职工号char sex
17、2;/ 性别int tecscore;/ 教学成效综合评分char position8;/ 职称Course course3;/3门主讲课程Teacher;/-部分全局变量 -int TeacherNum;/ 老师记录条数/-基本操作及其子函数 -/-1.输入老师信息 -void InputClassInforCourse &c/ 输入教学信息printf请输入课程的课程名 : ; scanf%s,c.courseName;getchar ;/ 吃掉回车符printf请输入课程的学期(输入数字1-8 中一个) : ; scanf%d,&c.semester;printf请输入课程的学科性质 输
18、入非学位课或学位课 : ; scanf%s,c.type;可编辑资料 - - - 欢迎下载精品名师归纳总结getchar ;/ 吃掉回车符fflushstdin;printf请输入课程的教学成效 输入 A、B、 C、D中任一个 : ; c.teceff=getchar ;getchar ;/ 吃掉回车符/InputClassInforvoid InputInforTeacher TMAXTEACHERNUM/ 输入老师信息int i=0,flag=1; TeacherNum = 0; char ch,ch1;whileflag/ 不断输入老师信息,直到输入nprintf-请输入老师的职工号(3
19、 位数字) : ; scanf%d,&Ti.num;printf-请输入老师的姓名 : ;scanf%s,Ti.name;printf-请输入老师的性别 男或女 : ;scanf%s,Ti.sex;printf-请输入老师的职称 : ;scanf%s,Ti.position; forint j=0;j请输入该老师第 %d门主讲课程的信息 : n,j+1;InputClassInforTi.coursej; printfn;/forprintf-请输入老师的教学成效综合评分0-100: ; scanf%d,&Ti.tecscore;TeacherNum+;/ 老师记录 +1 i+;/ 计数器自增
20、fflushstdin;printf您仍想连续输入吗? Yy/Nn;可编辑资料 - - - 欢迎下载精品名师归纳总结ch=getchar;getchar;/ 吃掉回车符ifch=N|ch=n/ 确认是否退出flag=0;/ 修改标志,终止循环/while/InputTecInfor/-2.输出老师信息 -void PrintInforTeacher T/ 输出全部老师信息(以卡片形式)printf-;printf|所 有 教 师 记 录|;printf-+;printf|全院现有在职老师%d 名,全部信息如下|,TeacherNum;printf-+nn;forint i=0;i请输入老师姓名
21、: ; scanf%s,name1;forint i=0;i请输入老师职工号: ; scanf%d,&num1;forint i=0;iTeacherNum;i+ ifnum1=Ti.numprintf查找成功,找到该老师记录!nn;printf+-+-+-+-+-+-+-+-+;printf|职工号 |%3d|姓名 | %8s |性别 | %s |职称|%8s|,Ti.num,Ti.name,Ti.sex,Ti.position;printf+-+-+-+-+-+-+-+-+-+;printf|主 讲 课 程 1|课 程 名|%-40s|,Ti.course0.courseName;可编辑资料 - - - 欢迎下载精品名师归纳总结printf+-+-+-