问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言课程设计—教师工作量管理系统源代码

发布网友 发布时间:2022-04-29 19:46

我来回答

4个回答

热心网友 时间:2022-06-22 01:44

#include<stdio.h> //标准输入、输出头文件
#include<string.h> //包含字符串函数处理头文件
#include<stdlib.h> //包含动态存储与释放函数头文件
#include<iostream> // system
#define TEALEN sizeof(teanode) //教师信息结构体长度
#define LEN sizeof(Lnode) //链表节点长度
#define MAX 10
int SAME[MAX];

typedef struct teanode
{
char name[10]; //教师姓名
int lesson; //授课工作量
int exper; //实验工作量
int cdesign; //课程设计工作量
int gdesign; //毕业设计工作量
int total; //总工作量
int pos; //排序位置
}teanode,*linknode;//教师信息结构体

typedef struct Lnode
{
char no[20]; //教师编号
linknode info; //节点信息详细指针指向教师信息结构体
struct Lnode *prior,*next; //双向链表指针域
}Lnode,*linklist;//链表节点

void newLnode();
void initlist();
void prin();

void initlist(linklist *T)
{
*T=(linklist)malloc(LEN);
(*T)->info=(linknode)malloc(TEALEN);//为头结点申请空间
(*T)->prior=*T;//设置头结点的前驱指针
(*T)->next=*T;//设置头结点的后继指针
}//初始化双向循环链表

void newLnode(linklist*p)
{
*p=(linklist)malloc(LEN);//新节点
if(!p)
{
printf("申请节点失败");
exit(0);
}
(*p)->info=(linknode)malloc(TEALEN);
}

void prin(linklist * L)
{

if(L==NULL)
{
printf("没有可以显示的信息\n");
return;
}
linklist p=(*L)->next;
// printf("********************************************************************************\n");
printf("教师编号 教师姓名 工作量排名 工作总量\n\n");
while (p!=*L)
{

printf("%7s%9s%10d%10d\n",p->no,p->info->name,p->info->pos,p->info->total);
p=p->next;
}
}

void main()
{
linklist input(linklist L);
linklist sort(linklist L);
int j;//用来判断是否结束
linklist L;
initlist(&L);

do{
system("cls");//清屏函数
printf(" ★--- 您好,欢迎进入教师工作量统计系统! ---★\n");
printf("================================================================================\n");
printf( " -------- ☆ 1.输入教师工作量信息 ☆-------- \n\n"
" -------- ☆ 2.进行教师工作量排序 ☆-------- \n\n"
" -------- ☆ 3.显示教师工作量情况 ☆-------- \n\n"
" -------- ☆ 0.退出 ☆-------- \n\n");
printf("================================================================================\n");
printf("请在0-3中选择以回车键结束:\n\n");
scanf("%d",&j);
switch(j) {
case 1:
L=input(L);
prin(&L);
printf("录入结束\n");
system("pause");
break;

case 2:
L=sort(L);
printf("排序成功\n");
system("pause");
break;
case 3:
prin(&L);
system("pause");
break;
case 0:;
break;
}
}while(j!=0);
printf("谢谢使用,再见!\n");
}//主函数结束

linklist input(linklist L)
{
linklist workload(linklist p);
linklist adworkload(linklist p);
linklist searinsert(linklist L,linklist p);
linklist sort(linklist L);
int flag=0;
char no[10];
linklist p;

p=L->next;
for(;;)
{
if(flag==1)
break;
printf("请输入教师编号输入@结束:\n\n");
scanf("%s",no);
if(no[0]=='@')
{
flag=1;
break;
}

while (p!=L)//当链表不空时
{
if (strcmp(p->no,no)==0)
{
printf("该教师编号已存在,输入需要增加的工作量\n\n");
p->prior->next=p->next;
p->next->prior=p->prior;//删除P,
p=adworkload(p);//修改P中的详细信息info指针域的内容
L=searinsert(L,p);//重新查找P的位置插入链表L中

return L;
}
p=p->next;
}//跳出循环则该教师编号第一次输入
newLnode(&p);
strcpy(p->no,no);
printf("请输入教师姓名:\n");
scanf("%s",p->info->name);
p=workload(p);
L=searinsert(L,p);
}
return L;
}
linklist adworkload(linklist p)
{
int a;
printf("请输入增加的授课工作量:\n");
scanf("%d",&a);
p->info->lesson+=a;

printf("请输入增加的实验工作量:\n");
scanf("%d",&a);
p->info->exper+=a;

printf("请输入增加的课程设计工作量:\n");
scanf("%d",&a);
p->info->cdesign+=a;

printf("请输入增加的毕业设计工作量:\n");
scanf("%d",&a);
p->info->gdesign+=a;

//p->info->pos=0;

p->info->total=p->info->lesson+p->info->exper+p->info->cdesign+p->info->gdesign;//求总工作量
return p;
}

linklist workload(linklist p)
{
printf("请输入该教师的授课工作量:\n");
scanf("%d",&(p->info->lesson));

printf("请输入该教师的实验工作量:\n");
scanf("%d",&(p->info->exper));

printf("请输入该教师的课程设计工作量:\n");
scanf("%d",&(p->info->cdesign));

printf("请输入该教师的毕业设计工作量:\n");
scanf("%d",&(p->info->gdesign));

p->info->pos=0;

p->info->total=p->info->lesson+p->info->exper+p->info->cdesign+p->info->gdesign;//求总工作量
return p;
}

linklist searinsert(linklist L,linklist p)
{//将P放置L中合适的位置

linklist tra;//遍历指针
linklist x;//P插入位置的前一个节点指针
tra=L->next;//指向第一个节点
if ((L->next==L)||(p->info->total>tra->info->total)) //第一次插入或者大于表头的情况
{
x=L;//插入表头
}
else if (p->info->total<L->prior->info->total) //小于表尾的情况
{
x=L->prior;//插入表尾
}
else
{ while (p->info->total<tra->info->total)
tra=tra->next;
x=tra->prior;//正常查找情况
}
//将P接到X后面
p->next=x->next;
p->prior=x;
x->next=p;
p->next->prior=p;
return L;
}

linklist sort(linklist L)
{
linklist sortfisrtlast(linklist L,linklist first,linklist last,int n);
int i;
for(i=0;i<MAX;i++)
SAME[i]=0;//初始化数组SAME[MAX]

linklist p,first,last;
int x,n=1,k;
p=L->next;

while (p!=L)
{

x=1;
while ((p->next->info->total!=p->info->total)&&p!=L)
{
p->info->pos=n;
p=p->next;
n++;
}
if (p==L)
return L;
else

while ((p->next->info->total==p->info->total)&&p!=L)
{
k=n;
if (x==1)
{
//k=n;
first=p;
}
p->info->pos=k;
x++;
p=p->next;

p->info->pos=k;
//保存X
SAME[k]=x;
}
n+=x-1;
if (p==L)
return L;
else
{
last=p;
p=last->next;
L=sortfisrtlast(L,first,last,k);//调用fisrt last函数
}
}
}
linklist sortfisrtlast(linklist L,linklist first,linklist last,int n)
{
if (first==last)
return L;
linklist head,posa,posb,p,t;
linklist tra;//遍历指针
linklist x;//P插入位置的前一个节点指针
posa=first->prior;//接入位置a
posb=last->next;//接入位置b
posa->next=last->next;
last->next->prior=posa;
last->next=NULL;
first->prior=NULL;//删除这段
initlist(&head);
p=first;
while (p!=NULL)
{
tra=head->next;
if ((head->next==head)||strcmp(p->no,tra->no)<0)//第一次插入或者小于当前节点
x=head;
else if (strcmp(p->no,head->prior->no)>0)
x=head->prior;
else
{
while(strcmp(p->no,tra->no)>0)
tra=tra->next;
x=tra->prior;
}
t=p;//将P接到X后
p=p->next;
t->next=x->next;
t->prior=x;
x->next=t;
t->next->prior=t;

}
printf("********************************************************************************\n");
// printf("================================================================================\n");
printf("工作量名次相同的教师名单:(按编号排序)\n\n");
printf("名次为%d教师共有%d名\n\n",n,SAME[n]);
prin(&head);
first=head->next;
last=head->prior;

posa->next=first;
first->prior=posa;

posb->prior=last;
last->next=posb;
return L;
}

热心网友 时间:2022-06-22 01:44

可以依靠百度Hi通知我
有时间可以解决你的问题
同样的要求也可以通知我

ES:\\E0B475A004D21038346598B01230A947
交易提醒:预付定金是陷阱

热心网友 时间:2022-06-22 01:45

#include<stdio.h> //标准输入、输出头文件
#include<string.h> //包含字符串函数处理头文件
#include<stdlib.h> //包含动态存储与释放函数头文件
#include<iostream> // system
#define TEALEN sizeof(teanode) //教师信息结构体长度
#define LEN sizeof(Lnode) //链表节点长度
#define MAX 10
int SAME[MAX];

typedef struct teanode
{
char name[10]; //教师姓名
int lesson; //授课工作量
int exper; //实验工作量
int cdesign; //课程设计工作量
int gdesign; //毕业设计工作量
int total; //总工作量
int pos; //排序位置
}teanode,*linknode;//教师信息结构体

typedef struct Lnode
{
char no[20]; //教师编号
linknode info; //节点信息详细指针指向教师信息结构体
struct Lnode *prior,*next; //双向链表指针域
}Lnode,*linklist;//链表节点

void newLnode();
void initlist();
void prin();

void initlist(linklist *T)
{
*T=(linklist)malloc(LEN);
(*T)->info=(linknode)malloc(TEALEN);//为头结点申请空间
(*T)->prior=*T;//设置头结点的前驱指针
(*T)->next=*T;//设置头结点的后继指针
}//初始化双向循环链表

void newLnode(linklist*p)
{
*p=(linklist)malloc(LEN);//新节点
if(!p)
{
printf("申请节点失败");
exit(0);
}
(*p)->info=(linknode)malloc(TEALEN);
}

void prin(linklist * L)
{

if(L==NULL)
{
printf("没有可以显示的信息\n");
return;
}
linklist p=(*L)->next;
// printf("********************************************************************************\n");
printf("教师编号 教师姓名 工作量排名 工作总量\n\n");
while (p!=*L)
{

热心网友 时间:2022-06-22 01:45

你可以去淘宝买的嘛。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
儿童散学归来早描述的是什么季节(儿童散学归来早描写的是什么季节) 超级死神进化论章节目录 我们没有忘记读后感458字作文 贷15万贷10年每月还多少钱 15万10年贷款月供多少 15万贷10年月供多少钱 15万贷款10年一月多少钱 贷款15万10年每月还多少 在银行贷款15万十年还清想知道利息和月供……(还望亲们提供的的2013年... 今天去刷qq空间 看到了一个同学的头像 说明他发了说说 可是怎么刷新... 野生藏贝母多少钱一n斤? 数据结构课程设计(C语言),求高手帮忙,帮忙写下面题目的代码,有满意答案一定再加20分 重装系统后怎么分区? 现在平贝母多少钱一斤? 重装系统怎么分盘 c语言程序 课程设计 求大神给个源代码 贝母(中药材),湖北赤壁地区的是什么品种,现今市价多少钱一斤? 俄罗斯终于出手了,大量美企或面临倒闭,损失无法估量,之后怎么样? 移动流量超出套餐外427m该如何补救?请支招! 俄罗斯会不会沦落为二流国家? 请帮我写个用C语言写个课程设计 苏联解体后,俄国发生了怎样的改变? C语言课程设计:图书管理系统。求完整的代码参考。 求C语言课程设计源代码 急~!! 俄罗斯现在的局势怎么样了?拜托各位了 3Q 高分求C语言课程设计源代码(分不多了,全部给你们) 俄罗斯经济怎么样? C语言课程设计不少于200行代码 请问一下,这是一个一个C语言的课程设计的总代码,求大神给一张大致的流程图。小弟谢了 俄罗斯国家现状人民生活水平怎么样呢 C语言课程设计 车辆管理系统代码 最好有注释 什么是c语言课程设计原代码 请问恩施今年鲜贝母收购多少钱一斤 鲜平贝母的价格如何? 求一份C语言课程设计:通讯录管理系统,1200行代码 202||年鲜贝母收购价多少钱一斤? 宜昌中药材收购公司 小米11pro手机怎么搜不到荣耀手环 MacBook笔记本电脑充电的时候电脑不显示是什么原因? 小米手机登陆下了华为帐号,那荣耀手环就不能用吗。 macbookpro 充不进电咋办 荣耀手环连接小米手机 我用小米手机绑定我的荣耀手环进行设备解锁,可是它要轻敲两下,我敲了... 小米4c怎么搜索不到荣耀手环3呢,用的是手机 荣耀手环zero,小米手机可以使用吗 小米4s能用荣耀手环吗,小米4s手机怎么和华为荣耀手环连接不上 《约翰.克里斯朵夫》全文 《约翰·克里斯朵夫》首次问世的时间是什么时候?讲述了一个什么故事呢? 《约翰·克里斯朵夫》的主要内容是什么? 约翰克里斯朵夫全书共有几卷? 每卷都讲了什么内容啊?