求助,一个c语言程序

ty1214 2009-06-17 10:22:32
题目:假如某校计算机职工的基本信息主要包括:职工信息主要包括职工号;姓名,性别,年龄,学历,工资,住址,电话等;(职工号不重复),本系统应能对这些基本信息进行管理,并要求具有以下功能:
1.具有职工信息添加功能。2:具有职工信息删除功能;3具有职工信息查询功能;4具有职工信息排序功能;5具有职工信息显示功能
题目要求:(1),为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过这个菜单项选择希望进行的操作项目;
(2),职工宿舍信息按照学历,姓名,等查寻或删除,排序功能按工资排列。
(3),要求以上功能分别用函数实现。
不要用太复杂的语句哦,大学一年级的程度就好。请尽量在30号之前回答,小弟不胜感激。
...全文
21 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveisbug 2009-06-17
  • 打赏
  • 举报
回复
自己不做作业,将来找不到工作。
xiao0915 2009-06-17
  • 打赏
  • 举报
回复
用结构体,函数,数组或指针就可以实现了
每个功能用一个函数来实现就,纯C的程序


楼上说的是
ameyume 2009-06-17
  • 打赏
  • 举报
回复
用结构体,函数,数组或指针就可以实现了
每个功能用一个函数来实现就,纯C的程序,不需要用到map等就可以实现
guow043 2009-06-17
  • 打赏
  • 举报
回复
给你一个实例,和你说的题目差不多,改改结构体就行了。

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <conio.h>

using namespace std;

#define NULL 0

typedef struct student
{
int num; //学号
float special1; //专业课1
float special2; //专业课2
float math; //数学
float english; //英语
float politics; //政治
float total; //总分
float average; //平均分
struct student *next;
}node;

node *input(FILE *fp, node *head);//逐个从文件中读入学生的学号及五门课程的成绩,建立链表,输入过程直到学号为负或人数超过40人为止。
void count( node *head); //计算每个学生的平均分及总分
void sort(node *head); //总分从高到低排名次,并按名次输出每个学生的学习情况。
void serch1( node *head, char a); //对指定的某门课程,输出85分以上且总分在前10名的学生学习情况。
void serch2(node *head); //输出不及格成绩的学生学习情况。
node *del( node *head, int num); //删除学号为num的学生的信息。
node *insert( node *head, int num);// 插入学号为num的信息到head链表中。
void output( node *head); //输出head链表中的学生的信息。

int main()
{
FILE *file;
node *head;
char b,c;
int num1,num2;
file = NULL;
head = NULL;
head = input(file,head);

while (1)
{
printf("\n\n欢迎进入学生成绩管理系统,请选择以下菜单:\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");

b = getche();
switch(b)
{
case '1':
output(head);
break;
case '2':
count(head);
break;
case '3':
sort(head);
break;
case '4':
printf("\n请选择某一课程:\n");
printf("1 代表:专业课1\n");
printf("2 代表:专业课2\n");
printf("m 代表:数学\n");
printf("e 代表:英语\n");
printf("p 代表:政治\n");
c = getche();
serch1(head,c);
break;
case '5':
printf("\n\n\n不及格学生情况\n");
serch2(head);
break;
case '6':
printf("\n删除前的学生链表\n");
output(head);
printf("请输入要删除的学号:\n");
scanf("%d",&num1);
head = del(head,num1);
printf("\n删除后的学生链表\n");
output(head);
break;
case '7':
printf("\n插入前的学生链表\n");
output(head);
printf("请输入要插入的学号:(1-1000)\n");
scanf("%d",&num2);
head = insert(head,num2);
printf("\n删除后的学生链表\n");
output(head);
break;
case '8':
return 0;
}
}
}

node *input(FILE *fp, node *head)
{
node *p,*s;
int num1;
int peoplecount=0;
if ((fp = fopen("Sorce.txt","rb")) == NULL)
{
printf("can't open the file\n");
exit(0);
}
fscanf(fp,"%d",&num1);

head = (node*)malloc(sizeof(node));
p = head;
printf("Creat the student list.\n\n");
while (num1 != -1 && peoplecount < 40)
{

s = (node*)malloc(sizeof(node));
s->num = num1;
fscanf(fp,"%f %f %f %f %f",&(s->special1),&(s->special2),&(s->math),&(s->english),&(s->politics));
p->next = s;
p = s;
fscanf(fp,"%d ",&num1);
peoplecount++;
}
head = head->next;
p->next = NULL;

return(head);
}

void count( node *head)
{
printf("\nthe total and the average score:\n");
node *p;
p = head;
if (head != NULL)
while(p!=NULL)
{
p->total = p->special1 + p->special2 + p->english + p->math + p->politics;
p->average = p->total / 5;
printf("\n 学号: %d 总分: %.2f 平均分: %.2f", p->num,p->total,p->average);
p = p->next;
}
}

void sort(node *head)
{
float a[100];
int m,i=0;
float t;
printf("\nthe sort of students:\n");
node *p;
p = head;
if (head != NULL)
while(p!=NULL)
{
p->total = p->special1 + p->special2 + p->english + p->math + p->politics;
p->average = p->total / 5;
a[i] = p->total;
p = p->next;
++i;
}
m = i;


for (int j=0;j<m ;j++)
for (int l =0; l<m-j; l++)
{
if (a[l]<a[l+1])
{
t = a[l];
a[l]=a[l+1];
a[l+1]=t;
}
}


for (i=0;i<m;i++)
{
p = head;
if (head != NULL)
while(p!=NULL)
{
if (a[i] == p->total)
{
printf("第%d名 ",i+1);
printf("学号: %d \n",p->num);
printf(" 专业课1 专业课2 数学 英语 政治\n");
printf("成绩: %.2f %.2f %.2f %.2f %.2f\n",p->special1,p->special2,p->math,p->english,p->politics);
printf("总分: %.2f \n",p->total);
printf("平均分: %.2f\n\n",p->average);
}
p = p->next;
}

}

}

void serch1( node *head,char a)
{
node *p;
float b[100];
int m,i = 0;
float t;
p = head;
if (head != NULL)
while(p!=NULL)
{
p->total = p->special1 + p->special2 + p->english + p->math + p->politics;
p->average = p->total / 5;
b[i] = p->total;
p = p->next;
++i;
}
m = i;


for (int j=0;j<m ;j++)
for (int l =0; l<m-j; l++)
{
if (b[l]<b[l+1])
{
t = b[l];
b[l]=b[l+1];
b[l+1]=t;
}
}

switch(a)
{
case '1':
printf("\nthe special1's score is biger than 85 and the top 10 student\n");
p = head;
if (head != NULL)
while(p!=NULL)
{

if (p->special1 > 85)
{
for(int i = 0;i<10;i++)
if(p->total == b[i])
printf("\n 学号: %d 分数: %.2f ", p->num,p->special1);
}
p = p->next;

}
break;
case '2':
printf("\nthe special2's score is biger than 85 and the top 10 student\n");
p = head;
if (head != NULL)
while(p!=NULL)
{
if (p->special2 > 85)
{
for(int i = 0;i<10;i++)
if(p->total == b[i])
printf("\n 学号: %d 分数: %.2f ", p->num,p->special2);
}
p = p->next;
}
break;
case 'm':
printf("\nthe math's score is biger than 85 and the top 10 student\n");
p = head;
if (head != NULL)
while(p!=NULL)
{
if (p->math > 85)
{
for(int i = 0;i<10;i++)
if(p->total == b[i])
printf("\n 学号: %d 分数: %.2f ", p->num,p->math);
}
p = p->next;
}
break;
case 'e':
printf("\nthe english's score is biger than 85 and the top 10 student\n");
p = head;
if (head != NULL)
while(p!=NULL)
{
if (p->english > 85)
{
for(int i = 0;i<10;i++)
if(p->total == b[i])
printf("\n 学号: %d 分数: %.2f ", p->num,p->english);
}
p = p->next;
}
break;
case 'p':
printf("\nthe politic's score is biger than 85 and the top 10 student\n");
p = head;
if (head != NULL)
while(p!=NULL)
{
if (p->politics > 85)
{
for(int i = 0;i<10;i++)
if(p->total == b[i])
printf("\n 学号: %d 分数: %.2f ", p->num,p->politics);
}
p = p->next;
}
break;
}

}

void serch2(node *head)
{
node *p;
p=head;
if (head != NULL)
while(p!=NULL)
{
if (p->english < 60 || p->math < 60 || p->politics< 60 || p->special1 < 60 || p->special2 < 60)
{
p->total = p->special1 + p->special2 + p->english + p->math + p->politics;
p->average = p->total / 5;
printf("\n");
printf("学号: %d \n",p->num);
printf(" 专业课1 专业课2 数学 英语 政治\n");
printf("成绩: %.2f %.2f %.2f %.2f %.2f\n",p->special1,p->special2,p->math,p->english,p->politics);
printf("总分: %.2f \n",p->total);
printf("平均分: %.2f\n\n",p->average);
}
p = p->next;
}
}

node *del( node *head, int num)
{
node *p1,*p2;
p1 = head;
while (num != p1->num && p1->next != NULL)
{
p2=p1;
p1=p1->next;
}
if (num==p1->num)
{
if (p1==head)
{
head = p1->next;
free(p1);
}
else
p2->next=p1->next;
}
else
printf("\n %d student could not been found",num);
return(head);
}

node *insert( node *head, int num)
{
node *p0, *p1, *p2;
p1 = head;
p0 = (node*)malloc(sizeof(node));
p0->num = num;
printf("\n输入专业课1成绩:\n");
scanf("%f",&(p0->special1));
printf("输入专业课2成绩:\n");
scanf("%f",&(p0->special2));
printf("输入数学成绩:\n");
scanf("%f",&(p0->math));
printf("输入英语成绩:\n");
scanf("%f",&(p0->english));
printf("输入政治成绩:\n");
scanf("%f",&(p0->politics));

while (p0->num > p1->num && p1->next != NULL)
{
p2 = p1;
p1 = p1->next;
}

if (p0->num<=p1->num)
{
if (head == p1)
{
p0->next = p1;
head = p0;
}
else
{
p2->next = p0;
p0->next = p1;
}
}
else
{
p1->next = p0;
p0->next = NULL;
}
return(head);

}

void output( node *head)
{
node *p;
int n=0;
p = head;
if (head != NULL)
while (p!=NULL)
{
n++;
p=p->next;
}

p = head;
printf("\n Now, These %d students records are:\n",n);
if (head != NULL)
while (p!=NULL)
{
printf("学号: %d \n",p->num);
printf(" 专业课1 专业课2 数学 英语 政治\n");
printf("成绩: %.2f %.2f %.2f %.2f %.2f\n\n",p->special1,p->special2,p->math,p->english,p->politics);
p=p->next;
}

}
allen1986 2009-06-17
  • 打赏
  • 举报
回复
这个自己规划个流程吧。用C++或C的结构体都可以。
光宇广贞 2009-06-17
  • 打赏
  • 举报
回复
顶一个,望楼下星级大牛出现!
wwoo_1105 2009-06-17
  • 打赏
  • 举报
回复
rendengke7213 2009-06-17
  • 打赏
  • 举报
回复
我岁然是个学者!!但特希望楼主 自己搞
Wolf0403 2009-06-17
  • 打赏
  • 举报
回复
where's your thinking
WOBUGUAN 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ericzhangali 的回复:]
自己不做作业,将来找不到工作。
[/Quote]

说得对。不帮人写作业。
tianya0609 2009-06-17
  • 打赏
  • 举报
回复
强烈建议自己做
magipan 2009-06-17
  • 打赏
  • 举报
回复
不是很难,就是麻烦,有点整体概念就好弄一些
woods2001 2009-06-17
  • 打赏
  • 举报
回复
顶前面三位一下
楼主要好好学习啊
liao05050075 2009-06-17
  • 打赏
  • 举报
回复
如果想学到东西,作业题,还是自己写比较好。
  • 打赏
  • 举报
回复
http://download.csdn.net/source/1057241

职工管理系统c++源代码

下来看吧。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧