考试报名管理系统
来源:互联网 发布:centos 6.8 snmp 编辑:程序博客网 时间:2024/04/27 22:25
/*********************************************************** * 版权所有 (C)2017,考试报名管理系统 * * 文件名称: main.cpp * 文件标识:main * 内容摘要:函数文件 * 其它说明:主函数 * 当前版本: V3.0 * 作 者:宋昊 * 完成日期: 2017.12.21 * * 修改记录1: * 修改日期 :2017.12.20 * 版本号: V1.0 * 修改人: 宋昊 * 修改内容:修复统计信息Bug* * 修改记录2: * 修改日期 :2017.12.21 * 版本号: V2.0 * 修改人: * 修改内容:修复修改信息Bug * **********************************************************/
#ifndef ST_H_INCLUDED#define ST_H_INCLUDEDtypedef struct student{ int num; char sex[10]; char name[10]; char address[10]; int type;}ElemType;typedef struct LNode{ ElemType data; struct LNode *next;} LinkList;void InitList(LinkList *&L); //初始化线性表void DestroyList(LinkList *&L); //销毁线性表void CreateListR(LinkList *&L); //采用尾插法创建链表void DispList(LinkList *L); //输出链表int LocateElem(LinkList *L); //查找信息int ListDelete(LinkList *&L); //删除信息int create(LinkList *&L); //修改信息void sort(LinkList *&L); //排序信息void sumList(LinkList *&L); //统计信息void Insterlist(LinkList *L); //插入信息void display(); //菜单名void Display(LinkList *L); //菜单对应的操作#endif // ST_H_INCLUDED
#include <stdio.h>#include <string.h>#include <malloc.h>#include <stdlib.h>#include <iostream>#include "st.h"using namespace std;ElemType e;/************************************************************ 功能描述:初始化线性表 建立一个空的单链表,创建一个头结点* 输入参数:L* 输出参数:无* 返回值 :无* 其它说明:无************************************************************/void InitList(LinkList *&L){ L=(LinkList *)malloc(sizeof(LinkList)); L->next=NULL;}/************************************************************ 功能描述:销毁线性表,释放单链表L占用的内存空间,即逐一释放全部节点的空间* 输入参数:L* 输出参数:空链表* 返回值 :无* 其它说明:无************************************************************/void DestroyList(LinkList *&L){ LinkList *p=L,*q=p->next; while (q!=NULL) { free(p); p=q; q=p->next; } free(p); L->next=NULL; printf("释放空间成功!\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("输入考号(不能相同) 姓名 性别 院系 年龄 科目\n"); for (i=0;i<n;i++) //使用for循环将新结点逐次插入链表之后(条件是int i<n)</span> { s=(LinkList *)malloc(sizeof(LinkList)); scanf("%d %s %s %s %d",&s->data.num,&s->data.name,&s->data.sex,&s->data.address,&s->data.type); r->next=s; r=s; } r->next=NULL; //将尾结点指向null } /************************************************************ 功能描述:输出信息* 输入参数:考号* 输出参数:考生信息* 返回值 :无* 其它说明:无************************************************************/void DispList(LinkList *L){ LinkList *p=L->next; //定义LinkList *p 指向第一个元素结点</span> while (p!=NULL) //用while循环逐次输出链表元素(条件是p!=null)</span> { printf("考号(不能相同) 姓名 性别 院系 科目\n"); printf("%d %s %s %s %d\n",p->data.num,p->data.name,p->data.sex,p->data.address,p->data.type); p=p->next; } printf("\n");}/************************************************************ 功能描述:查找信息* 输入参数:要查找的考号i* 输出参数:信息* 返回值 :1* 其它说明:无************************************************************/int LocateElem(LinkList *L) //定义ElemType e 作为查找考号的对象</span>{ printf("请输入要查找的考号i="); scanf("%d",&e.num); LinkList *p=L->next; //定义LinkList *p 指向第一个元素结点</span> while (p!=NULL && p->data.num!=e.num ) //用while循环查找要查找的结点(条件是p!=NULL && p->data.num!=e.num)</span> { 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.type); return 1;}}/************************************************************ 功能描述:删除信息* 输入参数:要删除的考号i* 输出参数:输出删除以后的全部信息* 返回值 :1* 其它说明:无************************************************************/int ListDelete(LinkList *&L) //定义ElemType e 作为删除考号的对象{ printf("请输入要删除的考号i="); scanf("%d",&e.num); LinkList *p=L,*q; //定义LinkList *p 指向头结点 定义LinkList *q 作为存储删除结点的变量</span> while (e.num!=p->next->data.num &&p!=NULL) // 用while循环查找该结点,并且用free(q)清空该结点</span> { 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; }}/************************************************************ 功能描述:修改信息* 输入参数:要修改的考号i* 输出参数:输出修改以后的全部信息* 返回值 :1* 其它说明:无************************************************************/int create(LinkList *&L) //定义ElemType i 作为修改考号的对象</span>{ printf("请输入要修改人的考号i="); scanf("%d",&e.num); LinkList *p=L; //定义LinkList *p 指向头结点</span> while (e.num!=p->data.num&&p->next!=NULL) //用while循环查找该结点</span> { p=p->next; } if (e.num!=p->data.num) { printf("不存在此考号\n\n"); DispList(L); } else { printf("请输入考号\n"); scanf("%d",&e.num); if(p->data.num==e.num) { printf("允许修改,请输入:姓名 性别 院系 科目\n"); scanf("%s %s %s %d",&p->data.name,&p->data.sex,&p->data.address,&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; while(p->next!=NULL) //用while循环和if语句统计人数</span> { n++; p=p->next;} printf("报考的总人数是n="); printf("%d\n",n);}/************************************************************ 功能描述:插入信息* 输入参数:要插入的人数n* 输出参数:无* 返回值 :无* 其它说明:无************************************************************/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("输入考号(不能相同) 姓名 性别 院系 科目 \n"); while(p->next!=NULL) //用while循环找到尾结点,插入新元素</span> p=p->next; for (i=0;i<n;i++) { s=(LinkList *)malloc(sizeof(LinkList)); scanf("%d %s %s %s %d",&s->data.num,&s->data.name,&s->data.sex,&s->data.address,&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; exit(0); } }}}
#include <stdio.h>#include "st.h" int main(){LinkList *L; //定义LinkList *L</span> InitList(L); //调用初始化线性表函数</span> Display(L); //调用显示菜单函数</span> return 0;}
输入信息
排序信息
修改信息
统计信息
查找信息
删除信息
插入信息
释放空间
退出程序
阅读全文
0 0
- 考试报名管理系统
- 考试报名管理系统
- 考试报名管理系统
- 课程设计--考试报名管理系统
- 考试报名管理系统课程设计
- 数据结构课程设计【考试报名管理系统】
- 数据结构课程设计—考试报名管理系统
- 全国英语等级考试报名管理系统
- 考试报名管理
- 考试报名管理
- 考试报名管理
- 考试报名系统
- 考试报名系统
- 数据结构课程设计——考试报名管理系统
- 数据结构课程设计--考试报名管理
- 2008年国家公务员考试网络报名系统
- 自定义选项的招生报名系统,考试报名系统,比赛报名系统,培训报名系统,登记系统
- 报名管理系统思想总结
- 总结
- 什么是SAAS模式网站?
- 微信公众号curl: (60) SSL certificate problem: unable to get local issuer certificate 错误
- mac 播放器MPV 下载地址
- 实现Comparable接口不严谨导致Comparison method violates its general contract!
- 考试报名管理系统
- 微信小程序---tab切换
- Nginx中如何限制某个IP同一时间段的访问次数
- ION——GNSS软件接收机元数据标准
- Adobe Acrobat Pro DC 2018 for Mac永久激活版(含破解补丁免序列号) v2018.009.20050中文破解版
- innerHtml动态生成button并绑定事件
- 安装配置Samba服务器
- 微农链能否带动整个行业呢?
- okhttp源码解析(一)