教师基本信息管理系统数据结构课程设计.docx

上传人:b****5 文档编号:4047980 上传时间:2022-11-27 格式:DOCX 页数:29 大小:70.45KB
下载 相关 举报
教师基本信息管理系统数据结构课程设计.docx_第1页
第1页 / 共29页
教师基本信息管理系统数据结构课程设计.docx_第2页
第2页 / 共29页
教师基本信息管理系统数据结构课程设计.docx_第3页
第3页 / 共29页
教师基本信息管理系统数据结构课程设计.docx_第4页
第4页 / 共29页
教师基本信息管理系统数据结构课程设计.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

教师基本信息管理系统数据结构课程设计.docx

《教师基本信息管理系统数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《教师基本信息管理系统数据结构课程设计.docx(29页珍藏版)》请在冰豆网上搜索。

教师基本信息管理系统数据结构课程设计.docx

教师基本信息管理系统数据结构课程设计

数据结构

课程设计(论文)

教师基本信息管理系统

院(系)名称

专业班级

学号

学生姓名

指导教师

起止时间:

2014.12.29—2015.1.9

 

课程设计(论文)任务及评语

院(系):

电子与信息工程学院教研室:

软件工程

学号

学生姓名

专业班级

课程设计(论文)题目

教师基本信息管理系统

课程设计(论文)任务

任务要求:

教师基本信息管理系统有以下几个功能:

输入和输出教师信息;信息查询排序;删除和修改教师信息;查新教师信息。

输入信息即为在初始时所输入的教师信息,即个人姓名、性别、出生年月、学历、家庭住址和电话号码,还有在职时的教师号、工作时间、和职务,以方便在输出时提供了基础。

还有例如进行教师评估时所要进行的信息查询。

离职或退休的教师则进行删除信息。

若进行查看时如有错误信息,及时能进行修改。

所有的都为了在查询信息时更方便。

技术要求:

1、数据的逻辑结构采用线性结构,物理结构采用链式存储结构。

2、软件能正常运行,界面清晰,操作要简单。

3、系统要有主界面设计,调用各个功能项。

4、采用ViscalC++编写代码,可读性强。

5、数据类型用typedef定义。

指导教师评语及成绩

 

平时成绩:

答辩成绩:

论文成绩:

总成绩:

指导教师签字:

年月日

注:

平时成绩占20%,答辩成绩占40%,论文成绩占40%。

摘要

教师基本信息管理系统是新时期的一个计算机语言的一个编译系统。

通过系统分析、设计,调试程序,进一步掌握方法和应用。

这样的系统在实际的应用中有很大的帮助,它把教师的基本信息输入到电脑中,使电脑存留教师信息,而后进行修改和删除及查找工作。

得到信息的完整性和严密性。

它可以在校园内规模的使用,达到一种严密、正确、方便查看及进行修改。

达到人满意的效果,在新旧老教师之间也有一个的记录,课程分科明显,在查询时是极方便的。

在数据结构方向上,它也是思维的锻炼,更加灵活的运用计算机语言。

使人明白懂得这样的信息,更加了解。

系统的开发主要包括使用C++程序,建立成数据一致性和完整性强、数据安全性好的数据,具有应用程序功能完备,易使用等特点。

关键词:

 

第1章绪论

1.1系统的开发背景

伴随着信息技术和网络技术的发展,人类已进入了知识的时代。

教师基本信息管理系统是新时期的以计算机语言为基础的系统。

伴随着知识在生活中重要性的提升,校园中教师信息更是需要有一个高级的系统去管理。

本系统的开发,是由于在现今的高校中需要这样的系统去管理教师的基本的信息,这样既可以方便查找入职与离职的教师信息,可以完善教师的全备的信息,相对比以往的手动、手写的资料更易存放与查找和保存,越来越高科技的时代,更需要人来采用这样的一种手段去适应这个时代。

通过对教师信息的输入和输出,完善教师信息,删除离岗教师信息是一个非常好的前景。

1.2开发工具及语言

本系统使用ViscalC++语言开发,主界面清晰显示所有功能项,使用简单。

各个功能项均定义一个函数来实现,在主函数中调用各个子函数实现不同的功能。

 

第2章概要设计

2.1模块划分

题目应实现的具体功能;

a.教师基本信息包括:

在职教师号、姓名(必填)、教师性别(必填)、教师出生年月、教师入职时间(必填)、教师岗位(必填)、教师住址及联系方式(必填)。

b.系统能实现的操作和功能如下:

1.输入教师基本信息:

首先要把新赠的教师的信息输入到电脑中,使系统存留教师的信息。

2.删除教师信息:

从教师管理文件中删除一名教师对象,可能为退休或离岗。

3.查询信息:

从教师管理文件中查询符合某些条件的教师,使查询目的成功。

4.修改信息:

检索某个教师对象,对其某些属性进行修改,例如:

姓名、性别等。

5.排序:

按某种需要对教师对象文件进行排序。

得到目的。

2.2数据结构的选择

系统数据的逻辑结构采用线性结构,物理结构采用链式存储结构。

存储结构定义如下:

staticstructstaff

{

intnum;

charname[20];

charsex;

longbyear;//birthyear出生年月

longiyear;//imployyear工作年月

chareducation[20];

charduty[20];

charaddress[20];

第3章系统详细设计与编码

3.1完整的源程序

#include

#include

#include

#include

#defineI100

staticchartempstr[20];/*用于临时存储输入信息的数组*/

staticstructstaff

{

intnum;

charname[20];

charsex;

longbyear;//birthyear出生年月

longiyear;//imployyear工作年月

chareducation[20];

charduty[20];

charaddress[20];

charphone[20];

structstaff*next;

}*head=NULL,*thisn,*newn,sta[I]={0},temp;/*temp用于交换的中间量*/

voidcin(void);/*输入信息*/

intidentify(intnum);/*对教师号是否重复进行验证*/

voidcout(void);/*输出信息*/

voidsort(void);/*查询排序*/

voiddel(void);/*删除教师信息*/

intrecord(void);/*将文件中的数据录入结构体数组中*/

voidiyear(intj);/*按工作年月排序*/

voideducation(intj);/*按学历排序*/

voidmodify(void);/*修改教师信息*/

voiddescending(void);/*学历降序输出*/

voidascending(void);/*学历升序输出*/

voidprintmsg(inti);/*输出信息*/

voidseek(void);/*查询教师信息*/

intmain(void)

{

intflag=1;

while(flag)

{

system("cls");/*清屏*/

printf("欢迎登陆教师信息管理系统!

\n");

printf("【1】输入教师信息【2】输出教师信息\n");

printf("【3】信息查询排序【4】删除教师信息\n");

printf("【5】修改教师信息【6】查询教师信息\n");

printf("请输入以上数字,选择相应的功能:

");

switch(getchar())

{

case'1':

cin();break;/*调用输入信息的函数*/

case'2':

cout();break;/*调用输出信息的函数*/

case'3':

sort();break;/*调用排序的函数*/

case'4':

del();break;/*调用删除教师信息函数*/

case'5':

modify();break;/*调用修改教师信息的函数*/

case'6':

seek();break;/*查询教师信息*/

default:

flag=0;break;/*跳出循环体,结束程序*/

}

}

return0;

}

voidcin(void)/*输入信息的函数*/

{

FILE*fp;

intreceive;/*接收返回值*/

if((fp=fopen("information.txt","a+"))==NULL)/*为读写打开一个文本文件*/

{

printf("文件打开错误\n");

exit

(1);/*关闭所有文件,终止正在执行的程序,待用户检查出错误,修改后再运行*/

}

newn=(structstaff*)malloc(sizeof(structstaff));

if(head==NULL)/*连接链表*/

{

head=newn;

thisn=newn;

thisn->next=NULL;

}

else

{

thisn=head;

while(thisn->next!

=NULL)

thisn=thisn->next;

thisn->next=newn;

thisn=newn;

}

getchar();/*接收缓冲区中选择菜单时多余的回车*/

fputc('\n',fp);/*每次记录信息前先换行*/

printf("请输入教师号:

");

gets(tempstr);

thisn->num=atoi(tempstr);/*atoi()将字符串转换成整型数*/

receive=identify(thisn->num);

while(receive)

{

printf("请输入教师号:

");

gets(tempstr);thisn->num=atoi(tempstr);

receive=identify(thisn->num);

}

fputs(tempstr,fp);

fputs("",fp);/*信息排版的需要*/

printf("请输入姓名:

");

gets(thisn->name);

fputs(thisn->name,fp);

fputs("",fp);

printf("请输入性别(填F或M):

");

thisn->sex=getchar();getchar();

fputc(thisn->sex,fp);

fputs("",fp);

printf("请输入出生年月(如199001):

");

gets(tempstr);thisn->byear=atoi(tempstr);

fputs(tempstr,fp);

fputs("",fp);

printf("请输入工作年月(如199001):

");

gets(tempstr);thisn->iyear=atoi(tempstr);

fputs(tempstr,fp);

fputs("",fp);

printf("请输入学历(博士、硕士、本科、其他):

");

gets(thisn->education);

fputs(thisn->education,fp);

fputs("",fp);

printf("请输入岗位:

");

gets(thisn->duty);

fputs(thisn->duty,fp);

fputs("",fp);

printf("请输入地址:

");

gets(thisn->address);

fputs(thisn->address,fp);

fputs("",fp);

printf("请输入电话号码:

");

gets(thisn->phone);

fputs(thisn->phone,fp);

thisn->next=NULL;

fclose(fp);

system("cls");/*清屏*/

}

intidentify(intnum)/*对教师号是否重复进行验证*/

{

FILE*fp;

inti;

if((fp=fopen("information.txt","r"))==NULL)

{

printf("文件打开错误");

exit

(1);

}

for(i=0;i

{

fscanf(fp,"%d%s%c%ld%ld%s%s%s%s\n",

&sta[i].num,&sta[i].name,&sta[i].sex,&sta[i].byear,&sta[i].iyear,&sta[i].education,&sta[i].duty,

&sta[i].address,&sta[i].phone);

if(sta[i].num==num)

{

system("cls");

printf("账号已存在【1】重新输入【2】退出系统\n");

printf("请输入以上数字,选择相应的功能:

");

switch(getchar())

{

case'1':

getchar();return

(1);/*输入不成功,返回值作为循环条件*/

case'2':

exit

(1);/*退出系统*/

}

}

if(sta[i].num==0)/*动态限制循环输出的次数*/

break;

}

fclose(fp);

return(0);/*输入成功,返回值作为循环条件*/

}

voidcout(void)/*输出信息*/

{

FILE*fp;

ints,i,j;

system("cls");

if((fp=fopen("information.txt","r"))==NULL)

{

printf("文件打开错误");

exit

(1);

}

for(i=0;i

{

fscanf(fp,"%d%s%c%ld%ld%s%s%s%s\n",

&sta[i].num,&sta[i].name,&sta[i].sex,&sta[i].byear,&sta[i].iyear,&sta[i].education,&sta[i].duty,

&sta[i].address,&sta[i].phone);

if(sta[i].num==0)/*动态限制循环输出的次数*/

break;

}

s=record();

setlocale(LC_COLLATE,"");

for(j=0;j

for(i=0;i

{

if(strcoll(sta[i].name,sta[i+1].name)>0)

{

temp=sta[i];

sta[i]=sta[i+1];

sta[i+1]=temp;

}

}

printf("教师号姓名性别出生年月工作年月学历岗位地址电话\n");

printf("-----------------------------------------------------------------------------\n");

for(i=0;i

printmsg(i);

fclose(fp);

getchar();/*接收回车*/

printf("\n\n\n\n\n回到主界面请按r退出系统请按其他键\n");

switch(getchar())

{

case'r':

getchar();system("cls");break;/*getchar()接收回车*/

default:

exit(0);

}

}

voidsort(void)/*查询排序*/

{

intj;

getchar();/*接收回车*/

j=record();

printf("【1】按工作年月排序【2】按学历排序\n");

printf("请输入以上数字,选择相应的功能:

");

switch(getchar())

{

case'1':

iyear(j);break;

case'2':

education(j);break;

}

getchar();/*接收回车*/

getchar();/*接收回车*/

system("cls");

printf("【1】回到主界面【2】退出系统\n");

printf("请输入以上数字,选择相应的功能:

");

switch(getchar())

{

case'1':

getchar();system("cls");break;

default:

exit

(1);

}

}

voidiyear(intj)/*按工作年月排序*/

{

inti,k;/*i,k用于循环体中以及用于结构体下标*/

system("cls");

for(k=0;k

for(i=0;i<=j-k-1;i++)

{

if(sta[i].iyear

{

temp=sta[i];

sta[i]=sta[i+1];

sta[i+1]=temp;

}

}

printf("教师号姓名性别出生年月工作年月学历岗位地址电话\n");

printf("-----------------------------------------------------------------------------\n");

for(i=0;i<=j-1;i++)

printf("%-5d%-10s%-4c%-4ld%-4ld%-6s%-6s%-20s%-s\n",

sta[i].num,sta[i].name,sta[i].sex,sta[i].byear,sta[i].iyear,sta[i].education,sta[i].duty,

sta[i].address,sta[i].phone);

printf("【1】返回上一级【2】退出系统\n");

printf("请输入以上数字,选择相应的功能:

");

switch(getchar())

{

case'1':

system("cls");break;

case'2':

exit

(1);break;

}

}

voideducation(intj)/*按学历排序*/

{

FILE*fp;

inti;

if((fp=fopen("information.txt","r"))==NULL)

{

printf("文件打开错误");

exit

(1);

}

for(i=0;i

{

if(sta[i].num==0)/*动态限制循环输出的次数*/

break;

fscanf(fp,"%d%s%c%ld%ld%s%s%s%s\n",

&sta[i].num,&sta[i].name,&sta[i].sex,&sta[i].byear,&sta[i].iyear,&sta[i].education,&sta[i].duty,

&sta[i].address,&sta[i].phone);

}

fclose(fp);

getchar();

printf("【1】学历降序排列【2】学历升序排列\n");

printf("请输入以上数字,选择相应的功能:

");

switch(getchar())

{

case'1':

descending();break;

case'2':

ascending();break;

}

printf("\n\n按任意键返回上一级");

}

 

voiddel(void)/*删除教师信息*/

{

FILE*fp;

intnum,i,j,k;/*num用于输入要删除的教师号,i用于循环体以及数组下标,j记录教师人数*/

printf("请输入要删除的教师号:

");

scanf("%d",&num);

getchar();/*接收回车*/

system("cls");

if((fp=fopen("information.txt","r"))==NULL)

{

printf("文件打开错误");

exit

(1);

}

for(i=0;i

{

fscanf(fp,"%d%s%c%ld%ld%s%s%s%s\n",

&sta[i].num,&sta[i].name,&sta[i].sex,&sta[i].byear,&sta[i].iyear,&sta[i].education,&sta[i].duty,

&sta[i].address,&sta[i].phone);

if(sta[i].num==0)

break;

if(sta[i].num==num)

j=i;

}

fclose(fp);

if((fp=fopen("information.txt","w"))==NULL)/*重新向文件输入所有信息*/

{

printf("文件打开错误");

exit

(1);

}

for(k=j;k

sta[k]=sta[k+1];

for(i=0;i

{

sprintf(tempstr,"%d",sta[i].num);/*将整型数转化成字符串*/

fputs(tempstr,fp);

fputs("",fp);

fputs(sta[i].name,fp);

fputs("",fp);

fputc(sta[i].sex,fp);

fputs("",fp);

sprintf(tempstr,"%ld",sta[i].byear);

fputs(tempstr,fp);

fputs("",fp);

sprintf(tempstr,"%ld",sta[i].iyear);

fputs(tempstr,fp);

fputs("",fp);

fputs(sta[i].education,fp);

fputs("",fp);

fputs(sta[i].duty,fp);

fputs("",fp);

fputs(sta[i].address,fp);

fputs("",fp);

fputs(sta[i].phone,fp);

fputc('\n',fp);

}

fclose(fp);

}

intrecord(void)/*将文件中的数据录入结构体数组中*/

{

FILE*fp;

inti,j;/*j用于记录教师的人数*/

system("cls"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

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

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