C语言教师工资管理系统设计.docx
- 文档编号:9493998
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:19
- 大小:115.05KB
C语言教师工资管理系统设计.docx
《C语言教师工资管理系统设计.docx》由会员分享,可在线阅读,更多相关《C语言教师工资管理系统设计.docx(19页珍藏版)》请在冰点文库上搜索。
C语言教师工资管理系统设计
《程序设计基础》
课程设计报告
教师工资管理系统设计
问题概述1
系统目标1
设计的过程及步骤2
函数设计3
系统实现7
总结17
参考文献18
一.问题概述
随着时代的进步,人们越来越认识到教育的重要性,科教兴国是十分可行的政策,而教师则是教育事业最重要的一环,他们的付出是我们国家富强的根本保证。
现阶段,各学校的教师数量越来越多,工资、工作安排等方面管理起来就越来越麻烦,这十分不利于教育事业的大步前进,设计出一款用于教师工资管理的程序很有必要,通过系统的C语言学习,我们已经能够通过自己编写程序实现这一目的,进行教师信息的录入,管理,查询等方面的操作,进而推动教育事业的进步。
二.系统目标
2.1(对系统技术的目标)
根据所学的程序设计基础原理与程序设计的知识,能够针对一个小型的程序设计基础管理系统,进行系统的需求分析,系统设计,程序设计基础设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型系统程序设计的目的。
2.2(对系统技术的要求)
1.教师信息及教师工资信息的录入功能(录入数据以文件形式存储)
2.教师工资查询功能(至少提供两种及两种以上查询方法)
(1)按教师编号进行查询
(2)按所在部门进行查询
……
注:
查询结果用链表的形式保存并输出
3.教师工资的统计功能
4.教师工资的修改功能(如晋升职称后)
三、设计的过程及步骤
1.需求分析(描述系统需求,既详细分析系统需求和功能)根据题目要求,应当把教师信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把教师信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现教师信息录入,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
2.设计系统功能图(根据需求分析结果和文件结构,应用结构化分析与设计技术设计功能结构图,如下图所示)
四、函数设计
(详细分析每一个子模块的子功能,定义主要的子函数原型,并对每一个函数的功能加以说明)
4.1此系统主要有7个功能,有主要的9个函数,他们分别是
insert()//添加教师信息
cut()//删除教师信息
updata()//更新教师信息
find()//按部门查询教师信息
findbyid()//按编号查询教师信息
sort()//按编号排序
print()//输出全部教师信息
save()//保存信息
save1()//退出
4.2每个函数所用到的主要是结构体和链表
structmessage
{
intid;
charname[30];
intage;
charsex[4];
chardept[20];
charphone[20];
intmoney;
structmessage*next;
};
inthassong(structmessage*h,intid,charname[]);
structmessage*creat(void)
{
structmessage*p1,*p2,*head;
inti=1,id;
char*check;
charchoice;
head=p2=(structmessage*)malloc(N);
printf("\n\n\n");
printf("导入文件失败,请输入信息,输入完成后按回车键确定\n\n\n");
head->next=NULL;
4.3界面设计
1、进入系统的界面,首先进行信息录入
2、输入信息后按回车,如果继续输入按Y,确定信息再回车
3、回车后进入操作页面,选择不同的数字回车,进行不同的操作
4、按4,回车,进行按部门查询教师信息
5、按5,回车、按编号查询教师信息
五五、系统实现
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"conio.h"
#include"windows.h"
#definePT"编号:
%d姓名:
%s年龄:
%d性别:
%s部门:
%s手机号:
%s工资%d\n",p->id,p->name,p->age,p->sex,p->dept,p->phone,p->money
#defineNsizeof(structmessage)
structmessage
{
intid;
charname[30];
intage;
charsex[4];
chardept[20];
charphone[20];
intmoney;
structmessage*next;
};
inthassong(structmessage*h,intid,charname[]);
structmessage*creat(void)
{
structmessage*p1,*p2,*head;
inti=1,id;
char*check;
charchoice;
head=p2=(structmessage*)malloc(N);
printf("\n\n\n");
printf("导入文件失败,请输入信息,输入完成后按回车键确定\n\n\n");
head->next=NULL;
choice='y';
for(i=1;choice=='y'||choice=='Y';i++)
{
printf("***请输入编号姓名年龄性别部门手机号工资***\n");
p1=(structmessage*)malloc(N);
scanf("%d%s%d%s%s%s%d",&p1->id,p1->name,&p1->age,p1->sex,p1->dept,p1->phone,&p1->money);
check=p1->name;
id=p1->id;
while(hassong(head,id,check)==1){
printf("\n已经存在,请重新输入!
\n");
scanf("%d%s%d%s%s%s%d",&p1->id,p1->name,&p1->age,p1->sex,p1->dept,p1->phone,&p1->money);
check=p1->name;
id=p1->id;
}
p2->next=p1;
p2=p1;
p2->next=NULL;
printf("\n继续?
(Y/N):
");
choice=getche();
printf("\n");
}
returnhead;
}
structmessage*readfile(void)/*建立信息*/
{
char*p="D:
/teacher.txt";
FILE*fp;
structmessage*p1,*p2,*head;
head=p2=(structmessage*)malloc(N);
head->next=NULL;
if((fp=fopen("d:
/teacher.txt","r"))==NULL)
{
printf("导入文件失败,请输入一些信息",p);
head=creat();
}
else{
inti=0;
p1=(structmessage*)malloc(N);
while(fscanf(fp,"%d%s%d%s%s%s%d",&p1->id,p1->name,&p1->age,p1->sex,p1->dept,p1->phone,&p1->money)==7)
{
i++;
p2->next=p1;
p2=p1;
p1=(structmessage*)malloc(N);
}
fclose(fp);
if(i==0){
head=creat();
}else{
printf("录入完毕!
共%d个教师信息导入成功\n",i);
p2->next=NULL;
getche();
}
}
returnhead;
}
voidinsert(structmessage*head)
{
structmessage*p;
char*check;
intid;
p=(structmessage*)malloc(N);
printf("***请输入编号姓名年龄性别部门手机号工资***\n");
scanf("%d%s%d%s%s%s%d",&p->id,p->name,&p->age,p->sex,p->dept,p->phone,&p->money);
check=p->name;
id=p->id;
if(hassong(head,id,check)==0){
if(head->next!
=NULL)
{
p->next=head->next;
head->next=p;
}
printf("\n插入成功!
按任意键继续!
");
}else{
printf("\n该教师已经存在");
}
getche();
}
voidcut(structmessage*p0)
{
intid;
structmessage*p;
charchoice;
if(p0->next==NULL)
{
printf("信息出错!
按任意键退出!
");
getch();
exit
(1);
}
printf("请输入要删除的编号:
");
scanf("%d",&id);
for(p=p0->next;p->id!
=id;p0=p,p=p->next);
printf("你要删除的信息如下,请确认是否删除:
\n");
printf("\n编号:
%d姓名:
%s年龄:
%d性别:
%s部门:
%s手机号:
%s工资%d\n",p->id,p->name,p->age,p->sex,p->dept,p->phone,p->money);
printf("\n是Y,否N:
");
choice=getche();
if(choice=='Y'||choice=='y')
{
p0->next=p->next;
free(p);
printf("\n删除成功!
");
}
printf("\n按任意键结束!
");
getche();
}
inthassong(structmessage*h,intid,charname[])
{
structmessage*p;
intflag=0;
if(h->next==NULL){
return0;
}
for(p=h->next;p!
=NULL;p=p->next){
if(strcmp(p->name,name)==0)
flag=1;
if(p->id==id)
flag=1;
}
returnflag;
}
voidfindbyid(structmessage*h)
{
intn;
structmessage*p;
printf("请输入你要查找的教师编号:
");
scanf("%d",&n);
for(p=h->next;p!
=NULL;p=p->next){
if(p->id==n){
printf("你查找的信息如下:
\n");
printf("\n编号:
%d姓名:
%s年龄:
%d性别:
%s部门:
%s手机号:
%s工资%d\n",p->id,p->name,p->age,p->sex,p->dept,p->phone,p->money);
printf("按任意键继续!
");
getche();
return;
}
}
printf("没有找到!
\n");
printf("按任意键继续!
");
getche();
}
voidupdata(structmessage*h)
{
intn;
structmessage*p;
printf("请输入你要更新的教师编号:
");
scanf("%d",&n);
for(p=h->next;p!
=NULL;p=p->next){
if(p->id==n){
printf("你查找的信息如下:
\n");
printf("\n编号:
%d姓名:
%s年龄:
%d性别:
%s部门:
%s手机号:
%s工资%d\n",p->id,p->name,p->age,p->sex,p->dept,p->phone,p->money);
printf("***请输入年龄性别部门手机号工资***\n");
scanf("%d%s%s%s%d",p->name,&p->age,p->sex,p->dept,p->phone,&p->money);
printf("更新成功!
");
getche();
return;
}
}
printf("没有找到!
\n");
printf("按任意键继续!
");
getche();
}
voidfind(structmessage*h)
{
charname[30];
structmessage*p;
printf("请输入你要查找的教师部门:
");
scanf("%s",name);
for(p=h->next;p!
=NULL;p=p->next){
if(strcmp(p->dept,name)==0){
printf("你查找的信息如下:
\n");
printf("\n编号:
%d姓名:
%s年龄:
%d性别:
%s部门:
%s手机号:
%s工资%d\n",p->id,p->name,p->age,p->sex,p->dept,p->phone,p->money);
}
}
printf("没有找到!
\n");
printf("按任意键继续!
");
getche();
}
voidprint(structmessage*p)
{
p=p->next;
while(p!
=NULL)
{
printf(PT);
p=p->next;
}
printf("\n按任意键继续!
");
getche();
}
voidsort(structmessage*head)
{
structmessage*q,*t,*p;
p=head;
t=NULL;
while(t!
=head->next)
{
p=head;
q=p->next;
while(q->next!
=t)
{
if(p->next->id>q->next->id)
{
p->next=q->next;
q->next=q->next->next;
p->next->next=q;
}
p=p->next;
q=p->next;
}
t=q;
}
printf("排序完毕,按任意键继续!
");
getche();
}
voidsave1(structmessage*p)
{
FILE*fp;
fp=fopen("d:
/teacher.txt","w");
p=p->next;
while(p!
=NULL)
{
fprintf(fp,"%d%s%d%s%s%s%d\n",p->id,p->name,p->age,p->sex,p->dept,p->phone,p->money);
p=p->next;
}
fclose(fp);
}
voidsave(structmessage*p)
{
save1(p);
printf("\n保存成功按任意键继续!
");
getche();
}
intmain()
{
intchoice=1,i;
structmessage*head;
head=NULL;
head=readfile();
for(i=1;choice!
=0;i++)
{
system("cls");
printf("*************************教师管理系统*************************\n");
printf("\n");
printf("\n");
printf("☆1.添加教师信息\n");
printf("☆2.删除教师信息\n");
printf("☆3.更新教师信息\n");
printf("☆4.按部门查询教师信息\n");
printf("☆5.按编号查询教师信息\n");
printf("☆6.按编号排序\n");
printf("☆7.输出全部教师信息\n");
printf("☆8.保存信息\n");
printf("☆0.退出\n");
printf("***************************************************\n");
printf("请选择一个功能:
\n");
scanf("%d",&choice);
switch(choice)
{
case1:
insert(head);break;
case2:
cut(head);break;
case3:
updata(head);break;
case4:
find(head);break;
case5:
findbyid(head);break;
case6:
sort(head);break;
case7:
print(head);break;
case8:
save(head);break;
case0:
save1(head);break;
}
}
return0;
}
六、总结
首先,我想感谢我的组员,因为我们是分工合作的,他们有的负责一个功能,有的负责两个功能,而我主要是些主函数,在他们的积极配合下,我们很快就把总程序写好,并调试完毕。
所以我想感谢他们的配合。
因为集体的力量是强大的,只有我们的积极合作,才能够准时的完成这个课程设计。
然后,我觉得在这个课程设计的过程中,我学到了很多东西。
第一是耐心,当你在调试程序中,看到了你设计的程序出现了那么多错误,或者当显示0错误0警告,却不能运行,或者是运行结果不是你所期望时,我觉得这时候最是考验耐心的时候,也只有耐心和永不言败的信念,才能支持你逆流而上,解决所有的困难。
在这个过程中,我试过用了几个钟的时间找一个错误,而结果只是打错了一个定义。
第二是沟通,因为我对C语言也比较熟了,有一些同学比较陌生,所以他们来问我,在我解答他们的问题是,我深刻的体会了沟通的重要性,因为只有你沟通的好,他们容易理解,你也不用浪费口舌去讲一些不必要的知识点!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言 教师工资管理系统设计 语言 教师工资 管理 系统 设计