资源简介

编写有一个程序,该程序输入教师编号和完成的教学量,程序允许同一教师有多次输入,由程序对其完成的教学量实现累计。程序按完成数量对他们排序,并确定他们的名次。按完成的教学量由多到少的顺序,输出名次、同一名次的教师人数及他们的编号(编号由小到大顺序输出)。要求程序用有序链表存储数据信息。 提示:教学量包括授课、实验、课程设计、毕业设计。

资源截图

代码片段和文件信息

#include   //标准输入、输出头文件
#include  //包含字符串函数处理头文件
#include  //包含动态存储与释放函数头文件
#include  // 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->nop->info->namep->info->posp->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 Llinklist 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;
}


评论

共有 条评论