C程序设计课程设计任务书及说明书设计题目教师信息管理系统学院计算机与通信专业、年级物联网工程学生王明明学号_____ 14530008_指导教师时间2015 年春季学期目录1 摘要 (3)2 前言 (4)3 正文 (5)3.1系统分析(需求分析)3.2系统总体设计3.3详细设计3.4系统测试及使用(操作)说明4 总结 (18)5 参考文献 (18)致谢附录: 程序源代码1 摘要本次课程设计采用C语言,开发了一个基本的教师信息管理系统,该系统具备了按教师姓名查找并输出教师信息,按教师号查找并输出教师信息,按教师姓名查找并删除数据,输出全部教师信息数据,对教师的管理也可以更加方便快捷。
关键词:C语言;课程设计;教师信息管理系统2 前言随着教育的广泛性的提高,教师的数量逐渐增多,但是在教师管理是出现教师姓名、年龄等出现错误的诸多问题。
本文针对上述问题,采用软件工程的开发原理,根据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个教师信息管理系统。
采用c语言作为开发工具,设计了这个教师信息管理系统,解决了教师信息管理中存在的数据安全性、数据一致性等问题。
3、正文3.1 系统分析3.3.1.设计要求该设计要求教师以学校教师信息管理业务为背景,设计、开发一套“教师信息管理系统”软件。
通过该题目的设计过程,可以培养教师结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,针对c语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
得到软件工程的综合训练,提高解决实际问题的能力。
3.3.2设计任务1、以教师信息管理业务为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;2、完成软件结构设计和算法设计;3、完成系统的软件开发和测试工作;教师信息包括:教师号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。
设计“教师信息管理系统”,使之能提供以下功能:1.系统以菜单方式工作;2.教师信息录入功能;3. 教师信息浏览功能;4. 查询、排序功能:按编号查询、按姓名查询;5. 教师信息的删除与修改;6. 存储教师信息。
3.2 系统总体设计一.功能模块图二.总体数据结构本系统采用结构体为主要数据结构,将教师信息,包括:教师号,姓名,年龄,性别,出生年月,地址,电话,E-mail 以结构体的形式存储在计算机中。
struct TEACHER { int ID; char Name[10]; int Age; char Sex[2];int Birthday;char Adress[15];char TelNum[12];char Email[10];};3.3详细设计(1) 功能模块及函数说明函数原型:void DispMainMenu();函数功能:显示菜单(欢迎界面)函数原型:char choice();函数功能:选择操作函数原型:void input(teacher stu[],int Max,int cn);函数功能:录入教师信息函数原型:int findteacherID(teacher stu[],int findID,int Max);函数功能:按编号查找教师信息函数原型:int findteacherNAME(teacher stu[],char findNAME[10],int Max) 函数功能:按姓名查找教师信息函数原型:void DisplayInfor(teacher stu[],int Max);函数功能:显示教师信息函数原型:void DispQueryMenu();函数功能:显示查询菜单函数原型:int InforInput(teacher stu[],int cn);函数功能:输入要录入的教师信息条数函数原型:void QueryInfor(teacher stu[],int Max);函数功能:信息查询函数原型:void EditInfor(teacher stu[],int Max);函数功能:修改教师信息(信息编辑)函数原型:DEL(teacher stu[],int Max,int i)函数功能:删除数据项函数原型:DelInfor(teacher stu[],int Max)函数功能:删除信息函数原型:SortInforMenu(teacher stu[],int Max)函数功能:显示排序菜单函数原型:SortInfor(teacher stu[],int Max,char i)函数功能:信息排序函数原型:Save(teacher stu[],int Max)函数功能:存储信息(2 )模块说明模块一:显示菜单(欢迎界面),选择所要进行的操作void DispMainMenu(){printf("**************教师信息管理系统1.0**************\n");printf("\n\t 程序开发人:王明明学号:1402030123\n\n");printf("\t1--教师信息录入\t2--教师信息修改\n");printf("\t3--教师信息查询\t4--教师信息删除\n");printf("\t5--教师信息排序\t0--退出\n");printf("************************************************\n");printf("请选择(0--5):");}模块二:显示教师信息void DisplayInfor(teacher stu[],int Max){int i;printf("\n 教师号姓名年龄性别出生年月\t 地址\t 电话\t E-mail\n");for(i=0;i<Max;i++)printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i]. Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);printf("\n");}模块三:录入教师信息void input(teacher stu[],int Max,int cn){int i;for(i=cn;i<Max+cn;i++){printf("\n请输入第%d个教师的教师号(8个字符以内):",i+1);scanf("%d",&stu[i].ID);printf("\n\t\t姓名(10个字符以内):");scanf("%s",stu[i].Name);printf("\n\t\t\t 年龄:");scanf("%d",&stu[i].Age);printf("\n\t\t\t性别(m或w):");scanf("%s",&stu[i].Sex);printf("\n\t\t 出生年月(8位):");scanf("%d",&stu[i].Birthday);printf("\n\t\t\t 地址:");scanf("%s",&stu[i].Adress);printf("\n\t\t\t 电话:");scanf("%s",&stu[i].TelNum);printf("\n\t\t\t E-mail:");scanf("%s",&stu[i].Email);}printf("\n您的输入信息是:\n");DisplayInfor(stu,Max+cn);}模块四:查找教师信息(一)按编号查找int findteacherID(teacher stu[],int findID,int Max){int i;for(i=0;i<Max;i++){if(stu[i].ID==findID)break;}if(i<Max)return i;elsereturn -1;}(二)按姓名查找int findteacherNAME(teacher stu[],char findNAME[10],int Max) {int i;for(i=0;i<Max;i++){if(!strcmp(stu[i].Name,findNAME))break;}if(i<Max)return i;elsereturn -1;}(三)查找void QueryInfor(teacher stu[],int Max){char select;int i;int findID;char findNAME[10];DispQueryMenu();select=choice();switch (select){case '1':printf("\n按教师号查询\n请输入教师的学号: ");scanf("%d",&findID);if ((i=findteacherID(stu,findID,Max))!=-1){printf("查找结果如下:\n");printf(" 教师号姓名年龄性别出生年月\t 地址\t 电话\t E-mail");printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i]. Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);}elseprintf("您输入的教师号不存在!\n");break;case '2':printf("\n按姓名查询\n请输入教师的姓名: ");scanf("%s",&findNAME);if ((i=findteacherNAME(stu,findNAME,Max))!=-1){printf("查找结果如下:\n");printf(" 教师号姓名年龄性别出生年月\t 地址\t 电话\t E-mail");printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i].Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);}elseprintf("您输入的姓名不存在!\n");break;default :printf("选择错误!\n");}}模块五:修改教师信息void EditInfor(teacher stu[],int Max){int i;int findID;printf("\n请输入教师的学号: ");scanf("%d",&findID);if ((i=findteacherID(stu,findID,Max))!=-1){printf("姓名: %s\n",stu[i].Name);printf("原信息:%8d %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Age,stu[i].Sex,stu[i].Birthd ay,stu[i].Adress,stu[i].TelNum,stu[i].Email);printf("\n 请输入新的教师号(8个字符以内):",i+1);scanf("%d",&stu[i].ID);printf("\n\t\t姓名(10个字符以内):");scanf("%s",stu[i].Name);printf("\n\t\t\t 年龄:");scanf("%d",&stu[i].Age);printf("\n\t\t\t性别(m或w):");scanf("%s",&stu[i].Sex);printf("\n\t\t 出生年月(8位):");scanf("%d",&stu[i].Birthday);printf("\n\t\t\t 地址:");scanf("%s",&stu[i].Adress);printf("\n\t\t\t 电话:");scanf("%s",&stu[i].TelNum);printf("\n\t\t\t E-mail:");scanf("%s",&stu[i].Email);}elseprintf("您输入的教师号不存在!\n");}模块五:删除教师信息DelInfor(teacher stu[],int Max){int findID,i;char findNAME[10],select;printf("*****************请选择删除方式*****************\n");printf("\t1--按学号删除; \t2--按姓名删除\n");printf("************************************************\n");printf("请选择(1--2):");select=choice();switch (select){case '1':printf("\n按教师号删除\n请输入教师的教师号: ");scanf("%d",&findID);if ((i=findteacherID(stu,findID,Max))!=-1)DEL(stu,Max,i);elseprintf("您输入的教师号不存在!\n");break;case '2':printf("\n按姓名删除\n请输入教师的姓名: ");scanf("%s",&findNAME);if ((i=findteacherNAME(stu,findNAME,Max))!=-1)DEL(stu,Max,i);elseprintf("您输入的姓名不存在!\n");break;default :printf("选择错误!\n");}}模块五:教师信息排序(一)选择排序方式SortInforMenu(teacher stu[],int Max){char select;printf("*****************请选择排序方式*****************\n");printf("\t1--按教师号排序; \t2--按姓名排序\n");printf("************************************************\n");printf("请选择(1--2):");select=choice();if (select=='1'||select=='2')SortInfor(stu,Max,select);elseprintf("选择错误!\n");}(二)排序操作SortInfor(teacher stu[],int Max,char i){teacher teacher;int j=0,k,l=0;if(i=='1'){for(k=0;j<Max;j++)for(;k<Max-j-1;k++){if(stu[k].ID>stu[k+1].ID){teacher.ID=stu[k+1].ID;strcpy(,stu[k+1].Name); teacher.Age=stu[k+1].Age;strcpy(teacher.Sex,stu[k+1].Sex);teacher.Birthday=stu[k+1].Birthday;strcpy(teacher.Adress,stu[k+1].Adress);strcpy(teacher.TelNum,stu[k+1].TelNum);strcpy(teacher.Email,stu[k+1].Email);stu[k+1].ID=stu[k].ID;strcpy(stu[k+1].Name,stu[k].Name);stu[k+1].Age=stu[k].Age;strcpy(stu[k+1].Sex,stu[k].Sex);stu[k+1].Birthday=stu[k].Birthday;strcpy(stu[k+1].Adress,stu[k].Adress);strcpy(stu[k+1].TelNum,stu[k].TelNum);strcpy(stu[k+1].Email,stu[k].Email);stu[k].ID=teacher.ID;strcpy(stu[k].Name,);stu[k].Age=teacher.Age;strcpy(stu[k].Sex,teacher.Sex);stu[k].Birthday=teacher.Birthday;strcpy(stu[k].Adress,teacher.Adress);strcpy(stu[k].TelNum,teacher.TelNum);strcpy(stu[k].Email,teacher.Email);}printf("\n 教师号姓名年龄性别出生年月\t 地址\t 电话\t E-mail\n");for(i=0;i<Max;i++)printf("%8d %10s %2d %2s %8d %15s %12s %10s",stu[i].ID,stu[i].Name,stu[i]. Age,stu[i].Sex,stu[i].Birthday,stu[i].Adress,stu[i].TelNum,stu[i].Email);printf("\n");}}else if(i=='2'){for(k=0;j<Max;j++)for(;k<Max-j-1;k++){if(strcmp(stu[k].Name,stu[k+1].Name)>0){teacher.ID=stu[k+1].ID;strcpy(,stu[k+1].Name);teacher.Age=stu[k+1].Age;strcpy(teacher.Sex,stu[k+1].Sex);teacher.Birthday=stu[k+1].Birthday;strcpy(teacher.Adress,stu[k+1].Adress);strcpy(teacher.TelNum,stu[k+1].TelNum);strcpy(teacher.Email,stu[k+1].Email);stu[k+1].ID=stu[k].ID;strcpy(stu[k+1].Name,stu[k].Name);stu[k+1].Age=stu[k].Age;strcpy(stu[k+1].Sex,stu[k].Sex);stu[k+1].Birthday=stu[k].Birthday;strcpy(stu[k+1].Adress,stu[k].Adress);strcpy(stu[k+1].TelNum,stu[k].TelNum);strcpy(stu[k+1].Email,stu[k].Email);stu[k].ID=teacher.ID;strcpy(stu[k].Name,);stu[k].Age=teacher.Age;strcpy(stu[k].Sex,teacher.Sex);stu[k].Birthday=teacher.Birthday;strcpy(stu[k].Adress,teacher.Adress);strcpy(stu[k].TelNum,teacher.TelNum);strcpy(stu[k].Email,teacher.Email);}}printf("\n 姓名教师号年龄性别出生年月\t 地址\t 电话\t E-mail\n");for(;l<Max;l++)printf("%10s %8d %2d %2s %8d %15s %12s %10s",stu[l].Name,stu[l].ID,stu[l]. Age,stu[l].Sex,stu[l].Birthday,stu[l].Adress,stu[l].TelNum,stu[l].Email);printf("\n");}}模块六:存盘Save(teacher stu[],int Max){int i=0 ;FILE *fp;if((fp=fopen("stu.txt","w+"))==NULL){printf("ERROR!");exit(0);}for(;i<Max;i++){fprintf(fp,"%d ",stu[i].ID); fprintf(fp,"%s ",stu[i].Name); fprintf(fp,"%d ",stu[i].Age); fprintf(fp,"%s ",stu[i].Sex); fprintf(fp,"%d ",stu[i].Birthday); fprintf(fp,"%s ",stu[i].Adress); fprintf(fp,"%s ",stu[i].TelNum); fprintf(fp,"%s ",stu[i].Email);}fclose(fp);printf("OK!");}3.4系统测试1.欢迎界面2.录入教师信息运行结果3.教师信息修改运行结果4.教师信息查询运行结果:5.删除运行结果:6.教师信息排序运行结果:4 程序设计总结通过这几天来对这个C课程的设计,使我们充分体会到了编程给我们带来的乐趣,其中我们也会遇到编译错误,有时也会令程序无法运行,但我们没有放弃,而是几个人一起讨论,仔细查找造成问题的原因。