ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:688.33KB ,
资源ID:16481078      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16481078.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(教师信息管理系统C语言课程设计Word文件下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

教师信息管理系统C语言课程设计Word文件下载.docx

1、三个阶段时间分配的大概比例是: 35:45:20。五、完成后应上交的材料1课程设计的题目、系统的总功能和各子模块的功能;2题目的设计思想(或算法)简述;3主要程序的框图(要求用N-S图);4源程序代码(要求在关键的位置有注释,从而增加程序的可读性);5课程设计的总结报告,主要包括以下内容:(1)课程设计中遇到的主要问题和解决方法;(2)你的创新和得意之处;(3)设计中存在的不足及改进的设想;(4)本次课程设计的感想和心得体会。 以上完成的源程序及相关文档,填写在课程设计说明书上,要求干净整洁,符合课程设计的要求和规范。六、总评成绩 指导教师 签名日期 年 月 日 系 主 任 审核日期 年 月

2、日一题目设计思想简述5二程序的NS图72.1总程序的NS图2.2各子函数的NS图2.2.1教师信息录入函数82.2.2教师信息浏览函数2.2.3教师信息删除函数92.2.4教师信息查询函数2.2.5教师信息排序函数10三源程序代码11四程序运行效果图334.1登陆界面4.2菜单栏4.3录入功能344.4浏览功能4.5删除功能354.6查询功能4.7排序功能36五总结报告375.1课程设计中遇到的主要问题和解决方法5.2你的创新和得意之处5.3设计中存在的不足及改进的设想5.4本次课程设计的感想和心得体会38一题目设计思想简述如上图所示,该教师信息管理系统主要是一个以动态链表的应用为基础来实现对

3、教师信息的录入,查询,删除等功能。定义教师结构体如下:struct teacher long num;/教师号 char name20;/姓名 char sex5;/性别 int age;/年龄 char edu20;/学历 char title20;/职称 long wage;/工资 char addr100; /地址 char telep15;/电话 struct teacher *next;*head=NULL;主函数只进行口令函数和菜单栏函数的调用,主要工作通过菜单函数实现。口令为123456。菜单栏函数通过用switch语句实现不同功能的选择,不同的功能用不同的子函数实现。录入教师信

4、息通过建立动态单链表来实现。浏览教师信息则通过将链表所有数据顺序输出来实现。查询功能只要从链表头开始不断往下一个结点读取信息跟所要查 找的信息比较,直到读取到的信息跟所要查找的信息相同或链表尾为止,并把此结点的信息输出。删除教师信息的函数是通过查找链表中有该信息的结点后将该结点移出链表,即使该结点前一个结点直接指向该结点后面的结点来达到删除信息的目的。 排序函数是通过交换结点在链表中的位置来实现的,即使得各结点在链表中的位置便是所要得到的排序该信息应在的位置,这样直接顺序输出链表的信息时就能按所要的排序输出了。二程序的NS图2.1总程序的NS图说明:各功能都是通过调用子函数来实现的。2.2各子

5、函数的NS图子函数主要包括教师信息录入,教师信息浏览,教师信息删除,教师信息查询和教师信息排序等5个。在退出系统时调用了一个保存信息到文件中的函数,该函数只是简单的应用了文件的读写功能,在此不写出其NS图。2.2.1教师信息录入函数p1=(struct teacher *)malloc(LEN)中LEN是在程序开头的宏定义(#define LEN sizeof(struct teacher)。其中n为全局变量,用来统计链表的结点数,以下出现的n都是同一个。2.2.2教师信息浏览函数实际程序中在链表头为空是提供了可以浏览之前保存在文件中的信息的功能,当选择该功能时就调用了一个读取文件的函数。该函

6、数只是对文件读写的简单应用,详细请看后面第三部分代码,这里不写出其N-S图。2.2.3教师信息删除的函数2.2.4教师信息查询的函数在查询方面程序为用户提供了4种不同方式的查询,每一种方式的查询为一个子函数,此时也是采用一个菜单栏函数进行选择查询方式并调用该种方式的函数。菜单栏函数跟主程序菜单栏的算法一样,此处只给出查询函数的NS图。该NS图是对应姓名,教师号,职称,年龄四种查找方式的函数的。当选择教师号查找时,输入i的即为教师号,与i做比较的为p中的教师号,选择其他查找方式时类似。2.2.5教师信息排序函数排序也跟查询一样给出多种排序方式并采用菜单栏函数,此处也只给出排序函数的NS图。p1,

7、p2指向的结点用来比较,p3,p4是用来记录结点的,当选用的排序方式不同,p1,p2用来比较的信息为所选方式的信息。三源程序代码#include malloc.hstdlib.hstring.h#define LEN sizeof(struct teacher)/宏定义结构体字节数int n=0;struct teacher/定义结构体/地址 /指向下一个结点void key()/口令检查的函数 int i; long a; for(i=0;inext) if(fwrite(p,sizeof(struct teacher),1,fp)!=1)n此处数据有误n fclose(fp); exit(

8、0);void read()/从文件读出数据的函数 struct teacher teach299,temp; int i=0;n请输入存有教师信息的文件名:rb printf( fseek(fp,-sizeof(struct teacher),2);/*将位置指针从文件末尾后退一个结构体的字节数*/ fread(&temp,sizeof(struct teacher),1,fp);/*从所指向的文件中读出数据存储到结构体变量temp中*/ fseek(fp,0,0);/将位置指针移到文件的开头 if(fread(&teachi,sizeof(struct teacher),1,fp)=1)/

9、*判断文件开头读入的数据是否为空*/n存有的教师信息如下: while(teachi.num!=temp.num)/进行循环读取文件教师号:%ld,姓名:%s,性别:%s,年龄:%d,学历:%s,teachi.num,teachi.name,teachi.sex,teachi.age,teachi.edu);职称:%sn 月薪:%ld,住址:%s,电话:%sn,teachi.title,teachi.wage,teachi.addr,teachi.telep); i=i+1; fread(&teachi,sizeof(struct teacher),1,fp);/*从文件中读入数据存储到结构体

10、变量teach【i】中*/输出文件中的最后一个信息 fclose(fp); else printf(该文件中无教师信息n/文件为空时输出此处void creat()/录入教师信息的函数 struct teacher *p1,*p2,*p3; p1=p2=(struct teacher *)malloc(LEN);/*申请一个结构体字节数的空间用来存储一个教师的信息*/请输入一位教师的教师号(结束录入请输入0):p1-num); if(p1-num!=0)/判断用户是要结束录入还是要存储信息 if(head=NULL) head=p1;/*判断链表是否为空,是则将链表头指向p1*/ else /

11、链表不为空则将链表尾指向p1 p3=head;/p3用来记录链表的尾部 while(p3-next!=NULL)/*若p3不是链表尾则将p3指向 下一个结点*/ p3=p3-next; p3-next=p1;/将最后一个结点指向p1 while(p1-=0)/判断用户是否结束录入功能/录入该教师号的教师对应的信息姓名: ,p1-name);性别:sex);年龄:age);学历:edu);职称:title);月薪:wage);住址:addr);电话:telep); n=n+1;/给统计录入的教师数n加一/*判断是否为第一个录入的信息,是则将链表头指向p1,否则将p2指向p1*/ if(n=1)

12、head=p1; else p2- p2=p1;/p2用来记录链表的最后一个结点 p1=(struct teacher *)malloc(LEN);/重新申请空间请输入一位教师的教师号(结束录入请输入0): p2-next=NULL;/将最后一个结点指向空void print()/输出教师信息的函数 p=head; if(head!=NULL)/判断链表是否为空n这%d位教师的信息为:,n); do%s,职称:,p-num,p-name,p-sex,p-age,p-edu,p- 月薪:wage,p-addr,p- p=p-/将下一个结点的首地址赋给p while(p!=NULL);/到链表尾时

13、结束循环 else/链表为空时执行以下部分n你此次登录系统还没有录入教师信息,可进行以下操作:【浏览以前保存在文件中的教师信息】 2:【开始录入教师信息】n 3:【退出系统】 4:【返回菜单】n请选择: while(i4) scanf( if(i=1) read();/调用从文件读取数据的函数 if(i=2) creat();/调用录入信息的函数 if(i=3) exit(0);/退出系统void del()/删除教师信息的函数 struct teacher *p1,*p2; long i; if(head=NULL)/判断链表是否为空n还未录入过教师信息n/链表为空时输出 return;请输

14、入要删除教师信息的教师号: p1=head; while(i!=p1-num)/直到p1指向的结点是要删除的信息位置 if(p1-next=NULL) break;/p1的下个结点为空则退出循环/p2用来记录p1的前一个结点 p1=p1-/p1指向下一个结点 if(i=p1-num)/判断p1是否为要删除的信息 if(p1=head) head=p1-/*若p1为头结点则将头指针指向p1的下一个结点*/ else p2-next=p1-/*p1非头结点则将p1后面的结点连接到p1前一个结点的后面*/n已删除教师号为%ld的教师信息n,i); n=n-1;/记录教师数的n要减一/p1不是要删除的

15、信息则表示要删除的信息不再链表中n已录入的教师信息中没有教师号为%ld的n return;void sort1()/按教师号进行排序的函数 struct teacher *p1,*p2,*p3,*p4; int i,j; if(head=NULL) return; if(head-=NULL) /判断是否只有一个信息 /用冒泡法排序 p1=head;/p1记录用来比较的两个结点中的前面一个 p2=head-/p2记录比较的两个结点中的后面个 for(i=1;n;i+)/实现n-1趟比较的外循环 for(j=0;jnump2-num)/*比较相邻两个结点中教师号大小*/ /当p1的教师号大时则对

16、调两个结点的位置 if(p1=head) head=p2; else p3-next=p2;/*p1为头结点时则将头指针指向p2,否则就将p2连接到用来记录p1前一个结点的p3的后面*/ p4=p2-/p4用来记录p2后面的结点 p2-/p1的结点换到原来p2的位置 p1-next=p4;/原来p2后面的结点连接到p1 p3=p2;/p3记录下p2的位置 p2=p4;/p2指向原来位置的下一个结点 else/*p1中教师号没有打过p2中教师号,则将p1,p2都指向它们各自位置的下一个结点*/ p3=p1;/记录p1后移一位后它前个结点的位置 p1=p2; p2=p2- p1=head;/p1指向链表头,开始下一趟外循环的准备 p2=p1-/p2指向链表第二个结点n按教师号排序后的教师信息如下: print();/调用教师信息浏览函数void sort2()/按月薪排序的函数,算法跟按教师号排序的一样 if(head=NULL

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1