考试报名管理
来源:互联网 发布:照片识别软件 编辑:程序博客网 时间:2024/05/17 01:50
问题及代码:
/* * 烟台大学计算机与控制工程学院 * 作者:孙启先 * 完成日期:2016年12月23日 * 问题描述: 实现对考生报考相应类别考试的管理和相关操作。 */#include <stdio.h>#include <string.h>#include <malloc.h>#include <stdlib.h>#include <iostream>using namespace std;typedef struct student{ int num; char sex[10];char name[10];int age;char address[10]; int type;}ElemType;typedef struct LNode{ElemType data; struct LNode *next;} LinkList;ElemType e;void InitList(LinkList *&L){L=(LinkList *)malloc(sizeof(LinkList));L->next=NULL;}void DestroyList(LinkList *&L){LinkList *p=L,*q=p->next;while (q!=NULL){free(p);p=q;q=p->next;}free(p);printf("此链表为空,请重新选择,创建链表\n\n\n");}void CreateListR(LinkList *&L) //<采用尾差法创建链表> { int n; //该链表的总人数 printf("请输入要增加的人数n="); scanf("%d",&n); LinkList *s,*r;int i; //定义LinkList *s 做作为插入的新结点 定义LinkList *r 始终指向尾结点 L=(LinkList *)malloc(sizeof(LinkList)); r=L; printf("输入考号(不能相同) 姓名 性别 籍贯 年龄 考试类别(1.英语2.电脑3.数学4.语文5.其它)\n");for (i=0;i<n;i++) //使用for循环将新结点逐次插入链表之后(条件是int i<n) { s=(LinkList *)malloc(sizeof(LinkList)); scanf("%d %s %s %s %d %d",&s->data.num,&s->data.name,&s->data.sex,&s->data.address,&s->data.age,&s->data.type); r->next=s; r=s; } r->next=NULL; //将尾结点指向null }void DispList(LinkList *L){LinkList *p=L->next; //定义LinkList *p 指向第一个元素结点while (p!=NULL) //用while循环逐次输出链表元素(条件是p!=null){ printf("考号(不能相同) 姓名 性别 籍贯 年龄 考试类别(1.英语2.电脑3.数学4.语文5.其它)\n"); printf("%d %s %s %s %d %d\n",p->data.num,p->data.name,p->data.sex,p->data.address,p->data.age,p->data.type); p=p->next;}printf("\n");}int LocateElem(LinkList *L) //定义ElemType e 作为查找考号的对象{ printf("请输入要查找的考号i="); scanf("%d",&e.num);LinkList *p=L->next; //定义LinkList *p 指向第一个元素结点while (p!=NULL && p->data.num!=e.num )//用while循环查找要查找的结点(条件是p!=NULL && p->data.num!=e.num){ p=p->next;}if (p==NULL)return(0);else{printf("考号:"); printf("%d\n",p->data.num); printf("性别:"); printf("%s\n",p->data.sex); printf("姓名:"); printf("%s\n",p->data.name); printf("籍贯:"); printf("%s\n",p->data.address); printf("年龄:"); printf("%d\n",p->data.age); printf("考试类别(1.英语2.电脑3.数学4.语文5.其它):"); printf("%d\n",p->data.type); return 1;}}int ListDelete(LinkList *&L) //定义ElemType e 作为删除考号的对象{ printf("请输入要删除的考号i=");scanf("%d",&e.num);LinkList *p=L,*q; //定义LinkList *p 指向头结点 定义LinkList *q 作为存储删除结点的变量while (e.num!=p->next->data.num &&p!=NULL) //用while循环查找该结点,并且用free(q)清空该结点{p=p->next;}if (p==NULL)return 0;else{q=p->next;if (q==NULL)return 0;p->next=q->next;free(q);printf("输出删除以后的全部信息:\n\n"); DispList(L);return 1;}}int create(LinkList *&L) //定义ElemType i 作为修改考号的对象{ printf("请输入要修改人的考号i=");scanf("%d",&e.num);LinkList *p=L; // 定义LinkList *p 指向头结点while (e.num!=p->data.num&&p!=NULL) // 用while循环查找该结点{p=p->next;}if(p==NULL)return 0;else{ printf("请输入考号\n"); scanf("%d",&e.num); if(p->data.num==e.num) { printf("允许修改,请输入:姓名 性别 籍贯 年龄 考试类别(1.英语2.电脑3.数学4.语文5.其它)\n"); scanf("%s %s %s %d %d",&p->data.name,&p->data.sex,&p->data.address,&p->data.age,&p->data.type); printf("输出修改以后的全部信息:\n\n"); DispList(L); return (1); }else{ printf("考号不同,不能修改,重新执行修改信息\n"); return (1);}}}void sort(LinkList *&L){ LinkList *p=L->next,*q,*r; //定义LinkList *p 指向未排序的第一个结点 定义LinkList *q 指向头结点 if(p!=NULL) {r=p->next; p->next=NULL; p=r; while(p!=NULL) //用while循环寻找p指向的元素比排好序中的元素大,则将其插入其后 {r=p->next; q=L;while(q->next!=NULL&&q->next->data.num<p->data.num)q=q->next;p->next=q->next;q->next=p;p=r; } } DispList(L);}void sumList(LinkList *&L){LinkList *p=L; //定义LinkList *p 指向头结点 定义多个变量 统计报考各科的人数 int n=0,m=0,h=0,i=0,j=0,k=0; while(p->next!=NULL) //用while循环和if语句统计人数 { n++; if(p->next->data.type==1) m++; if(p->next->data.type==2) i++; if(p->next->data.type==3) h++; if(p->next->data.type==4) j++; if(p->next->data.type==5) k++; p=p->next;} printf("报考的总人数是n="); printf("%d\n",n); printf("报考英语的人数是e="); printf("%d\n",m); printf("报考数学的人数是m="); printf("%d\n",h); printf("报考电脑的人数是c="); printf("%d\n",i); printf("报考语文的人数是k="); printf("%d\n",j); printf("报考其它的人数是q="); printf("%d\n",k);}void Insterlist(LinkList *L){ int n; printf("请输入要插入的人数n="); // 定义变量int n 作为插入的人数 scanf("%d",&n); LinkList *s,*r,*p=L;int i; //定义变量LinkList *s 作为新插入结点变量 定义变量LinkList *r 指向尾指针 定义变量LinkList *p 作为循环条件变量 r=s; printf("输入考号(不能相同) 姓名 性别 籍贯 年龄 考试类别(1.英语2.电脑3.数学4.语文5.其它)\n");while(p->next!=NULL) ///用while循环找到尾结点,插入新元素p=p->next;for (i=0;i<n;i++) { s=(LinkList *)malloc(sizeof(LinkList)); scanf("%d %s %s %s %d %d",&s->data.num,&s->data.name,&s->data.sex,&s->data.address,&s->data.age,&s->data.type); p->next=s; p=s; r=s; } r->next=NULL; }void display() { printf("........考试报名菜单选择.........\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"); printf(" 9.插入信息. \n"); printf(" 10.结束程序. \n");}void Display(LinkList *L)//定义变量a 作为选择变量{while(true){display(); int a; printf("请输入要操作的序号a="); scanf("%d",&a); switch(a) //用switch语句,编写选择项目</span> {case 1: {sort(L);break;} case 2: {LocateElem(L);break;} case 3: {ListDelete(L);break;} case 4: {DispList(L); break;} case 5: { CreateListR(L);break;} case 6: {DestroyList(L);break;} case 7: {sumList(L);break;} case 8: {create(L);break;} case 9: {Insterlist(L);break;} case 10: {cout<<"**************************************"<<endl; cout<<"**************************************"<<endl; cout<<" 欢迎再次使用 "<<endl; cout<<"**************************************"<<endl; cout<<"**************************************"<<endl; exit(0); } }}} int main(){LinkList *L; //定义LinkList *L</span> InitList(L); //调用初始化线性表函数</span> Display(L); //调用显示菜单函数</span> return 0;}
运行结果:
0 0
- 考试报名管理
- 考试报名管理
- 考试报名管理系统
- 考试报名管理
- 考试报名管理系统
- 考试报名管理系统
- 课程设计--考试报名管理系统
- 数据结构课程设计--考试报名管理
- 考试报名管理系统课程设计
- 数据结构课程设计【考试报名管理系统】
- 数据结构课程设计—考试报名管理系统
- 全国英语等级考试报名管理系统
- 项目管理系列:已报名2011系统集成项目经理考试
- 信息系统项目管理师考试、报名、复习、备考问题大全
- 数据结构课程设计——考试报名管理系统
- 数据结构课程设计——英语四级考试报名管理
- 塞恩万博考试报名信息系统
- 报名网络考试了
- 下拉框回显通过<c:if>标签在页面判断
- 47. Spring Boot发送邮件
- 基于python实现一个简单的神经网络
- spfa(模板)
- git 帮助安装
- 考试报名管理
- Androif Edittext
- ubuntu curl 安装
- Android OpenGL ES 2.0 开启了深度测试但是在一定距离还是呈现透明状态
- 第五章 表单的使用
- asp get 值传递 中文出现乱码
- opencv学习笔记(十三)利用cvResize函数调整图片尺寸
- [Leetcode]Leetcode 27:Remove Element
- ubuntu 安装vim失败解决办法