数据结构大作业含源代码.docx
- 文档编号:28142761
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:20
- 大小:281.36KB
数据结构大作业含源代码.docx
《数据结构大作业含源代码.docx》由会员分享,可在线阅读,更多相关《数据结构大作业含源代码.docx(20页珍藏版)》请在冰豆网上搜索。
数据结构大作业含源代码
数据结构大作业
作业题目:
职工信息管理系统
姓名:
学号:
班级:
指导教师:
日期:
一、主要功能:
这个职工信息管理系统是由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语言有了进一步的认识,提高了我的专业水平。
在老师和同学们的帮助下,我才有了这样的水平。
谢谢你们!
!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 作业 源代码