数据结构大作业含源代码.docx

上传人:b****8 文档编号:28142761 上传时间:2023-07-08 格式:DOCX 页数:20 大小:281.36KB
下载 相关 举报
数据结构大作业含源代码.docx_第1页
第1页 / 共20页
数据结构大作业含源代码.docx_第2页
第2页 / 共20页
数据结构大作业含源代码.docx_第3页
第3页 / 共20页
数据结构大作业含源代码.docx_第4页
第4页 / 共20页
数据结构大作业含源代码.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

数据结构大作业含源代码.docx

《数据结构大作业含源代码.docx》由会员分享,可在线阅读,更多相关《数据结构大作业含源代码.docx(20页珍藏版)》请在冰豆网上搜索。

数据结构大作业含源代码.docx

数据结构大作业含源代码

 

数据结构大作业

 

作业题目:

职工信息管理系统

姓名:

学号:

班级:

指导教师:

日期:

一、主要功能:

这个职工信息管理系统是由C语言编写的程序,它用起来很方便又很灵活。

它由输入职工信息,输出职工信息,按职工号,部门号,工资排序,按职工号,部门号,工资来输出职工的所有信息。

删除有关职工的所有信息,保存职工的所有信息并退出等11个模块儿组成。

二、实验环境:

C语言、C++、C#等等。

三、功能说明:

下面按步骤来介绍一下,职工信息管理系统的基本操作。

这是运行程序以后出现的主界面。

如图

(1)所示:

(1)主界面

1.输入职工的信息

该模块儿的功能是分别输入职工的姓名,职工号,部门号,工资等信息。

每次输入职工的所有信息以后,界面上会显示出《输入完成!

》的命令。

如图

(2)所示:

(2)输入职工信息

2.输出所有的职工信息

该模块儿的功能是显示出有关职工的所有信息。

操作如图(3)所示:

图(3)输出所有的职工信息

3.按职工号排序

该模块儿的功能是按职工号排序所有的职工。

我们按3的时候,界面上会显示出《排序完成!

》的命令。

如图(4)所示:

图(4)按职工号排序

4.输出所有的职工号码

该模块儿的功能是显示出已排序好的所有职工的号码。

操作如图(5)所示:

图(5)输出所有的职工号

5.按部门号排序

该模块儿的功能是按部门号排序所有职工的部门号。

我们按5的时候,界面上会显示出《排序完成!

》的命令。

如图(6)所示:

图(6)按部门号排序

6.输出所有的部门号

该模块儿的功能是显示出已排序好的所有部门号。

操作如图(7)所示:

图(7)输出所有的部门号

7.按职工的工资排序

该模块儿的功能是按工资排序所有职工的工资。

我们按7的时候,界面上会显示出《排序完成!

》的命令。

如图(8)所示:

图(8)按职工的工资排序

8.输出所有职工的工资

该模块儿的功能是显示出已排序好的所有职工的工资。

操作如图(9)所示:

图(9)输出所有职工的工资

9.删除职工的所有信息

该模块儿的功能是删除有关职工的所有信息。

我们按9的时候界面上会显示出《删除成功!

》的命令。

如图(10)所示:

图(10)删除职工的所有信息

10.保存

该模块儿的功能是保存有关职工的所有信息。

在这个程序中,该保存的文件跟随这个程序的位置而保存。

我们按b得时候界面上会显示出《保存成功!

》的命令。

如图(11)所示:

图(11)保存

11.退出

该模块儿的功能是退出系统,按0即可。

四、程序代码如下:

#include

#definemaxsize20

typedefstructnode

{

intno,depno,salary;/*no为职工号,depno为部门号,salary为工资数*/

charname[maxsize];/*职工姓名*/

structnode*pno,*pdepno,*psalary,*next;/*pno为职工号指针,pdepno为部门号指针,psalary为工资数指针*/

}employee;

employee*insert(employee*head)

{

employee*h;

if(head==NULL)

{

employee*s,*h1;

h1=malloc(sizeof(employee));

s=malloc(sizeof(employee));

clrscr();

printf("请输入职工姓名:

");

scanf("%s",s->name);

printf("请输入职工号:

");

scanf("%d",&s->no);

printf("请输入部门号:

");

scanf("%d",&s->depno);

printf("请输入职工的工资:

");

scanf("%d",&s->salary);

s->pno=NULL;

s->pdepno=NULL;

s->psalary=NULL;

s->next=NULL;

h1->pno=NULL;

h1->pdepno=NULL;

h1->psalary=NULL;

h1->next=s;

h=h1;

printf("输入完成!

\n");

getch();

}

if(head!

=NULL)

{

employee*s,*p,*h1;

h1=head;

p=h1->next;

s=malloc(sizeof(employee));

if(p->next!

=NULL)

{

while(p->next!

=NULL)

p=p->next;

clrscr();

printf("请输入职工姓名:

");

scanf("%s",s->name);

printf("请输入职工号:

");

scanf("%d",&s->no);

printf("请输入部门号:

");

scanf("%d",&s->depno);

printf("请输入职工的工资:

");

scanf("%d",&s->salary);

s->pno=NULL;

s->pdepno=NULL;

s->psalary=NULL;

s->next=NULL;

p->next=s;

h=h1;

printf("输入完成!

\n");

getch();

}

if(p->next==NULL)

{

clrscr();

printf("请输入职工姓名:

");

scanf("%s",s->name);

printf("请输入职工号:

");

scanf("%d",&s->no);

printf("请输入部门号:

");

scanf("%d",&s->depno);

printf("请输入职工的工资:

");

scanf("%d",&s->salary);

s->pno=NULL;

s->pdepno=NULL;

s->psalary=NULL;

s->next=NULL;

p->next=s;

h=h1;

printf("输入完成!

\n");

getch();

}

}

return(h);

}

voidoutput(employee*head)

{

employee*p;

if(head==NULL)

{

clrscr();

printf("这表格是空的,请重新输入!

\n");

}

else

{

p=head->next;

if(p!

=NULL)

{

clrscr();

printf("所有的职工\n\n");

printf("职工的姓名\t职工的号码\t\t部门号\t\t职工的工资\n");

while(p!

=NULL)

{

printf("\t%s\t\t%d\t\t\t%d\t\t%d\n",p->name,p->no,p->depno,p->salary);

p=p->next;

}

}

}

getch();

}

employee*SortByEmployeeNumber(employee*head)

{

employee*p,*q,*s,*h,*temp;

temp=malloc(sizeof(employee));

h=head;

for(s=head->next;s!

=NULL;s=s->next)

{

p=s;

for(q=s->next;q!

=NULL;q=q->next)

{

if((p->no)>(q->no))

p=q;

}

if(p!

=s)

{

temp->no=s->no;

temp->depno=s->depno;

temp->salary=s->salary;

strcpy(temp->name,s->name);

s->no=p->no;

s->depno=p->depno;

s->salary=p->salary;

strcpy(s->name,p->name);

p->no=temp->no;

p->depno=temp->depno;

p->salary=temp->salary;

strcpy(p->name,temp->name);

}

}

clrscr();

printf("排序完成!

\n");

getch();

return(h);

}

employee*SortByDepartmentNumber(employee*head)

{

employee*p,*q,*s,*h,*temp;

temp=malloc(sizeof(employee));

h=head;

for(s=head->next;s!

=NULL;s=s->next)

{

p=s;

for(q=s->next;q!

=NULL;q=q->next)

{

if((p->depno)>(q->depno))

p=q;

}

if(p!

=s)

{

temp->no=s->no;

temp->depno=s->depno;

temp->salary=s->salary;

strcpy(temp->name,s->name);

s->no=p->no;

s->depno=p->depno;

s->salary=p->salary;

strcpy(s->name,p->name);

p->no=temp->no;

p->depno=temp->depno;

p->salary=temp->salary;

strcpy(p->name,temp->name);

}

}

clrscr();

printf("排序完成!

\n");

getch();

return(h);

}

employee*SortByWages(employee*head)

{

employee*p,*q,*s,*h,*temp;

temp=malloc(sizeof(employee));

h=head;

for(s=head->next;s!

=NULL;s=s->next)

{

p=s;

for(q=s->next;q!

=NULL;q=q->next)

{

if((p->salary)>(q->salary))

p=q;

}

if(p!

=s)

{

temp->no=s->no;

temp->depno=s->depno;

temp->salary=s->salary;

strcpy(temp->name,s->name);

s->no=p->no;

s->depno=p->depno;

s->salary=p->salary;

strcpy(s->name,p->name);

p->no=temp->no;

p->depno=temp->depno;

p->salary=temp->salary;

strcpy(p->name,temp->name);

}

}

clrscr();

printf("排序完成!

\n");

getch();

return(h);

}

employee*DeleteAllInformation()

{

employee*h;

h=NULL;

clrscr();

printf("删除成功!

\n");

getch();

return(h);

}

voidshow()

{

textcolor(22);

clrscr();

printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");

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

printf("┃---------------☆☆☆欢迎使用职工信息管理系统☆☆☆---------------┃\n");

printf("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n");

printf("┃1.输入职工的信息2.输出所有的职工信息┃\n");

printf("┃3.按职工号排序4.输出所有的职工号码┃\n");

printf("┃5.按部门号排序6.输出所有的部门号┃\n");

printf("┃7.按职工的工资排序8.输出所有职工的工资┃\n");

printf("┃9.删除职工的所有信息b.保存┃\n");

printf("┃0.退出┃\n");

printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");

}

voidsave(structemployee*head)

{

FILE*file;

employee*p;

if((file=fopen("职工记录表.txt","wb"))==NULL)/*打开文件,并判断打开是否正常*/

printf("不能打开文件\n");

fprintf(file,"\r\n");/*将换行符号写入文件*/

fprintf(file,"职工的姓名\t职工的号码\t\t部门号\t\t职工的工资\r\n");

for(p=head->next;p!

=NULL;p=p->next)

{

fprintf(file,"\t%s\t\t%d\t\t\t%d\t\t%d\r\n",p->name,p->no,p->depno,p->salary);/*写入记录*/

fprintf(file,"\r\n");/*将换行符号写入文件*/

}

fclose(file);/*关闭文件*/

clrscr();

printf("保存成功!

\n");

getch();

}

main()

{

charflag;

employee*head;

head=NULL;

system("graftabl936");

clrscr();/*在win-tc中显示汉字*/

show();

scanf("%c",&flag);

while(flag!

='0')

{

switch(flag)

{

case'1':

head=insert(head);

show();break;

case'2':

output(head);

show();break;

case'3':

head=SortByEmployeeNumber(head);

show();break;

case'4':

output(head);

show();break;

case'5':

head=SortByDepartmentNumber(head);

show();break;

case'6':

output(head);

show();break;

case'7':

head=SortByWages(head);

show();break;

case'8':

output(head);

show();break;

case'9':

head=DeleteAllInformation();

show();break;

case'b':

save(head);

show();break;

}

scanf("%c",&flag);

}

}

 

五、结论:

本程序在C语言的环境下编写的,里面定义了指针变量,调用了函数等等过程。

通过这次编写此程序,我对C语言有了进一步的认识,提高了我的专业水平。

在老师和同学们的帮助下,我才有了这样的水平。

谢谢你们!

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

当前位置:首页 > 职业教育 > 职高对口

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

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