数据结构大作业(含源代码)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

显然, 结构体中的成员包括职工姓名、职工号、部门号、职工工资、以及一些指向
其它该类型结点的指针变量.
下面介绍实现第一个功能的代码:
employee *insert(employee *head) {
employee *h;
if(head==NULL) {
employee *s,*h1; h1=malloc(sizeof(employee));
数据结构大作业
数 据 结 构 大 作 业
作业题目: 职工信息管理系统 姓 名: 叶尔凯西·革命 学 号: 08080605227 班 级: 计算机 07-(1)班 指导教师: 日 期: 2010 年 6 月 13 日
数据结构大作业
职工信息管理系统
(伊 犁 师 范 学 院 计 算 机 科 学 系 07-1班 叶 尔 凯 西 ) 摘 要 :本程序实现了一个职工管理系统中的常见功能, 包括建立职工信息, 输 出职工信息以及根据职工号、部门号、职工的工资进行排序的功能, 还有对整个职工表 的清空的功能. 关 键 词 : 职工管理; 职工管理系统; 数据排序; 排序
printf("please input employee's wages:"); scanf("%d",&s->salary);
数据结构大作业
s->pno=NULL; s->pdepno=NULL; s->psalary=NULL; s->next=NULL; p->next=s; h=h1; printf("all done!\n"); getch(); } } return(h); } 本函数实现的功能是插入一个职工记录到职工表中, 为此我们还得把这个函数的 返回类型设计成之前建立的结构体类型的指针函数, 而函数的参数是一个职工类型的 头指针变量, 在 main 函数中也同时建立一个头指针变量, 且给它赋空值, 在调用该函 数时就把空指针传给插入函数,当职工表为空即第一次插入一个职工记录时,很自然 传给插入函数的头指针的值为空有此来判断是新建立一个结点还是在已有的结点后插 入一个(连接)结点, 若头指针不为空, 即已有一个或多个结点在职工记录表中, 则只能 插在最后一个节点之后. 当职工表中只有一个职工记录时, (即 head->next->next==NULL 时)插在第一个结点后面, 当职工表中的结点多于两个时就 插在最后一个结点后面. 下面说明第二个功能的实现部分: void output(employee *head) { employee *p; if(head==NULL) { clrscr(); printf("The table is empty,please insert before!\n"); }
}
}
clrscr();
printf("all done!\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) {
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);
/*no 为职工号,depno 为部门号,salary 为工资数*/
char name[maxsize];
/*职工姓名*/
struct node *pno,*pdepno,*psalary,*next; /*pno 为职工号指针,pdepno 为部门号
指针,psalary 为工资数指针*/
}employee;
2 程序简介
该程序的功能可以从以下十个方面来说明: 1.输入:添加一个职工记录 2.输出:输出全部职工记录 3.按职工号排序:通过职工号指针将职工记录按职工号从小到大连接起来 4.按职工号输出:沿职工号指针输出全部职工记录 5.按部门号排序:通过部门号指针将职工记录按部门号从小到大连接起来 6.按部门号输出:沿部门号指针输出全部职工记录 7.按职工工资排序:通过职工工资指针将职工记录按职工工资从小到大连接起来 8.按职工工资输出:沿职工号指针输出全部职工记录 9.全清:删除职工文件中有的全部记录 10.存储退出:将单链表中的全部结点存储到职工文件中,然后退出程序运行过程
employee *SortByDepartmentNumber(employee *head) {
Baidu Nhomakorabea
数据结构大作业
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);
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("please input employee's name:"); scanf("%s",s->name); printf("please input employee's number:"); scanf("%d",&s->no); printf("please input department's number:"); scanf("%d",&s->depno); printf("please input employee's wages:"); scanf("%d",&s->salary); s->pno=NULL; s->pdepno=NULL; s->psalary=NULL; s->next=NULL; p->next=s; h=h1; printf("all done!\n"); getch(); } if(p->next==NULL) { clrscr(); printf("please input employee's name:"); scanf("%s",s->name); printf("please input employee's number:"); scanf("%d",&s->no); printf("please input department's number:"); scanf("%d",&s->depno);
while(p!=NULL)
{
department's
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) {
应功能的 10 个函数, 不过在设计时本人将输出部分统一到一个函数中来实现. 因为在
面向过程的程序设计中包括面向对象的程序设计一般都没有一种职工类型的变量, 因
此在一开始得建立一个结构体变量即所谓的职工类型, 此部分的代码如下:
typedef struct node
{
int no,depno,salary;
数据结构大作业
else
{
p=head->next;
if(p!=NULL)
{
clrscr();
printf("all information of employee\n\n");
printf("employee's name
employee's number
number employee's wages\n");
3 实验仪器
每人 1 台安装有 Turbo C 的普通学生电脑。
数据结构大作业
4 实验内容
利用静态链表来实现这一综合算法。
5 实验重点
掌握链表的常用操作。
6 程序功能及其实现详解
下面将详细介绍本程序的所有功能的实现方式即代码的含义, 在设计本程序时, 本人尽可能地用了质量好一点的算法, 因为本程序有以上 10 个功能, 显然应有实现相
p=s; for(q=s->next; q!=NULL; q=q->next) {
if((p->salary)>(q->salary)) p=q;
s=malloc(sizeof(employee)); clrscr();
数据结构大作业
printf("please input employee's name:"); scanf("%s",s->name); printf("please input employee's number:"); scanf("%d",&s->no); printf("please input department's number:"); scanf("%d",&s->depno); printf("please input employee's wages:"); 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("all done!\n"); getch(); } if(head!=NULL) {
数据结构大作业
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("all done!\n"); getch(); return(h); }
1 有关程序设计的引言
随着信息技术的发展, 在更多的情况下人们借助计算机来交流和储存信息,确切地 说是用计算机程序来管理当今的庞大的信息,提高了信息技术的发展. 在很多场合下计 算机的这样管理程序的功能都派上了用场, 譬如就职工信息管理而言, 就得有个使用 方便, 功能全面, 通俗易懂的管理程序是必备的. 从这一点出发, 本人设计出了一个计 算机管理程序“职工管理系统”, 接下来就说明该程序的功能.
相关文档
最新文档