




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档通信与信息工程学院高级语言课程设计班 级:电子信息工程1503姓 名:周阳 刘锦 谷静霆学 号:1507050314 1507050321 1507050334指导教师:刘晓佩 李远征 王静 倪云峰设计时间:2016-07-04 2016-07-24成 绩:评 语:通信与信息工程学院二一七年一、课程设计要求设计教师工作管理系统,并拥有如下功能。1.计算并显示每个老师在一个学期中所教课程的总工作量。2.输入教师姓名可以查询教师信息。3.可以浏览并删改教师信息。4.完成教师信息二、程序的功能设计 主函数添加一个教师的信息 Void AddTeaMsg(TEACHER Teacher);删除一个教师的信息Void DeleTeacher(PTEACH pNode);查找一个教师信息PTEACH SearchTeach(char * Name);显示所有教师信息保存void ShowAllTeacher(void);三、程序的数据结构C语言使用结构体来扩展自定义的数据类型,数据结构如下:#pragma pack(4)/设置结构体的对其方式typedef struct TEACH/数据域char ArrTeachNum10;/教工号char ArrTeachName10;/姓名char ArrTeachSex4;/性别char ArrTitle10;/职称char ArrSubject20;/所教课程char ArrClass36;/所教班级unsigned int ClassNum ;/班级数目unsigned int TheoryClaHour ;/理论课时unsigned int practicerClaHour ;/实践课时unsigned int AllClaHour ;/总课时/指针域struct TEACH *pNext;/指向下一个节点四、程序的函数设计1. 函数的功能描述main函数功能:调用菜单函数所示的函数;Menu()函数功能:显示给用户所有的功能AddTeaMsg()函数功能:增一个教师信息SearchTeach()函数功能:查找一个教师信息DeleTeacher()函数功能:删除一个教师信息ShowAllTeacher()函数功能:显示所有老师信息2. 函数的调用关系main函数调用所有的子函数来完成相应操作;查找,删除,修改信息函数都必须调用查找函数。五、源程序代码头文件:#ifndef teach#define teach/所需的头文件#include #include #include #pragma pack(4)/设置结构体的对其方式typedef struct TEACH/数据域char ArrTeachNum10;/教工号char ArrTeachName10;/姓名char ArrTeachSex4;/性别char ArrTitle10;/职称char ArrSubject20;/所教课程char ArrClass36;/所教班级unsigned int ClassNum ;/班级数目unsigned int TheoryClaHour ;/理论课时unsigned int practicerClaHour ;/实践课时double AllClaHour ;/总课时/指针域struct TEACH *pNext;/指向下一个节点TEACHER;typedef TEACHER * PTEACH;/函数声明/添加一个教师的信息void AddTeaMsg(TEACHER Teacher);/删除一个教师信息void DeleTeacher(PTEACH pNode);/查找一个教师信息PTEACH SearchTeach(char * Name);/显示所有教师信息void ShowAllTeacher(void);/保存信息进文件void SaveTeachToFile(void);/菜单函数void Menu(void);#endif / !teach源文件:#includeteacher.h/声明链表的头和尾TEACHER* pHead = NULL; /O TEACHER* pEnd = NULL;int main(void)/初始化变量int flag = 1;PTEACH pTemp = NULL;int nOrder = -1;TEACHER Teacher;char Name10 = 0;Menu();while (flag)printf(请输入指令:n);scanf(%d, &nOrder);switch (nOrder)case 1:/OKprintf(请输入教工号:);scanf(%s, Teacher.ArrTeachNum);printf(请输入教师姓名:);scanf(%s, Teacher.ArrTeachName);printf(请输入性别:);scanf(%s, Teacher.ArrTeachSex);printf(请输入职称:);scanf(%s, Teacher.ArrTitle);printf(请输入所授课程:);scanf(%s, Teacher.ArrSubject);printf(请输入授课班级:);scanf(%s, Teacher.ArrClass);printf(请输入授课班级数目:);scanf(%u, &Teacher.ClassNum);printf(请输入理论课时时长:);scanf(%u, &Teacher.TheoryClaHour);printf(请输入实践课时时长:);scanf(%u, &Teacher.practicerClaHour);AddTeaMsg(Teacher);break;case 2:/OKprintf(请输入指定教师的姓名:);scanf(%s, Name);pTemp = SearchTeach(Name);if (NULL = pTemp)printf(该教师信息不存在n);elseprintf(姓名:%sn工号:%sn性别:%sn职称:%sn所教课程:%sn所教班级:%sn班级数目:%dn理论课时:%dn实践课时:%dn总课时:%3.2fn, pTemp-ArrTeachName, pTemp-ArrTeachNum, pTemp-ArrTeachSex, pTemp-ArrTitle, pTemp-ArrSubject, pTemp-ArrClass, pTemp-ClassNum, pTemp-TheoryClaHour, pTemp-practicerClaHour, pTemp-AllClaHour);break;case 3:/OKprintf(请输入指定教师的姓名:);scanf(%s, Name);pTemp = SearchTeach(Name);if (NULL != pTemp)printf(请输入教工号:);scanf(%s,pTemp-ArrTeachNum);printf(请输入性别:);scanf(%s, pTemp-ArrTeachSex);printf(请输入职称:);scanf(%s, pTemp-ArrTitle);printf(请输入所授课程:);scanf(%s,pTemp-ArrSubject);printf(请输入授课班级:);scanf(%s,pTemp-ArrClass);printf(请输入授课班级数目:);scanf(%u, &(pTemp-ClassNum);printf(请输入理论课时时长:);scanf(%u, &(pTemp-TheoryClaHour);printf(请输入实践课时时长:);scanf(%u, &(pTemp-practicerClaHour);break;case 4:SaveTeachToFile();break;case 5:/OKprintf(请输入指定教师的姓名:);scanf(%s, Name);pTemp = SearchTeach(Name);/删除这个节点if (NULL != pTemp)DeleTeacher(pTemp);break;case 6:/OKShowAllTeacher();break;case 0:/OKexit(1);default:printf(输入的指令不对!n);system(pause);return 0;/指令菜单void Menu(void)printf(*教师信息管理系统*n);printf(*本系统操作指令如下*n);printf(* 1、 增加一个教师信息(链表尾部添加) *n);printf(* 2、 查找指定教师的信息(姓名/工号) *n);printf(* 3、 修改指定教师的信息 *n);printf(* 4、 保存教师的信息到文件中 *n);printf(* 5、 删除指定教师的信息 *n);printf(* 6、 显示所有教师的信息 *n);printf(* 0、 退出系统 *n);printf(*n);/增加一个教师信息void AddTeaMsg(TEACHER Teacher)/创建一个节点TEACHER* pTemp = (PTEACH)malloc(sizeof(TEACHER);/由于参数过多,本次设计在此处不检验参数的合法性/数值部分赋值pTemp-ClassNum = Teacher.ClassNum;pTemp-practicerClaHour = Teacher.practicerClaHour;pTemp-TheoryClaHour = Teacher.TheoryClaHour;if (2 = pTemp-ClassNum)pTemp-AllClaHour = 1.3*(pTemp-TheoryClaHour + pTemp-practicerClaHour);if (3 = pTemp-ClassNum)pTemp-AllClaHour = 1.7*(pTemp-TheoryClaHour + pTemp-practicerClaHour);if (pTemp-ClassNum = 4)pTemp-AllClaHour = 2.0*(pTemp-TheoryClaHour + pTemp-practicerClaHour);/数组部分赋值strcpy(pTemp-ArrClass, Teacher.ArrClass);strcpy(pTemp-ArrSubject, Teacher.ArrSubject);strcpy(pTemp-ArrTeachName, Teacher.ArrTeachName);strcpy(pTemp-ArrTeachNum, Teacher.ArrTeachNum);strcpy(pTemp-ArrTitle, Teacher.ArrTitle);strcpy(pTemp-ArrTeachSex, Teacher.ArrTeachSex);if (NULL = pHead)pHead = pTemp;elsepEnd-pNext = pTemp; /链接pEnd = pTemp;pEnd-pNext = NULL;/查找一个教师信息PTEACH SearchTeach(char * Name)PTEACH pTemp = pHead;/检测参数的合法性if (NULL = Name)printf(姓名输入错误!n);return NULL;/判断链表是否为空if (NULL = pHead | NULL = pEnd)printf(链表为空!n);return NULL;/遍历链表while (pTemp != NULL)if (0 = strcmp(pTemp-ArrTeachName, Name)return pTemp;pTemp = pTemp-pNext;printf(无此教师信息!n);return NULL;/删除一个教师信息void DeleTeacher(PTEACH pNode)PTEACH pTemp = pHead;/判断if (pHead = pNode)/删除头结点的情况/pTemp = pHead;pHead = pHead-pNext;free(pTemp);pTemp = NULL;return;/结束while (pTemp)if (pTemp-pNext = pNode)/删除if (pNode = pEnd)/删除尾节点的情况free(pNode);pNode = NULL;pEnd = pTemp;pEnd-pNext = NULL;return;else/记住要删除的节点PTEACH p = pTemp-pNext;/链接pTemp-pNext = pTemp-pNext-pNext;/释放节点free(p);p = NULL;return;pTemp = pTemp-pNext;/显示所有教师信息void ShowAllTeacher(void)PTEACH pTemp = pHead;while (pTemp != NULL)printf(姓名:%sn工号:%sn性别:%sn职称:%sn所教课程:%sn所教班级:%sn班级数目:%dn理论课时:%dn实践课时:%dn总课时:%3.2fn,pTemp-ArrTeachName,pTemp-ArrTeachNum,pTemp-ArrTeachSex,pTemp-ArrTitle,pTemp-ArrSubject,pTemp-ArrClass,pTemp-ClassNum,pTemp-TheoryClaHour,pTemp-practicerClaHour,pTemp-AllClaHour);pTemp = pTemp-pNext;/保存信息进文件void SaveTeachToFile(void)FILE* pFile = NULL;PTEACH pTemp = pHead;char strBuf100 = 0;char strNum5 = 0 ;if (NULL = pHead)printf(没有教师信息n);return;pFile = fopen(教师信息.txt, wb+);if (NULL = pFile)printf(文件打开失败n);return;strcpy(strBuf, pTemp-ArrTeachNum);strcat(strBuf, .);strcat(strBuf, pTemp-ArrTeachName);strcat(strBuf, .);strcat(strBuf, pTemp-ArrClass);strcat(strBuf, .);strcat(strBuf, pTemp-ArrSubject);strcat(strBuf, .);strcat(strBuf, pTemp-ArrTeachSex);strcat(strBuf, .);strcat(strBuf, pTemp-ArrTitle);itoa(pTemp-AllClaHour, strNum, 5);/转成asciistrcat(strBuf, strNum);strcat(strBuf, .);itoa(pTemp-ClassNum, strNum, 5);strcat(strBuf, strNum);strcat(strBuf, .);itoa(pTemp-practicerClaHour,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度航空零部件进口合同书
- 2025年度智能家居公寓房产代理合作协议
- 2025版桥梁清包工合同工程监理与质量监督合同
- 2025地产公司房地产项目风险评估与风险管理合同
- 2025版农业信息化农资采购服务合同
- 2025版公关活动策划试用员工劳务合同范本
- 2025版人民防空工程租赁合同范本及应急保障协议
- 2025年全新空调租赁与能源管理服务合同下载
- 2025版石膏板企业战略合作伙伴销售与研发合同
- 2025版农产品电商代理销售合同书
- 用友U8全产品功能介绍
- 医院突发公共卫生事件应急预案
- 建筑工程安全生产责任书
- GMAT数学概念单词
- 三基考试题库3
- 化工安全与环保PPT
- 流体力学的课件
- 《城市管理综合执法问题研究国内外文献综述》4800字
- 新录用公务员取消录用审批表
- 消控中心值班检查记录表
- 电梯周期日常维护保养项目表
评论
0/150
提交评论