教师信息管理系统.docx

上传人:b****6 文档编号:6975202 上传时间:2023-01-13 格式:DOCX 页数:18 大小:408.24KB
下载 相关 举报
教师信息管理系统.docx_第1页
第1页 / 共18页
教师信息管理系统.docx_第2页
第2页 / 共18页
教师信息管理系统.docx_第3页
第3页 / 共18页
教师信息管理系统.docx_第4页
第4页 / 共18页
教师信息管理系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

教师信息管理系统.docx

《教师信息管理系统.docx》由会员分享,可在线阅读,更多相关《教师信息管理系统.docx(18页珍藏版)》请在冰豆网上搜索。

教师信息管理系统.docx

教师信息管理系统

北京化工大学北方学院

课程设计报告

 

课程名称C语言课程设计

专业、班级信工0903班

学号090201077

姓名李波

指导教师邵兰洁

设计时间2012.9.3-2012.10.12

 

2012年10月15日

一、引言(简要说明设计题目的目的、意义、内容、主要任务等)

1.课程设计目的

 本程序旨在训练基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。

本程序涉及结构体、数组、指针、文件等方面的知识。

通过本程序的训练,使读者能对C语言的文件操作有一个更深刻的了解,掌握利用数组存储结构实现教师工资管理系统,为进一步开发出高质量信息管理系统打下坚实的基础。

(1)巩固和加强《C语言程序设计》课程的理论知识。

(2)掌握C语言的基本概念、语法、语义和数据类型的使用特点。

(3)掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。

(4)进一步理解和运用结构化程设计的思想和方法;学会利用流程图表示算法。

(5)掌握调试程序的基本方法及上机操作方法。

(6)掌握书写程设计开发文档的能力,学会撰写课程设计总结报告。

课程设计的思想和方法还可以作为毕业论文时的参考资料。

(7)通过查阅手册和文献资料,培养自己独立分析问题和解决问题的能力。

为自己做毕业设计打好基础。

(8)初步掌握开发一个小型实用系统的基本方法:

结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实际需要。

通过激发学习兴趣,调动自己主动学习的积极性,并根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。

(9)培养自己的创新能力和创新思维。

可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。

(10)培养自己良好的程序设计风格。

在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。

自己在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。

2.课程设计题目

教师工资管理系统

每个教师的信息为:

教师号、姓名、工资月份、基本工资、津贴、补贴、岗贴、房贴、交通费、房租、储蓄、会费。

(1)教师信息处理

①输入教师信息

② 插入(修改)教师信息:

③ 删除教师信息:

④ 浏览教师信息:

(2)教师数据处理

① 按教师号录入基本工资、津贴、岗贴、补贴、房贴、交通费、房租、储蓄、会费。

②教师实发工资、应发工资、合计扣款计算。

提示:

计算规则如题目。

③ 教师数据管理

提示:

输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件。

④ 教师数据查询:

提示:

输入教师号或其他信息,即读出所有数据信息,并显示出来。

⑤ 教师综合信息输出

提示:

输出教师信息到屏幕。

 

二、正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。

正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。

1.功能描述

根据需求描述,本人按照结构化程序设计的原则将整个系统划分若干个功能模块。

系统各子模块的设计如下:

(1)输入教师信息模块

在主菜单中运用结构体teacher,输入教师信息,首先建立链表,将用户输入的学生信息存储到链表中,输入完成后提示用户时候继续输入,如果用户输入“Y”或“y”,则再次调用,实现继续输入学生信息的操作。

如果用户输入“N”或“n”,则返回主菜单界面。

(2)添加教师信息模块

在主菜单中调用teacher*insert(),然后按照提示依次输入教师信息,然后再调用voidprint()函数讲所有的教师信息记录打印出来。

然后再返回主菜单界面。

(3)删除教师信息模块

在主菜单中调用del()函数,以删除教师信息,首先按学号查询教师信息,如果没有找到教师信息,给出提示信息。

如果查找到该教师信息,给出改教师的全部信息,如果查找到,则删除该教师信息,给出删除成功的提示信息。

然后返回主菜单界面。

(4)浏览教师信息模块

在主菜单中调用voidprint()函数来显示教师信息,先判断链表是否为空。

如果链表不为空时,逐条显示链表中教师的信息,显示调用teacher*next()函数按照教师号的大小来显示教师的信息,然后返回主菜单界面。

(5)保存教师信息模块

在主菜单中调用voidsave()函数来保存教师信息到teacher_list这个文件中。

并给出“保存成功”的提示信息。

然后返回主菜单界面。

(6)查询教师信息模块

在主菜单中选择6的时候进行教师信息的查询,调用voidquery()函数,按教师号查询信息。

提示用户输入要查找的教师号,然后调用voidquery()函数,查找成功,最后打印出教师的信息。

然后返回主菜单界面。

(7)修改教师信息模块

在主菜单中调用voidedit()函数。

按教师号查找教师信息,如果找到教师信息,调用voidedit()函数提示用户输入新的教师信息,完成修改的操作。

操作结束后提示用户修改成功。

然后返回主菜单界面。

(8)加载教师信息模块

在主菜单中调用voidload()函数。

如果存在teacher_list文件并不为空,打开文件,找到教师信息。

如果存在teacher_list文件并为空,给出提示,“cannotopenfile”。

然后返回主菜单界面。

(9)退出系统模块

将链表中的数据全部释放掉,防止内存泄露,退出系统。

2.功能模块设计

2.1删除记录模块

删除记录模块流程图如图1所示。

图1删除记录模块流程图

/*删除模块*/

PAY*del()

{

shortsel;

longnum;

charname[20],choose;

head=open();

if(head==NULL)

returnNULL;

else

do

{

do

{

printf("\n选择删除方式:

\n");

printf("\t\t1.按教师编号删除\n");

printf("\t\t2.按姓名删除\n");

scanf("%d",&sel);

getchar();

}

while(sel!

=1&&sel!

=2);

switch(sel)

{

case1:

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

");

scanf("%ld",&num);

break;

case2:

printf("输入要删除的姓名:

");

gets(name);

break;

}

p1=head;

if((p1->num==num)||strcmp(p1->name,name)==0)

{

head=p1->next;

printf("删除信息成功!

");

}

else

{

while((p1->next!

=NULL)&&(p1->num!

=num)&&(strcmp(p1->name,name)!

=0))

{

p2=p1;

p1=p1->next;

}

if((p1->num==num)||strcmp(p1->name,name)==0)

{

p2->next=p1->next;

free(p1);

printf("\n删除信息成功!

\n");

}

else

printf("\n没有该信息!

\n");

}

printf("是否继续?

是(Y)否(N)\n");

choose=getch();

}

while(choose=='Y'||choose=='y');

printf("任意键返回,并存盘……");

getch();

returnhead;

}

2.2查询教师信息函数query()

函数原型:

voidquery(structteacher*p)

功能描述:

将链表teacher中的head指向p,然后让用户输入教师号no,依次在链表中需找p,如果教师号不对,则指针往后面拨动一下,使p=p->next;知道找到相对应的正确的教师号。

然后打印出教师的基本信息。

查询教师信息函数流程图如图2所示。

图2查询教师信息流程图

/*查找模块*/

voidsearch()

{

shortsel;

longnum;

charname[20],choose;

head=open();

if(head==NULL)

return;

else

do

{

do

{

printf("\n选择查找方式:

\n");

printf("\t\t1.按教师编号查找\n");

printf("\t\t2.按姓名查找\n");

scanf("%d",&sel);

getchar();

}

while(sel!

=1&&sel!

=2);

switch(sel)

{

case1:

printf("输入要查的教师编号:

");

scanf("%ld",&num);

break;

case2:

printf("输入要查的姓名:

");

gets(name);

break;

}

p1=head;

while((p1->next!

=NULL)&&(p1->num!

=num)&&(strcmp(p1->name,name)!

=0))

p1=p1->next;

if((p1->num==num)||strcmp(p1->name,name)==0)

{

printf("您要查找的信息如下:

\n");

printf(TITLE);

printf(DATA);

}

else

printf("没有该信息!

\n");

printf("是否继续?

是(Y)否(N)\n");

choose=getch();

}

while(choose=='Y'||choose=='y');

printf("任意键返回");

getch();

}

2.3修改教师信息函数edit()

函数原型:

voidedit(structteacher*p)

功能描述:

首先让用户输入希望修改的教师的教师号a,然后在链表中一条一条查找看p->num是否等于a,如果找到,则让用户再次输入教师的具体信息,输入完毕跳出,转向主菜单界面。

如果没有找到,则令p=p->next。

直到查询完所有的教师记录。

函数流程图如图3所示。

图3修改教师信息函数流程图

/*修改模块*/

PAY*revise()

{

shortsel;

longnum;

charname[20],choose;

head=open();

if(head==NULL)

returnNULL;

else

do

{

do

{

printf("\n查找要修改的对象:

\n");

printf("\t\t1.按教师编号查找\n");

printf("\t\t2.按姓名查找\n");

scanf("%d",&sel);

getchar();

}

while(sel!

=1&&sel!

=2);

switch(sel)

{

case1:

printf("输入要查的教师编号:

");

scanf("%ld",&num);

break;

case2:

printf("输入要查的姓名:

");

gets(name);

break;

}

p1=head;

while((p1->next!

=NULL)&&(p1->num!

=num)&&(strcmp(p1->name,name)!

=0))p1=p1->next;

if((p1->num==num)||strcmp(p1->name,name)==0)

{

printf("您要修改的原始信息如下:

\n");

printf(TITLE);

printf(DATA);

printf("\n将上述信息改为如下信息:

\n");

printf("教师编号:

");

scanf("%d",&p1->num);

getchar();

printf("姓名:

");

gets(p1->name);

printf("工资月份:

");

scanf("%d",&p1->month);

printf("基本工资,津贴,岗贴,补贴,房贴,交通费:

\n");scanf("%f,%f,%f,%f,%f,%f",&p1->jb,&p1->ji,&p1->gt,&p1->bt,&p1->ft,&p1->jt);

printf("房租,储蓄,会费:

\n");

scanf("%f,%f,%f,%f",&p1->fz,&p1->cx,&p1->hf);

{

p1->should_pay=p1->jb+p1->ji+p1->gt+p1->bt+p1->ft+p1->jt;

if(p1->should_pay<800)

p1->gr=0;

elseif(p1->should_pay>=800&&p1->should_pay<2000)

p1->gr=(p1->should_pay-800)*5/100;

elseif(p1->should_pay>=2000&&p1->should_pay<5000)

p1->gr=(p1->should_pay-2000)*1/10+60;

else

p1->gr=(p1->should_pay-5000)*2/10+60+300;

}

p1->rebate=p1->fz+p1->cx+p1->hf+p1->gr;

p1->actual_pay=p1->should_pay-p1->rebate;

}

else

printf("你要修改的信息不存在!

\n");

printf("是否继续?

是(Y)否(N)\n");

choose=getch();

}

while(choose=='Y'||choose=='y');

printf("任意键返回,并存盘……");

getch();

returnhead;

}

3.运行结果

3.1系统主界面

用户刚进入系统时,如图4所示。

主菜单界面:

图4主菜单界面

用户根据自己的需求输入自己的选择。

3.2输入界面

用户在主菜单界面的时候输入1,输入界面如图5所示。

图5输入界面

 

3.3保存教师信息

保存信息成功后界面如图6所示。

图6保存教师信息界面

3.4添加教师信息界面

在主菜单中进入2——添加教师信息,然后依次插入教师的所有信息,最后打印链表里的记录,添加教师信息如图7所示。

图7添加教师信息界面

3.5查找并修改教师信息界面

首先将之前输入进去的教师信息进行保存,然后退出系统,再打开系统,查找要修改的教师信息,然后进行教师数据的修改。

查找并修改教师信息如图8和图9所示。

图8查找教师信息界面

图9修改教师信息界面

 

3.6删除教师信息

首先选择4-删除工资信息,然后根据提示选择要删除的信息。

删除教师信息如图10所示。

图10删除教师信息界面

3.7查找教师工资信息

首先选择5-查找工资信息,然后选择查找的方式进行查找,查找教师信息如图11所示。

图11查找教师工资信息界面

3.8分类信息查找

选择功能6-分类信息列表,选择列表的方式,分类信息查找如图12所示。

图12分类信息查找界面

三、结论(应当准确、完整、明确精练;也可以在结论或讨论中提出建议、设想、尚待解决问题等。

持续一个学期的课程设计给了我太多的感触,开始从题目上看,感觉题目很大,设计量很大,也很复杂,感觉不是简单的就能解决的。

这样只用重新拾起书继续来看,获得新的知识和巩固以前的C方面的知识。

提升自己的能力。

整个程序的设计是分模块实现具体的功能,每个模块分别由不同的函数构成。

链表的建立实现输入信息的功能,相比较于数组更加方便,更能够节省内存空间等。

通过使用文件fread和fwrite函数方便的将数据信息写入文件以及将文件中的信息载入显示段。

通过这个学期的课程设计的练习与设计我学会了很多,也更加熟悉C语言程序设计,从中得到了很多乐趣,很快乐,感觉C语言的世界里面奇妙无比。

虽然在途中也遇到很多的困难,但是还是通过问同学和学长解决了。

最后看到自己设计的程序能够运行起来特别的开心。

这次的程序设计很有意义,也很锻炼人的能力,特别是C语言方面的能力,为自己在C语言方面打下基础。

 

四、参考文献

[1]梁旭,谷晓琳,黄明等编著.C语言课程设计(第2版).北京:

电子工业出版社.2009.

[2]苏小红,陈惠鹏,孙志岗等编著.C语言大学实用教程(第2版).北京:

电子工业出版社.2007.

 

5、指导教师评语

签名:

年月日

课程设计成绩(五级分制)

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

当前位置:首页 > 人文社科 > 文化宗教

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

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