资源描述
-C程序设计课程设计任务书及说明书设计题目教师信息管理系统学 院 计算机与通信专业、年级 物联网工程学 生 王明明学 号_ 14530008_ 指导教师 时 间 2015年 春季 学期目 录1 摘要32 前言43 正文53.1系统分析需求分析3.2系统总体设计3.3详细设计3.4系统测试及使用(操作)说明4 总结 185 参考文献 18致谢附录: 程序源代码1 摘要本次课程设计采用语言,开发了一个根本的教师信息管理系统,该系统具备了按教师*查找并输出教师信息,按教师号查找并输出教师信息,按教师*查找并删除数据,输出全部教师信息数据,对教师的管理也可以更加方便快捷。关键词:语言;课程设计;教师信息管理系统2 前言随着教育的广泛性的提高,教师的数量逐渐增多,但是在教师管理是出现教师*、年龄等出现错误的诸多问题。本文针对上述问题,采用软件工程的开发原理,根据软件流程过程标准,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个教师信息管理系统。采用c语言作为开发工具,设计了这个教师信息管理系统,解决了教师信息管理中存在的数据平安性、数据一致性等问题。3、正文3.1 系统分析.设计要求该设计要求教师以学校教师信息管理业务为背景,设计、开发一套“教师信息管理系统软件。通过该题目的设计过程,可以培养教师构造化程序设计的思想,加深对高级语言根本语言要素和控制构造的理解,针对c语言中的重点和难点内容进展训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。得到软件工程的综合训练,提高解决实际问题的能力。设计任务1、以教师信息管理业务为背景,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型;2、完成软件构造设计和算法设计;3、完成系统的软件开发和测试工作;教师信息包括:教师号,年龄,性别,出生年月,地址,等。设计“教师信息管理系统,使之能提供以下功能:1. 系统以菜单方式工作;2. 教师信息录入功能;3. 教师信息浏览功能;4. 查询、排序功能:按编号查询、按*查询;5. 教师信息的删除与修改;6. 存储教师信息。3.2 系统总体设计一功能模块图main欢送界面选项退 出 并 存 盘教师信息查询教师信息删除教师信息排序教师信息录入教师信息修改二总体数据构造本系统采用构造体为主要数据构造,将教师信息,包括:教师号,年龄,性别,出生年月,地址,以构造体的形式存储在计算机中。struct TEACHER int ID; char Name10; int Age; char Se*2; int Birthday; char Adress15; char TelNum12; char Email10;3.3详细设计(1) 功能模块及函数说明函数原型:void DispMainMenu();函数功能:显示菜单欢送界面函数原型:char choice();函数功能:选择操作函数原型:void input(teacher stu,int Ma*,int);函数功能:录入教师信息函数原型:int findteacherID(teacher stu,int findID,int Ma*);函数功能:按编号查找教师信息函数原型:int findteacherNAME(teacher stu,char findNAME10,int Ma*)函数功能:按*查找教师信息函数原型:void DisplayInfor(teacher stu,int Ma*);函数功能:显示教师信息函数原型:void DispQueryMenu();函数功能:显示查询菜单函数原型:int InforInput(teacher stu,int);函数功能:输入要录入的教师信息条数函数原型:void QueryInfor(teacher stu,int Ma*);函数功能:信息查询函数原型:void EditInfor(teacher stu,int Ma*);函数功能:修改教师信息信息编辑函数原型:DEL(teacher stu,int Ma*,int i)函数功能:删除数据项函数原型:DelInfor(teacher stu,int Ma*)函数功能:删除信息函数原型:SortInforMenu(teacher stu,int Ma*)函数功能:显示排序菜单函数原型:SortInfor(teacher stu,int Ma*,char i)函数功能:信息排序函数原型:Save(teacher stu,int Ma*)函数功能:存储信息(2 )模块说明 模块一:显示菜单欢送界面,选择所要进展的操作void DispMainMenu() printf(*教师信息管理系统1.0*n); printf(nt 程序开发人:王明明 *:1402030123nn); printf(t1-教师信息录入 t2-教师信息修改n); printf(t3-教师信息查询 t4-教师信息删除n); printf(t5-教师信息排序 t0-退出n); printf(*n); printf(请选择(0-5):);模块二:显示教师信息void DisplayInfor(teacher stu,int Ma*) int i; printf(n 教师号 年龄 性别 出生年月t 地址t t n); for(i=0;iMa*;i+) printf(%8d %10s %2d %2s %8d %15s %12s %10s,stui.ID,stui.Name,stui.Age,stui.Se*,stui.Birthday,stui.Adress,stui.TelNum,stui.Email); printf(n);模块三:录入教师信息void input(teacher stu,int Ma*,int) int i; for(i=;iMa*+;i+) printf(n请输入第%d个教师的教师号 (8个字符以内):,i+1);scanf(%d,&stui.ID); printf(ntt*(10个字符以内):); scanf(%s,stui.Name); printf(nttt 年龄:); scanf(%d,&stui.Age); printf(nttt性别(m或w):); scanf(%s,&stui.Se*); printf(ntt 出生年月(8位):);scanf(%d,&stui.Birthday); printf(nttt 地址:);scanf(%s,&stui.Adress); printf(nttt :); scanf(%s,&stui.TelNum); printf(nttt :); scanf(%s,&stui.Email); printf(n您的输入信息是:n); DisplayInfor(stu,Ma*+);模块四:查找教师信息一按编号查找int findteacherID(teacher stu,int findID,int Ma*) int i; for(i=0;iMa*;i+) if(stui.ID=findID) break; if(iMa*) return i; else return -1;二按*查找int findteacherNAME(teacher stu,char findNAME10,int Ma*) int i; for(i=0;iMa*;i+) if(!strcmp(stui.Name,findNAME) break; if(iMa*) return i; else return -1;三查找void QueryInfor(teacher stu,int Ma*) char select; int i; int findID; char findNAME10; DispQueryMenu(); select=choice(); switch (select) case 1: printf(n按教师号查询n请输入教师的*: ); scanf(%d,&findID); if (i=findteacherID(stu,findID,Ma*)!=-1) printf(查找结果如下:n); printf( 教师号 年龄 性别 出生年月t 地址t t ); printf(%8d %10s %2d %2s %8d %15s %12s %10s,stui.ID,stui.Name,stui.Age,stui.Se*,stui.Birthday,stui.Adress,stui.TelNum,stui.Email); else printf(您输入的教师号不存在!n); break; case 2: printf(n按*查询n请输入教师的*: ); scanf(%s,&findNAME); if (i=findteacherNAME(stu,findNAME,Ma*)!=-1) printf(查找结果如下:n); printf( 教师号 年龄 性别 出生年月t 地址t t ); printf(%8d %10s %2d %2s %8d %15s %12s %10s,stui.ID,stui.Name,stui.Age,stui.Se*,stui.Birthday,stui.Adress,stui.TelNum,stui.Email); else printf(您输入的*不存在!n); break; default : printf(选择错误!n); 模块五:修改教师信息void EditInfor(teacher stu,int Ma*) int i; int findID; printf(n请输入教师的*: ); scanf(%d,&findID); if (i=findteacherID(stu,findID,Ma*)!=-1) printf(姓 名: %sn,stui.Name); printf(原信息:%8d %2d %2s %8d %15s %12s %10s,stui.ID,stui.Age,stui.Se*,stui.Birthday,stui.Adress,stui.TelNum,stui.Email); printf(n 请输入新的教师号 (8个字符以内):,i+1); scanf(%d,&stui.ID); printf(ntt*(10个字符以内):); scanf(%s,stui.Name); printf(nttt 年龄:); scanf(%d,&stui.Age); printf(nttt性别(m或w):); scanf(%s,&stui.Se*); printf(ntt 出生年月(8位):); scanf(%d,&stui.Birthday);printf(nttt 地址:);scanf(%s,&stui.Adress); printf(nttt :); scanf(%s,&stui.TelNum); printf(nttt :); scanf(%s,&stui.Email); else printf(您输入的教师号不存在!n);模块五:删除教师信息DelInfor(teacher stu,int Ma*) int findID,i; char findNAME10,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,Ma*)!=-1)DEL(stu,Ma*,i); else printf(您输入的教师号不存在!n); break; case 2: printf(n按*删除n请输入教师的*: ); scanf(%s,&findNAME); if (i=findteacherNAME(stu,findNAME,Ma*)!=-1)DEL(stu,Ma*,i); else printf(您输入的*不存在!n); break; default : printf(选择错误!n); 模块五:教师信息排序一选择排序方式SortInforMenu(teacher stu,int Ma*) char select; printf(*请选择排序方式*n); printf(t1-按教师号排序; t2-按*排序n); printf(*n); printf(请选择(1-2):); select=choice(); if (select=1|select=2) SortInfor(stu,Ma*,select); else printf(选择错误!n);二排序操作SortInfor(teacher stu,int Ma*,char i) teacher teacher; int j=0,k,l=0; if(i=1) for(k=0;jMa*;j+) for(;kstuk+1.ID) teacher.ID=stuk+1.ID; strcpy(teacher.Name,stuk+1.Name); teacher.Age=stuk+1.Age; strcpy(teacher.Se*,stuk+1.Se*); teacher.Birthday=stuk+1.Birthday; strcpy(teacher.Adress,stuk+1.Adress); strcpy(teacher.TelNum,stuk+1.TelNum); strcpy(teacher.Email,stuk+1.Email);stuk+1.ID=stuk.ID;strcpy(stuk+1.Name,stuk.Name); stuk+1.Age=stuk.Age; strcpy(stuk+1.Se*,stuk.Se*); stuk+1.Birthday=stuk.Birthday;strcpy(stuk+1.Adress,stuk.Adress); strcpy(stuk+1.TelNum,stuk.TelNum);strcpy(stuk+1.Email,stuk.Email); stuk.ID=teacher.ID; strcpy(stuk.Name,teacher.Name); stuk.Age=teacher.Age; strcpy(stuk.Se*,teacher.Se*); stuk.Birthday=teacher.Birthday; strcpy(stuk.Adress,teacher.Adress); strcpy(stuk.TelNum,teacher.TelNum); strcpy(stuk.Email,teacher.Email); printf(n 教师号 年龄 性别 出生年月t 地址t t n); for(i=0;iMa*;i+) printf(%8d %10s %2d %2s %8d %15s %12s %10s,stui.ID,stui.Name,stui.Age,stui.Se*,stui.Birthday,stui.Adress,stui.TelNum,stui.Email); printf(n); else if(i=2) for(k=0;jMa*;j+) for(;k0) teacher.ID=stuk+1.ID; strcpy(teacher.Name,stuk+1.Name); teacher.Age=stuk+1.Age; strcpy(teacher.Se*,stuk+1.Se*); teacher.Birthday=stuk+1.Birthday; strcpy(teacher.Adress,stuk+1.Adress); strcpy(teacher.TelNum,stuk+1.TelNum); strcpy(teacher.Email,stuk+1.Email);stuk+1.ID=stuk.ID;strcpy(stuk+1.Name,stuk.Name); stuk+1.Age=stuk.Age; strcpy(stuk+1.Se*,stuk.Se*); stuk+1.Birthday=stuk.Birthday;strcpy(stuk+1.Adress,stuk.Adress); strcpy(stuk+1.TelNum,stuk.TelNum);strcpy(stuk+1.Email,stuk.Email); stuk.ID=teacher.ID; strcpy(stuk.Name,teacher.Name); stuk.Age=teacher.Age; strcpy(stuk.Se*,teacher.Se*); stuk.Birthday=teacher.Birthday; strcpy(stuk.Adress,teacher.Adress); strcpy(stuk.TelNum,teacher.TelNum); strcpy(stuk.Email,teacher.Email); printf(n 教师号 年龄 性别 出生年月t 地址t t n); for(;lMa*;l+) printf(%10s %8d %2d %2s %8d %15s %12s %10s,stul.Name,stul.ID,stul.Age,stul.Se*,stul.Birthday,stul.Adress,stul.TelNum,stul.Email); printf(n); 模块六:存盘Save(teacher stu,int Ma*) int i=0 ; FILE *fp; if(fp=fopen(stu.t*t,w+)=NULL) printf(ERROR!); e*it(0); for(;iMa*;i+) fprintf(fp,%d ,stui.ID);fprintf(fp,%s ,stui.Name); fprintf(fp,%d ,stui.Age); fprintf(fp,%s ,stui.Se*); fprintf(fp,%d ,stui.Birthday); fprintf(fp,%s ,stui.Adress); fprintf(fp,%s ,stui.TelNum); fprintf(fp,%s ,stui.Email); fclose(fp); printf(OK!);3.4系统测试1 欢送界面2录入教师信息运行结果3教师信息修改运行结果4教师信息查询运行结果:5删除运行结果:6教师信息排序运行结果:4 程序设计总结通过这几天来对这个C课程的设计,使我们充分体会到了编程给我们带来的乐趣,其中我们也会遇到编译错误,有时也会令程序无法运行,但我们没有放弃,而是几个人一起讨论,仔细查找造成问题的原因。既锻炼了我们的思维能力,有培养了我们的意志和毅力,使我们对C语言编程方面的能力得到了提高,而这些是我们在课本上所学不到的!当然,在这次课程设计中也暴露出我们的一些缺乏,比方编程时想当然,一些我们外表上看似成立的程序,实际上却可能根本无法运行,只有实际用C语言编译环境中运行一下才知道程序中存在的问题。这都是我们没有养成良好的编程习惯所造成的,毕竟我们才刚刚开场学习编程,以后的路还很长5 参考文献1C/C+程序设计,王连相等,中国科学技术,2004 2C语言程序设计,谭浩强,清华大学,1999 3C程序设计题解与上机指导,谭浩强,清华大学,1999 4C语言使用程序荟萃,*电子科技大学,1993 5C语言函数手册,机械工业,1999 6C语言的实际应用,*科学技术,2000致谢感谢*教师的悉心指导。附录:程序源代码*include *include *include *include *define MA*_NUM 45*define teacher STUDENTstruct TEACHER int ID; char Name10; int Age; char Se*2; int Birthday; char Adress15; char TelNum12; char Email10;typedef struct TEACHER teacher;void input(teacher stu,int Ma*,int);int findteacherID(teacher stu,int findID,int Ma*);void DisplayInfor(teacher stu,int Ma*);void DispMainMenu();void DispQueryMenu();char choice();int InforInput(teacher stu,int);void QueryInfor(teacher stu,int Ma*);void EditInfor(teacher stu,int Ma*);void DispMainMenu() printf(*教师信息管理系统1.0*n); printf(nt 程序开发人:王明明 *:1402030123nn); printf(t1-教师信息录入 t2-教师信息修改n); printf(t3-教师信息查询 t4-教师信息删除n); printf(t5-教师信息排序 t0-退出n); printf(*n); printf(请选择(0-5):);void DispQueryMenu() printf(*请选择查询方式*n); printf(t1-按教师号查询; t2-按*查询n); printf(*n); printf(请选择(1-2):);char choice() char select; select=getche(); getch(); return (select);void DisplayInfor(teacher stu,int Ma*) int i; printf(n 教师号 年龄 性别 出生年月t 地址t t n); for(i=0;iMa*;i+) printf(%8d %10s %2d %2s %8d %15s %12s %10s,stui.ID,stui.Name,stui.Age,stui.Se*,stui.Birthday,stui.Adress,stui.TelNum,stui.Email); printf(n);void input(teacher stu,int Ma*,int) int i; for(i=;iMa*+;i+) printf(n请输入第%d个教师的教师号 (8个字符以内):,i+1);scanf(%d,&stui.ID); printf(ntt*(10个字符以内):); scanf(%s,stui.Name); printf(nttt 年龄:); scanf(%d,&stui.Age); printf(nttt性别(m或w):); scanf(%s,&stui.Se*); printf(ntt 出生年月(8位):);scanf(%d,&stui.Birthday); printf(nttt 地址:);scanf(%s,&stui.Adress); printf(nttt :); scanf(%s,&stui.TelNum); printf(nttt :); scanf(%s,&stui.Email); printf(n您的输入信息是:n); DisplayInfor(stu,Ma*+);int findteacherID(teacher stu,int findID,int Ma*) int i; for(i=0;iMa*;i+) if(stui.ID=findID) break; if(iMa*) return i; else return -1;int findteacherNAME(teacher stu,char findNAME10,int Ma*) int i; for(i=0;iMa*;i+) if(!strcmp(stui.Name,findNAME) break; if(iMA*_NUM) printf(您输入的人数太多,大于%d人!n,MA*_NUM); return (0); input(stu,number,) ; return (number+);void QueryInfor(teacher stu,int Ma*) char select; int i; int findID; char findNAME10; DispQueryMenu(); select=choice(); switch (select) case 1: printf(n按教师号查询n请输入教师的*: ); scanf(%d,&findID); if (i=findteacherID(stu,findID,Ma*)!=-1) printf(查找结果如下:n); printf( 教师号 年龄 性别 出生年月t 地址t t ); printf(%8d %10s %2d %2s %8d %15s %12s %10s,stui.ID,stui.Name,stui.Age,stui.Se*,stui.Birthday,stui.Adress,stui.TelNum,stui.Email); else printf(您输入的教师号不存在!n); break; case 2: printf(n按*查询n请输入教师的*: ); scanf(%s,&findNAME); if (i=findteacherNAME(stu,findNAME,Ma*)!=-1) printf(查找结果如下:n); printf( 教师号 年龄 性别 出生年月t 地址t t ); printf(%8d %10s %2d %2s %8d %15s %12s %10s,stui.ID,stui.Name,stui.Age,stui.Se*,stui.Birthday,stui.Adress,stui.TelNum,stui.Email); else printf(您输入的*不存在!n); break; default : printf(选择错误!n); void EditInfor(teacher stu,int Ma*) int i; int findID; printf(n请输入教师的*: ); scanf(%d,&findID); if (i=findteacherID(stu,findID,Ma*)!=-1) printf(姓 名: %sn,stui.Name); printf(原信息:%8d %2d %2s %8d %15s %12s %10s,stui.ID,stui.Age,stui.Se*,stui.Birthday,stui.Adress,stui.TelNum,stui.Email); printf(n 请输入新的教师号 (8个字符以内):,i+1); scanf(%d,&stui.ID); printf(ntt*(10个字符以内):); scanf(%s,stui.Name); printf(nttt 年龄:); scanf(%d,&stui.Age); printf(nttt性别(m或w):); scanf(%s,&stui.Se*); printf(ntt 出生年月(8位):); scanf(%d,&stui.Birthday);printf(nttt 地址:);scanf(%s,&stui.Adress); printf(nttt :); scanf(%s,&stui.TelNum); printf(nttt :); scanf(%s,&stui.Email); else printf(您输入的教师号不存在!n);DEL(teacher stu,int Ma*,int i) for(;iMa*;i+) stui-1.ID=stui.ID; strcpy(stui-1.Name,stui.Name); stui-1.Age=stui.Age; strcpy(stui-1.Se*,stui.Se*); stui-1.Birthday=stui.Birthday; strcpy(stui-1.Adress,stui.Adress); strcpy(stui-1.TelNum,stui.TelNum);strcpy(stui-1.Email,stui.Email); return(-Ma*);DelInfor(teacher stu,int Ma*) int findID,i; char findNAME10,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,Ma*)!=-1)DEL(stu,Ma*,i); else printf(您输入的教师号不存在!n); break; case 2: printf(n按*删除n请输入教师的*: ); scanf(%s,&findNAME); if (i=findteacherNAME(stu,findNAME,Ma*)!=-1)DEL(stu,Ma*,i); else printf(您输入的*不存在!n); break; default : printf(选择错误!n); SortInforMenu(teacher stu,int Ma*) char select; printf(*请选择排序方式*n); printf(t1-按教师号排序; t2-按*排序n); printf(*n); printf(请选择(1-2):); select=choice(); if (select=1|select=2) SortInfor(stu,Ma*,select); else printf(选择错误!n);SortInfor(teacher stu,int Ma*,char i) teacher teacher; int j=0,k,l=0; if(i=1) for(k=0;jMa*;j+) for(;kstuk+1.ID) teacher.ID=stuk+1.ID; strcpy(teacher.Name,stuk+1.Name); teacher.Age=stuk+1.Age; strcpy(teacher.Se*,stuk+1.Se*); teacher.Birthday=stuk+1.Birthday; strcpy(teacher.Adress,stuk+1.Adress); strcpy(teacher.TelNum,stuk+1.TelNum); strcpy(teacher.Email,stuk+1.Email);stuk+1.ID=stuk.ID;strcpy(stuk+1.Name,stuk.Name); stuk+1.Age=stuk.Age; strcpy(stuk+1.Se*,stuk.Se*); stuk+1.Birthday=stuk.Birthday;strcpy(stuk+1.Adress,stuk.Adress); strcpy(stuk+1.TelNum,stuk.TelNum);strcpy(stuk+1.Email,stuk.Email); stuk.ID=teacher.ID; strcpy(stuk.Name,teacher.Name); stuk.Age=teacher.Age; strcpy(stuk.Se*,teacher.Se*); stuk.Birthday=teacher.Birthday; strcpy(stuk.Adress,teacher.Adress); strcpy(stuk.TelNum,teacher.TelNum); strcpy(stuk.Email,teacher.Email); printf(n 教师号 年龄 性别 出生年月t 地址t t n); for(i=0;iMa*;i+) printf(%8d %10s %2d %2s %8d %15s %12s %10s,stui.ID,stui.Name,stui.Age,stui.Se*,stui.Birthday,stui.Adress,stui.TelNum,stui.Email); printf(n); else if(i=2) for(k=0;jMa*;j+) for(;k0) teacher.ID=stuk+1.ID; strcpy(teacher.Name,stuk+1.Name); teacher.Age=stuk+1.Age; strcpy(teacher.Se*,stuk+1.Se*); teacher.Birthday=stuk+1.Birthday; strcpy(teacher.Adress,stuk+1.Adress); strcpy(teacher.TelNum,stuk+1.TelNum); strcpy(teacher.Email,stuk+1.Email);stuk+1.ID=stuk.ID;strcpy(stuk+1.Name,stuk.Name); stuk+1.Age=stuk.Age; strcpy(stuk+1.Se*,stuk.Se*); stuk+1.Birthday=stuk.Birthday;strcpy(stuk+1.Adress,stuk.Adress); strcpy(stuk+1.TelNum,stuk.TelNum);strcpy(stuk+1.Email,stuk.Email); stuk.ID=teacher.ID; strcpy(stuk.Name,teacher.Name); stuk.Age=teacher.Age; strcpy(stuk.Se*,teacher.Se*); stuk.Birthday=teacher.Birthday; strcpy(stuk.Adress,teacher.Adress); strcpy(stuk.TelNum,teacher.TelNum); strcpy(stuk.Email,teacher.Email); printf(n 教师号 年龄 性别 出生年月t 地址t t n); for(;lMa*;l+) printf(%10s %8d %2d %2s %8d %15s %12s %10s,stu
展开阅读全文