C语言教师管理系统.docx

上传人:b****6 文档编号:13391335 上传时间:2023-06-13 格式:DOCX 页数:17 大小:41.97KB
下载 相关 举报
C语言教师管理系统.docx_第1页
第1页 / 共17页
C语言教师管理系统.docx_第2页
第2页 / 共17页
C语言教师管理系统.docx_第3页
第3页 / 共17页
C语言教师管理系统.docx_第4页
第4页 / 共17页
C语言教师管理系统.docx_第5页
第5页 / 共17页
C语言教师管理系统.docx_第6页
第6页 / 共17页
C语言教师管理系统.docx_第7页
第7页 / 共17页
C语言教师管理系统.docx_第8页
第8页 / 共17页
C语言教师管理系统.docx_第9页
第9页 / 共17页
C语言教师管理系统.docx_第10页
第10页 / 共17页
C语言教师管理系统.docx_第11页
第11页 / 共17页
C语言教师管理系统.docx_第12页
第12页 / 共17页
C语言教师管理系统.docx_第13页
第13页 / 共17页
C语言教师管理系统.docx_第14页
第14页 / 共17页
C语言教师管理系统.docx_第15页
第15页 / 共17页
C语言教师管理系统.docx_第16页
第16页 / 共17页
C语言教师管理系统.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言教师管理系统.docx

《C语言教师管理系统.docx》由会员分享,可在线阅读,更多相关《C语言教师管理系统.docx(17页珍藏版)》请在冰点文库上搜索。

C语言教师管理系统.docx

C语言教师管理系统

通信与信息工程学院

高级语言课程设计

 

班级:

电子信息工程1503

姓名:

周阳刘锦谷静霆

学号:

150705031415070503211507050334

指导教师:

刘晓佩李远征王静倪云峰

设计时间:

2016-07-04~2016-07-24

成绩:

评语:

通信与信息工程学院

二〇一七年

一、课程设计要求

设计教师工作管理系统,并拥有如下功能。

1.计算并显示每个老师在一个学期中所教课程的总工作量。

2.输入教师姓名可以查询教师信息。

3.可以浏览并删改教师信息。

4.完成教师信息

二、程序的功能设计

三、程序的数据结构

C语言使用结构体来扩展自定义的数据类型,数据结构如下:

#pragmapack(4)

//设置结构体的对其方式

typedefstructTEACH

{

//数据域

charArrTeachNum[10];//教工号

charArrTeachName[10];//姓名

charArrTeachSex[4];//性别

charArrTitle[10];//职称

charArrSubject[20];//所教课程

charArrClass[36];//所教班级

unsignedintClassNum;//班级数目

unsignedintTheoryClaHour;//理论课时

unsignedintpracticerClaHour;//实践课时

unsignedintAllClaHour;//总课时

//指针域

structTEACH*pNext;//指向下一个节点

}

四、程序的函数设计

1.函数的功能描述

main函数

功能:

调用菜单函数所示的函数;

Menu()函数

功能:

显示给用户所有的功能

AddTeaMsg()函数

功能:

增一个教师信息

SearchTeach()函数

功能:

查找一个教师信息

DeleTeacher()函数

功能:

删除一个教师信息

ShowAllTeacher()函数

功能:

显示所有老师信息

2.函数的调用关系

main函数调用所有的子函数来完成相应操作;

查找,删除,修改信息函数都必须调用查找函数。

五、源程序代码

头文件:

#ifndefteach

#defineteach

//所需的头文件

#include

#include

#include

#pragmapack(4)

//设置结构体的对其方式

typedefstructTEACH

{

//数据域

charArrTeachNum[10];//教工号

charArrTeachName[10];//姓名

charArrTeachSex[4];//性别

charArrTitle[10];//职称

charArrSubject[20];//所教课程

charArrClass[36];//所教班级

unsignedintClassNum;//班级数目

unsignedintTheoryClaHour;//理论课时

unsignedintpracticerClaHour;//实践课时

doubleAllClaHour;//总课时

//指针域

structTEACH*pNext;//指向下一个节点

}TEACHER;

typedefTEACHER*PTEACH;

//函数声明

//添加一个教师的信息

voidAddTeaMsg(TEACHERTeacher);

//删除一个教师信息

voidDeleTeacher(PTEACHpNode);

//查找一个教师信息

PTEACHSearchTeach(char*Name);

//显示所有教师信息

voidShowAllTeacher(void);

//保存信息进文件

voidSaveTeachToFile(void);

//菜单函数

voidMenu(void);

#endif//!

teach

源文件:

#include"teacher.h"

//声明链表的头和尾

TEACHER*pHead=NULL;//O

TEACHER*pEnd=NULL;

intmain(void)

{

//初始化变量

intflag=1;

PTEACHpTemp=NULL;

intnOrder=-1;

TEACHERTeacher;

charName[10]={'\0'};

Menu();

while(flag)

{

printf("请输入指令:

\n");

scanf("%d",&nOrder);

switch(nOrder)

{

case1:

//OK

{

printf("请输入教工号:

");

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;

}

case2:

//OK

{

printf("请输入指定教师的姓名:

");

scanf("%s",Name);

pTemp=SearchTeach(Name);

if(NULL==pTemp)

{

printf("该教师信息不存在\n");

}

else

{

printf("姓名:

%s\n工号:

%s\n性别:

%s\n职称:

%s\n所教课程:

%s\n所教班级:

%s\n班级数目:

%d\n理论课时:

%d\n实践课时:

%d\n总课时:

%3.2f\n",pTemp->ArrTeachName,pTemp->ArrTeachNum,pTemp->ArrTeachSex,pTemp->ArrTitle,pTemp->ArrSubject,pTemp->ArrClass,pTemp->ClassNum,pTemp->TheoryClaHour,pTemp->practicerClaHour,pTemp->AllClaHour);

}

break;

}

case3:

//OK

{

printf("请输入指定教师的姓名:

");

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;

}

case4:

{

SaveTeachToFile();

break;

}

case5:

//OK

{

printf("请输入指定教师的姓名:

");

scanf("%s",Name);

pTemp=SearchTeach(Name);

//删除这个节点

if(NULL!

=pTemp)

{

DeleTeacher(pTemp);

}

break;

}

case6:

//OK

{

ShowAllTeacher();

break;

}

case0:

//OK

{

exit

(1);

}

default:

printf("输入的指令不对!

\n");

}

}

system("pause");

return0;

}

//指令菜单

voidMenu(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");

}

//增加一个教师信息

voidAddTeaMsg(TEACHERTeacher)

{

//创建一个节点

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;

}

else

{

pEnd->pNext=pTemp;//链接

}

pEnd=pTemp;

pEnd->pNext=NULL;

}

//查找一个教师信息

PTEACHSearchTeach(char*Name)

{

PTEACHpTemp=pHead;

//检测参数的合法性

if(NULL==Name)

{

printf("姓名输入错误!

\n");

returnNULL;

}

//判断链表是否为空

if(NULL==pHead||NULL==pEnd)

{

printf("链表为空!

\n");

returnNULL;

}

//遍历链表

while(pTemp!

=NULL)

{

if(0==strcmp(pTemp->ArrTeachName,Name))

{

returnpTemp;

}

pTemp=pTemp->pNext;

}

printf("无此教师信息!

\n");

returnNULL;

}

//删除一个教师信息

voidDeleTeacher(PTEACHpNode)

{

PTEACHpTemp=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

{

//记住要删除的节点

PTEACHp=pTemp->pNext;

//链接

pTemp->pNext=pTemp->pNext->pNext;

//释放节点

free(p);

p=NULL;

return;

}

}

pTemp=pTemp->pNext;

}

}

//显示所有教师信息

voidShowAllTeacher(void)

{

PTEACHpTemp=pHead;

while(pTemp!

=NULL)

{

printf("姓名:

%s\n工号:

%s\n性别:

%s\n职称:

%s\n所教课程:

%s\n所教班级:

%s\n班级数目:

%d\n理论课时:

%d\n实践课时:

%d\n总课时:

%3.2f\n",pTemp->ArrTeachName,pTemp->ArrTeachNum,pTemp->ArrTeachSex,pTemp->ArrTitle,pTemp->ArrSubject,pTemp->ArrClass,pTemp->ClassNum,pTemp->TheoryClaHour,pTemp->practicerClaHour,pTemp->AllClaHour);

pTemp=pTemp->pNext;

}

}

//保存信息进文件

voidSaveTeachToFile(void)

{

FILE*pFile=NULL;

PTEACHpTemp=pHead;

charstrBuf[100]={'\0'};

charstrNum[5]={'\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);//转成ascii

strcat(strBuf,strNum);

strcat(strBuf,".");

itoa(pTemp->ClassNum,strNum,5);

strcat(strBuf,strNum);

strcat(strBuf,".");

itoa(pTemp->practicerClaHour,strNum,5);

strcat(strBuf,strNum);

strcat(strBuf,".");

itoa(pTemp->TheoryClaHour,strNum,5);

strcat(strBuf,strNum);

strcat(strBuf,".");

fwrite(strBuf,1,strlen(strBuf),pFile);

fwrite("\r\n",1,strlen("\r\n"),pFile);

fclose(pFile);

}

六、调试及总结

在调试中遇到了不少问题,我曾想用char*P这个指针去代替数组,后来才发现这样是不行的,数组和指针是有区别的。

还有,我也遇到了结构体的赋值问题,后来对单个成员进行赋值,才调试通过,使我认识到了自己的C语言知识还是有所不足,这正如有人所说,程序不是写出来的,而是debug出来的。

本次任务,以小组的形式进行,良好的提升了我们学生之间的合作能力以及团队协调能力,并且提高了我们的动手能力。

在进行课题的过程中,我们曾一度陷入了僵局,缘由是我们的c语言知识还是略有不足。

为了解决这些过程中出现的问题,我们曾多次进入图书馆去查询资料,来完善我们的系统并了解相关的知识。

我们也曾与多位同学进行交流,虽然大家的系统不同但是都有着相同的基础,这是我们能完成这套系统的前提。

系统完成中出现了许多的问题与错误,但我们通过长时间的检查与细致的研究解决了这些问题,最终完成了系统。

这次设计对于我们来说有着重大的的意义,提升了我们的技术水平与素养。

增加了我们的能力,是一次成功的活动。

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

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2