⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zuoye.c

📁 用C语言或其他高级语言编程(最好C语言),基本功能:包括报名管理、成绩管理、证书管理等。能做到考试的报名成绩的录入与查询以及证书的发放等功能。实现有关功能的增加、修改、删除、查询和统计模块。根据要求知
💻 C
字号:
/*用C语言或其他高级语言编程(最好C语言),基本功能:
包括报名管理、成绩管理、证书管理等。能做到考试的报名
成绩的录入与查询以及证书的发放等功能。
实现有关功能的增加、修改、删除、查询和统计模块*/

/*根据要求知道,一个学生报名后就拥有唯一的考号,考号随着
考生取消报名而消失,所以可以以考号为Key来实现查找学生记录,
实现有关功能的增加、修改、删除、查询.
                实验环境VC6.0++
******************************************************/

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
int number=3001; //考号的初值
int zhengshu=100440; //证书号的初值
typedef struct LNode{
	char name[20];
	char ID[20];//身份证号或其他有效证件号
    float score;//考试成绩;
	int kaohao;//考试编号
	int NO;//证书编号
	struct LNode *next;
}LNode;

void menu_f() //显示功能菜单
{
printf("\n***********************");
printf("\n1.报名管理"); 
printf("\n2.成绩管理.");
printf("\n3.证书管理."); 
printf("\n0.退出."); 
printf("\n 请选择操作:");
}
void menu_f1()//报名管理的子菜单
{
printf("\n  1.增加新考生."); 
printf("\n  2.删除某考生.");
printf("\n  3.查询某考生."); 
printf("\n  0.返回主菜单."); 
printf("\n    请选择操作:");
}
void menu_f2() //成绩管理的子菜单 
{
printf("\n  1.录入考生成绩."); 
printf("\n  2.更新某考生成绩.");
printf("\n  3.查询某考生成绩."); 
printf("\n  0.返回主菜单."); 
printf("\n    请选择操作:");
}
void menu_f3()//证书管理的子菜单
{
printf("\n  1.查询某考生证书状态."); 
printf("\n  2.统计考试情况."); 
printf("\n  0.返回主菜单."); 
printf("\n    请选择操作:");
}
LNode* insert(LNode *HL) //增加新考生模块
{
	char n[20],id[20],ch;
    LNode *s,*p;
	do{
		printf("\n输入新考生的记录(姓名,有效证件号):");
		scanf("%s%s",n,id);
	    s=(LNode*)malloc(sizeof(LNode));
		strcpy(s->name,n);strcpy(s->ID,id);s->kaohao=number++;
		s->NO=0;s->score=0.0;
		s->next=HL;
		HL=s;
		printf("continue?y/n:");
	    while(isspace(ch=getchar()));
	}while(ch=='y'||ch=='Y');
	printf("\n加入新考生后考试安排考号情况如下:\n");
    printf("姓名                证件号              考号\n");
	for(p=HL;p!=NULL;p=p->next) printf("%-20s%-20s%d\n",p->name,p->ID,p->kaohao);return HL;
}

LNode* deleteLNode(LNode *HL)//取消某考生报名模块
{
	int n;
	LNode *cp,*ap;
	if(HL==NULL)printf("\n error!考生为空!\n");
	else {
		printf("\n请输入要注销的考生考号:");
		scanf("%d",&n);
		cp=HL,ap=NULL;
		while(cp!=NULL)if(cp->kaohao==n)break;
	     	        else {ap=cp;cp=cp->next;}
		if(cp==NULL)printf("\n此考号不存在!\n");
		else{
			if(ap==NULL)HL=HL->next;
				else ap->next=cp->next;
				printf("考号:%d  考生:%s  取消报名成功!\n",n,cp->name);
				free(cp);
		}
	}return HL;
}
void Found(LNode *HL) //查询某考生的信息(名字和有效证件号)
{
	int n;
	LNode *p=HL;
	printf("\n请输入要查询考生的考号:\n");
	scanf("%d",&n);
    while(p!=NULL)if(p->kaohao==n)break;
	else p=p->next;
	if(p!=NULL){printf("此考号考生信息为:\n");
        printf("姓名:%s   证件号:%s\n",p->name,p->ID);
	}
	else printf("无此考号,请重新查询!\n");
}
LNode * baoming(LNode *H)//报名管理模块
{
	int choice;
	while(1)
	{
		menu_f1();
		scanf("%d",&choice);
		if(choice==0)  break;
		else if(choice<0||choice>3){printf("error input!\n ");continue;}
		switch(choice)
		{
		case 1: H=insert(H);
			break;
		case 2: H=deleteLNode(H);
			break;
		case 3: Found(H);
			break;
		}
	}
	return H;
}

void insertSorce(LNode *HL)//录入成绩模块
{   LNode *p;
	int n;
	char ch;
	float ct;
	do{ 
		p=HL;
		printf("\n输入考生的考号和成绩:");
		scanf("%d%f",&n,&ct);
	    while(p!=NULL)if(p->kaohao==n)break;
	    else p=p->next;
		if(p!=NULL){
			p->score=ct;printf("\n录入成功!\n");
			if(ct>=60)p->NO=zhengshu++; //及格的发放证书
		}else printf("\n录入失败,无此考号!\n");
		printf("continue?y/n:");
		while(isspace(ch=getchar()));
	}while(ch=='y'||ch=='Y');
	printf("\n所有考生成绩如下:\n");
	printf("姓名                 考号        成绩\n");
	for(p=HL;p!=NULL;p=p->next)printf("%-20s %-15d%-5.2f\n",p->name,p->kaohao,p->score);
}
void modify1(LNode *HL)//修改成绩模块
{
	int n;float ct;
	LNode *p=HL;
	printf("\n输入要更新的考号和新成绩:");
	scanf("%d%f",&n,&ct);
	while(p!=NULL)if(p->kaohao==n)break;
	else p=p->next;
    if(p!=NULL){
			p->score=ct;printf("\n更新成功!\n");
			if(ct>=60)p->NO=zhengshu++; //及格的发放证书
		}else printf("\n更新失败,无此考号!\n");
	printf("\n更新后所有考生成绩如下:\n");
	printf("姓名                 考号        成绩\n");
	for(p=HL;p!=NULL;p=p->next)printf("%-20s %-15d%-5.2f\n",p->name,p->kaohao,p->score);
}
void FoundSorce(LNode *HL) //查询成绩模块
{
	int n;
	LNode *p=HL;
	printf("\n输入要查询的考号:");
	scanf("%d",&n);
	while(p!=NULL)if(p->kaohao==n)break;
	else p=p->next;
    if(p!=NULL){
		printf("\n此考生的成绩是:%-5.2f\n",p->score);
		}else printf("\n查询失败,无此考号!\n");
}
void scores(LNode *HL) //成绩管理模块
{
	int choice;
	while(1)
	{
		menu_f2();
		scanf("%d",&choice);
		if(choice==0)  break;
		else if(choice<0||choice>3){printf("error input!\n ");continue;}
		switch(choice)
		{
		case 1: insertSorce(HL);
			break;
		case 2: modify1(HL);
			break;
		case 3: FoundSorce(HL);
			break;
		}
	}
}

void FoundStation(LNode *HL)//查询某考生是否获得此科目考试证书
{
	int n;
	LNode *p=HL;
	printf("\n输入要查询的考号:");
	scanf("%d",&n);
	while(p!=NULL)if(p->kaohao==n)break;
	else p=p->next;
    if(p!=NULL){
		if(p->NO!=0)printf("\n此考生的证书编号是:%d\n",p->NO);
		else printf("此考生没有通过,无证书!\n");
		}
	else printf("\n查询失败,无此考号!\n");
}
void Station(LNode *HL)//统计此科目考试情况
{
	int s=0,n=0;
	LNode *p=HL;
	while(p!=NULL){
	  s++;  //统计考生人数
	  if(p->score>=60)n++;
      p=p->next;
	}
	printf("参加此科目考试人数为:%d,通过考试获得证书人数为:%d\n",s,n);
	printf("获得证书的考生如下:\n");
	printf("姓名                 证件号              成绩    证书号\n");
    for(p=HL;p!=NULL;p=p->next)if(p->score>=60)
		printf("%-20s %-20s%-5.2f  %d\n",p->name,p->ID,p->score,p->NO);
	printf("没有通过的考生如下:\n");
	printf("姓名                 证件号              成绩      \n");
    for(p=HL;p!=NULL;p=p->next)if(p->score<60)
		printf("%-20s %-20s%-5.2f  \n",p->name,p->ID,p->score);
}

void certificate(LNode *HL) //证书管理模块
{
	int choice;
	while(1)
	{
		menu_f3();
		scanf("%d",&choice);
		if(choice==0)  break;
		else if(choice<0||choice>3){printf("error input!\n ");continue;}
		switch(choice)
		{
		case 1: FoundStation(HL);
			break;
		case 2:Station(HL);
			break;
		}
	}
}


void main() //主函数
{
	int choice;
	int i=1;
	char n[20],id[20],ch;
	LNode *head=NULL,*s,*p;
	printf("****欢迎使用某科目等级证书考试管理系统****\n");
	printf("第一次使用,请先建立考生报名数据库:\n");
	do{
		printf("依次输入第 %d 考生的记录(姓名,有效证件号):",i);
		scanf("%s%s",n,id);
		s=(LNode*)malloc(sizeof(LNode));
	    strcpy(s->name,n);strcpy(s->ID,id);s->kaohao=number++;
		s->NO=0;s->score=0.0;
		s->next=head;
		head=s;
		i++;
		printf("continue?y/n:");
		while(isspace(ch=getchar()));
	}while(ch=='y'||ch=='Y');
	printf("你所输入考生及安排考号情况如下:\n");
	printf("姓名                证件号              考号\n");
	for(p=head;p!=NULL;p=p->next) printf("%-20s%-20s%d\n",p->name,p->ID,p->kaohao);

	while(1)
	{
		menu_f();
		scanf("%d",&choice);
		if(choice==0)  break;
		else if(choice<0||choice>3){printf("error input!\n ");continue;}
		switch(choice)
		{
		case 1: head=baoming(head);
			break;
		case 2: scores(head);
			break;
		case 3: certificate(head);
			break;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -