当前位置:文档之家› 数据结构大作业含源代码

数据结构大作业含源代码

数据结构大作业作业题目:职工信息管理系统姓名:学号:班级:指导教师:日期:一、主要功能:这个职工信息管理系统是由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<stdio.h>#define maxsize 20typedef struct node{int no,depno,salary; /*no为职工号,depno为部门号,salary为工资数*/char name[maxsize]; /*职工姓名*/struct node *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);}void output(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);}void show(){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"); }void save(struct employee *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(){char flag;employee *head;head=NULL;system( "graftabl 936 ");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语言的环境下编写的,里面定义了指针变量,调用了函数等等过程。

相关主题