教师信息管理系统(C语言课程设计)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1课程设计任务书计算机科学与技术专业2010年级一班陈金利一、设计题目教师信息管理系统设计二、主要内容教师信息包括教师号、姓名、性别、年龄、学历、职称、工资、住址、电话等(教师号不重复)。试设计一教师信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)教师信息录入功能--输入(3)教师信息删除功能(4)教师信息浏览功能--输出(5)查询和排序功能:(至少一种查询方式)--算法按教师号查询按职称查询等三、具体要求围绕课程设计的目的和意义,基本要求如下:1、认真阅读《C语言课程设计》指导书,明确课程设计的目的、意义和要求;2、快速总结C程序设计语言的精髓,如:函数的概念、函数的设计和函数的调用;23、快速熟悉TuberC或C++的上机环境。能熟练进行高级编辑操作(特别是字块操作);熟悉步进式、断点跟踪的程序调试方法,提高工作效率。4、根据“课程设计题目”,采用结构化的程序设计思想,确定系统的总体设计方案、确定时间进度。如果是多人共一题,则要首先完成小组内的人员分工及安排,不允许重题现象。5.学习并了解良好的程序设计风格。按质、按量、并按时间完成课程设计的任务。6.提供可运行的课程设计系统,参加上机面试答辩。本次课程设计的重点是:学会设计并编写函数,掌握好各函数之间的调用关系;利用文件操作函数,建立数据库并完成对数据库的各种操作;掌握几种典型算法的应用(如:冒泡法、选择排序法和折半查找法)。同时锻炼学生根据题目进行分析、设计、编码、调试程序和书写必要文档的综合处理能力,从实践中学习并体会程序设计的结构化思想和设计方法。四、进度安排依照教学计划,课程设计时间为3周。按照软件工程的思想,软件系统的分析设计至关重要,并要充分重视书写“文档”。避免甚至杜绝“拿到题目就编码”的现象。建议将时间分为三个阶段:第一阶段,根据题目要求,拿出系统的总体设计方案:即构思各程序模块的算法,并画出相应的N-S图,同时编写相应的文档;第二阶段,根据N-S图编写程序代码并单独调试,再将调试通过的各个子模块进行集成调试;第三阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。3三个阶段时间分配的大概比例是:35:45:20。五、完成后应上交的材料1.课程设计的题目、系统的总功能和各子模块的功能;2.题目的设计思想(或算法)简述;3.主要程序的框图(要求用N-S图);4.源程序代码(要求在关键的位置有注释,从而增加程序的可读性);5.课程设计的总结报告,主要包括以下内容:(1)课程设计中遇到的主要问题和解决方法;(2)你的创新和得意之处;(3)设计中存在的不足及改进的设想;(4)本次课程设计的感想和心得体会。以上完成的源程序及相关文档,填写在《课程设计说明书》上,要求干净整洁,符合课程设计的要求和规范。六、总评成绩指导教师签名日期年月日系主任审核日期年月日4目录一.题目设计思想简述·······································5二.程序的N—S图··········································72.1总程序的N—S图·····································72.2各子函数的N—S图···································72.2.1教师信息录入函数···································82.2.2教师信息浏览函数···································82.2.3教师信息删除函数···································92.2.4教师信息查询函数···································92.2.5教师信息排序函数··································10三.源程序代码·············································11四.程序运行效果图········································334.1登陆界面···········································334.2菜单栏·············································334.3录入功能···········································344.4浏览功能···········································344.5删除功能···········································354.6查询功能···········································354.7排序功能···········································36五.总结报告··············································375.1课程设计中遇到的主要问题和解决方法·················375.2你的创新和得意之处·································375.3设计中存在的不足及改进的设想·······················375.4本次课程设计的感想和心得体会·······················385一.题目设计思想简述如上图所示,该教师信息管理系统主要是一个以动态链表的应用为基础来实现对教师信息的录入,查询,删除等功能。定义教师结构体如下:structteacher{longnum;//教师号charname[20];//姓名charsex[5];//性别intage;//年龄charedu[20];//学历chartitle[20];//职称longwage;//工资charaddr[100];//地址chartelep[15];//电话structteacher*next;主函数退出系统识别口令的函数菜单栏函数录入教师信息的函数查询教师信息的函数删除教师信息的函数浏览教师信息的函数教师信息排序的函数6}*head=NULL;主函数只进行口令函数和菜单栏函数的调用,主要工作通过菜单函数实现。口令为123456。菜单栏函数通过用switch语句实现不同功能的选择,不同的功能用不同的子函数实现。录入教师信息通过建立动态单链表来实现。浏览教师信息则通过将链表所有数据顺序输出来实现。查询功能只要从链表头开始不断往下一个结点读取信息跟所要查找的信息比较,直到读取到的信息跟所要查找的信息相同或链表尾为止,并把此结点的信息输出。删除教师信息的函数是通过查找链表中有该信息的结点后将该结点移出链表,即使该结点前一个结点直接指向该结点后面的结点来达到删除信息的目的。排序函数是通过交换结点在链表中的位置来实现的,即使得各结点在链表中的位置便是所要得到的排序该信息应在的位置,这样直接顺序输出链表的信息时就能按所要的排序输出了。7二.程序的N—S图2.1总程序的N—S图说明:各功能都是通过调用子函数来实现的。2.2各子函数的N—S图子函数主要包括教师信息录入,教师信息浏览,教师信息删除,教师信息查询和教师信息排序等5个。在退出系统时调用了一个保存信息到文件中的函数,该函数只是简单的应用了文件的读写功能,在i=0当i3当b1或b6输入口令aTa=123456?F假退出循环i=i+1Ti=3?F口令3次输入错误,退出系统输入所选择的功能b重新输入所要选择的功能bTb=1?F教师信息录入功能Tb=2?F教师信息浏览功能Tb=3?F教师信息删除功能Tb=4?F教师信息查询功能Tb=5?F教师信息排序功能退出系统8此不写出其N—S图。2.2.1教师信息录入函数说明:p1=(structteacher*)malloc(LEN)中LEN是在程序开头的宏定义(#defineLENsizeof(structteacher))。其中n为全局变量,用来统计链表的结点数,以下出现的n都是同一个。2.2.2教师信息浏览函数p1=(structteacher*)malloc(LEN)输入一个教师号p1-numT教师号为0?FT链表头为空?FHead=p1p3=head当p3-next不为空p3=p3-nextp3-next=p1当教师号不为0输入教师的姓名,性别,年龄,学历,职称,月薪,住址,电话T第一个录入?Fhead=p1p2-next=p1p2=p1p1=(structteacher*)malloc(LEN)输入一个教师号p1-nump2-next=NULLn=n+1n9直到p为空说明:实际程序中在链表头为空是提供了可以浏览之前保存在文件中的信息的功能,当选择该功能时就调用了一个读取文件的函数。该函数只是对文件读写的简单应用,详细请看后面第三部分代码,这里不写出其N-S图。2.2.3教师信息删除的函数2.2.4教师信息查询的函数在查询方面程序为用户提供了4种不同方式的查询,每一种方式的查询为一个子函数,此时也是采用一个菜单栏函数进行选择查询方式并调用该种方式的函数。菜单栏函数跟主程序菜单栏的算法一样,T链表头为空?Fp=head显示“还未录入过信息”输出p所指向的位置中的教师的所有信息p=p-nextT链表头为空?F输出“还未录入过教师信息”输入要删除教师信息的教师号ip1=head当i!=p1-numTp1-next为空?F退出循环p2=p1p1=p1-nextTi!=p1-num?F输出“已录入的教师信息中没有该教师号”Tp1为链表头?Fhead=p1-nextp2-next=p1-nextn=n-110此处只给出查询函数的N—S图。说明:该N—S图是对应姓名,教师号,职称,年龄四种查找方式的函数的。当选择教师号查找时,输入i的即为教师号,与i做比较的为p中的教师号,选择其他查找方式时类似。2.2.5教师信息排序函数排序也跟查询一样给出多种排序方式并采用菜单栏函数,此处也只给出排序函数的N—S图。T链表头为空?F输出“还未录入程序”并退出函数输入要查找的教师信息的对应方法的对应数据ip=head当p非空时Ti跟p中对应信息不等?F输出p所指向的位置的教师的所有信息j=j+1j=0p=p-nextTj不为0?F输出“已录入的信息中不存在符合i的信息的教师T链表头不为空?F输出“还未录入过教师信息”并退出函数T第二个结点为空?Fp1=headp2=head-next11说明:p1,p2指向的结点用来比较,p3,p4是用来记录结点的,当选用的排序方式不同,p1,p2用来比较的信息为所选方式的信息。i=1当i小于n时j=0当j小于n-i时p1中的对应信息小过p2的?TFTp1为链表头?Fhead=p2p3-next=p2p4=p2-nextp2-next=p1p1-next=p4p3=p2p2=p4p3=p1p1=p2p2=p2-nextp1=headp2=p1-next调用教师信息浏览函数12三.源程序代码#includestdio.h#includemalloc.h#includestdlib.h#includestring.h#defineLENsizeof(structteacher)//宏定义结构体字节数intn=0;structteacher//定义结构体{longnum;//教师号charname[20];//姓名charsex[5];//性别intage;//年龄charedu[20];//学历chartitle[20];//职称longwage;//工资charaddr[100];//地址chartelep[15];//电话structteacher*next;//指向下一个结点}*hea

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功