教师基本信息管理系统数据结构课程设计Word下载.docx
《教师基本信息管理系统数据结构课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《教师基本信息管理系统数据结构课程设计Word下载.docx(29页珍藏版)》请在冰豆网上搜索。
平时成绩:
答辩成绩:
论文成绩:
总成绩:
指导教师签字:
年月日
注:
平时成绩占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<
stdio.h>
stdlib.h>
string.h>
#include<
locale.h>
#defineI100
staticchartempstr[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"
【1】输入教师信息【2】输出教师信息\n"
【3】信息查询排序【4】删除教师信息\n"
【5】修改教师信息【6】查询教师信息\n"
请输入以上数字,选择相应的功能:
"
switch(getchar())
case'
1'
:
cin();
break;
/*调用输入信息的函数*/
2'
cout();
/*调用输出信息的函数*/
3'
sort();
/*调用排序的函数*/
4'
del();
/*调用删除教师信息函数*/
5'
modify();
/*调用修改教师信息的函数*/
6'
seek();
default:
flag=0;
/*跳出循环体,结束程序*/
}
return0;
}
voidcin(void)/*输入信息的函数*/
FILE*fp;
intreceive;
/*接收返回值*/
if((fp=fopen("
information.txt"
"
a+"
))==NULL)/*为读写打开一个文本文件*/
文件打开错误\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;
next=newn;
getchar();
/*接收缓冲区中选择菜单时多余的回车*/
fputc('
\n'
fp);
/*每次记录信息前先换行*/
请输入教师号:
"
gets(tempstr);
thisn->
num=atoi(tempstr);
/*atoi()将字符串转换成整型数*/
receive=identify(thisn->
num);
while(receive)
printf("
gets(tempstr);
receive=identify(thisn->
fputs(tempstr,fp);
fputs("
/*信息排版的需要*/
请输入姓名:
gets(thisn->
name);
fputs(thisn->
name,fp);
请输入性别(填F或M):
sex=getchar();
getchar();
fputc(thisn->
sex,fp);
请输入出生年月(如199001):
byear=atoi(tempstr);
printf("
请输入工作年月(如199001):
iyear=atoi(tempstr);
请输入学历(博士、硕士、本科、其他):
education);
education,fp);
请输入岗位:
duty);
duty,fp);
请输入地址:
address);
address,fp);
请输入电话号码:
phone);
phone,fp);
fclose(fp);
intidentify(intnum)/*对教师号是否重复进行验证*/
inti;
r"
))==NULL)
文件打开错误"
exit
(1);
for(i=0;
i<
I;
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("
账号已存在【1】重新输入【2】退出系统\n"
请输入以上数字,选择相应的功能:
switch(getchar())
{
case'
return
(1);
/*输入不成功,返回值作为循环条件*/
exit
(1);
/*退出系统*/
}
if(sta[i].num==0)/*动态限制循环输出的次数*/
break;
return(0);
/*输入成功,返回值作为循环条件*/
voidcout(void)/*输出信息*/
ints,i,j;
i++)/*将文件中的信息按行写入结构体数组中并输出*/
s=record();
setlocale(LC_COLLATE,"
for(j=0;
j<
s-1;
j++)
s-j-1;
i++)
if(strcoll(sta[i].name,sta[i+1].name)>
0)
temp=sta[i];
sta[i]=sta[i+1];
sta[i+1]=temp;
}
教师号姓名性别出生年月工作年月学历岗位地址电话\n"
-----------------------------------------------------------------------------\n"
for(i=0;
s;
i++)
printmsg(i);
/*接收回车*/
\n\n\n\n\n回到主界面请按r退出系统请按其他键\n"
case'
r'
system("
/*getchar()接收回车*/
default:
exit(0);
}
voidsort(void)/*查询排序*/
intj;
j=record();
【1】按工作年月排序【2】按学历排序\n"
iyear(j);
education(j);
【1】回到主界面【2】退出系统\n"
switch(getchar())
voidiyear(intj)/*按工作年月排序*/
inti,k;
/*i,k用于循环体中以及用于结构体下标*/
for(k=0;
k<
j-1;
k++)
=j-k-1;
if(sta[i].iyear<
sta[i+1].iyear)
=j-1;
%-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);
【1】返回上一级【2】退出系统\n"
voideducation(intj)/*按学历排序*/
【1】学历降序排列【2】学历升序排列\n"
descending();
ascending();
\n\n按任意键返回上一级"
voiddel(void)/*删除教师信息*/
intnum,i,j,k;
/*num用于输入要删除的教师号,i用于循环体以及数组下标,j记录教师人数*/
请输入要删除的教师号:
scanf("
%d"
&
/*接收回车*/
if(sta[i].num==0)
j=i;
w"
))==NULL)/*重新向文件输入所有信息*/
for(k=j;
record();
sta[k]=sta[k+1];
sprintf(tempstr,"
sta[i].num);
/*将整型数转化成字符串*/
fputs(tempstr,fp);
fputs(sta[i].name,fp);
fputc(sta[i].sex,fp);
sprintf(tempstr,"
%ld"
sta[i].byear);
sta[i].iyear);
fputs(sta[i].education,fp);
fputs(sta[i].duty,fp);
fputs(sta[i].address,fp);
fputs(sta[i].phone,fp);
fclose(fp);
intrecord(void)/*将文件中的数据录入结构体数组中*/
inti,j;
/*j用于记录教师的人数*/