C语言教师管理系统
更新时间:2024-04-26 23:33:01 阅读量: 综合文库 文档下载
通信与信息工程学院
高级语言课程设计
班 级:姓 名:学 号:指导教师:设计时间:成 绩:评 语:
电子信息工程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 ArrTeachNum[10]; //教工号 char ArrTeachName[10]; //姓名 char ArrTeachSex[4]; //性别 char ArrTitle[10]; //职称 char ArrSubject[20]; //所教课程 char ArrClass[36]; //所教班级 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
#pragma pack(4) //设置结构体的对其方式 typedef struct TEACH {
//数据域
char ArrTeachNum[10]; char ArrTeachName[10]; char ArrTeachSex[4]; char ArrTitle[10];
//教工号 //姓名 //性别 //职称
char ArrSubject[20]; char ArrClass[36]; 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 源文件:
#include\
//声明链表的头和尾
TEACHER* pHead = NULL; //O TEACHER* pEnd = NULL; int main(void) {
//初始化变量 int flag = 1;
PTEACH pTemp = NULL; int nOrder = -1; TEACHER Teacher;
char Name[10] = {'\\0'};
Menu();
//所教课程 //所教班级 //班级数目 //理论课时 //实践课时 //总课时
//指向下一个节点
while (flag) {
printf(\请输入指令:\\n\); scanf(\, &nOrder); switch (nOrder) {
case 1: //OK {
printf(\请输入教工号:\);
scanf(\, Teacher.ArrTeachNum); printf(\请输入教师姓名:\);
scanf(\, Teacher.ArrTeachName); printf(\请输入性别:\);
scanf(\, Teacher.ArrTeachSex); printf(\请输入职称:\);
scanf(\, Teacher.ArrTitle); printf(\请输入所授课程:\);
scanf(\, Teacher.ArrSubject); printf(\请输入授课班级:\); scanf(\, Teacher.ArrClass); printf(\请输入授课班级数目:\); scanf(\, &Teacher.ClassNum); printf(\请输入理论课时时长:\);
scanf(\, &Teacher.TheoryClaHour); printf(\请输入实践课时时长:\);
scanf(\, &Teacher.practicerClaHour);
AddTeaMsg(Teacher); break; }
case 2: //OK {
printf(\请输入指定教师的姓名:\); scanf(\, 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; }
case 3: //OK {
printf(\请输入指定教师的姓名:\); scanf(\, Name);
pTemp = SearchTeach(Name); if (NULL != pTemp) {
printf(\请输入教工号:\);
scanf(\,pTemp->ArrTeachNum); printf(\请输入性别:\);
scanf(\, pTemp->ArrTeachSex); printf(\请输入职称:\);
scanf(\, pTemp->ArrTitle); printf(\请输入所授课程:\); scanf(\,pTemp->ArrSubject); printf(\请输入授课班级:\); scanf(\,pTemp->ArrClass); printf(\请输入授课班级数目:\); scanf(\, &(pTemp->ClassNum)); printf(\请输入理论课时时长:\);
scanf(\, &(pTemp->TheoryClaHour)); printf(\请输入实践课时时长:\);
scanf(\, &(pTemp->practicerClaHour)); }
break; }
case 4: {
SaveTeachToFile(); break; }
case 5: //OK {
printf(\请输入指定教师的姓名:\); scanf(\, Name);
pTemp = SearchTeach(Name);
//删除这个节点 if (NULL != pTemp) {
DeleTeacher(pTemp); }
break; }
case 6: //OK {
ShowAllTeacher(); break; }
case 0: //OK {
exit(1); }
default:
printf(\输入的指令不对!\\n\); } }
system(\); return 0; }
//指令菜单
void Menu(void) {
printf(\教师信息管理系统*********************\\n\);
printf(\本系统操作指令如下*******************\\n\);
printf(\、 增加一个教师信息(链表尾部添加) ***\\n\);
printf(\、 查找指定教师的信息(姓名/工号) ***\\n\);
printf(\、 修改指定教师的信息 ***\\n\);
printf(\、 保存教师的信息到文件中 ***\\n\);
printf(\、 删除指定教师的信息
***\\n\);
printf(\、 显示所有教师的信息 ***\\n\);
printf(\、 退出系统 ***\\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;
} else {
pEnd->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(\姓名:%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->ArrTeachSe
x,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 strBuf[100] = {'\\0'}; char strNum[5] = { '\\0' };
if (NULL == pHead) {
printf(\没有教师信息\\n\); return; }
pFile = fopen(\教师信息.txt\, \); 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(\, 1, strlen(\), pFile); fclose(pFile);
六、调试及总结
在调试中遇到了不少问题,我曾想用char *P这个指针去代替数组,后来才发现这样是不行的,数组和指针是有区别的。还有,我也遇到了结构体的赋值问题,后来对单个成员进行赋值,才调试通过,使我认识到了自己的C语言知识还是有所不足,这正如有人所说,程序不是写出来的,而是debug出来的。 本次任务,以小组的形式进行,良好的提升了我们学生之间的合作能力以及团队协调能力,并且提高了我们的动手能力。在进行课题的过程中,我们曾一度陷入了僵局,缘由是我们的c语言知识还是略有不足。为了解决这些过程中出现的问题,我们曾多次进入图书馆去查询资料,来完善我们的系统并了解相关的知识。我们也曾与多位同学进行交流,虽然大家的系统不同但是都有着相同的基础,这是我们能完成这套系统的前提。系统完成中出现了许多的问题与错误,但我们通过长时间的检查与细致的研究解决了这些问题,最终完成了系统。这次设计对于我们来说有着重大的的意义,提升了我们的技术水平与素养。增加了我们的能力,是一次成功的活动。
正在阅读:
C语言教师管理系统04-26
《全国精神卫生工作规划(2017―2020年)》全文02-15
2017-2023年中国谐振器行业市场分析及投资可行性研究报告(目录)12-17
三月三是什么节日02-18
逼来的月亮作文350字07-02
企业如何寻找、发现、发挥优势,获取贸易中利益最大化10-13
师恩永留心间作文06-25
煤矿综采工作面所有管理制度07-18
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 管理系统
- 语言
- 教师