当前位置:首页 » 考试成绩 » 数据结构学生成绩管理系统顺序表

数据结构学生成绩管理系统顺序表

发布时间: 2021-02-13 18:12:11

① 数据结构学生成绩管理系统

这么点分,要求这么高啊~~~~~~~`唉

② C语言数据结构学生成绩管理系统

这个我会,可以帮你写,

③ 数据结构。求程序。学生成绩管理(用顺序表)

#include<stdio.h>
#include<stdlib.h>
#define N 10 //顺序表的最大容量
int length=0; //顺序表的当前元素个数

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 100//线性表存储的空间初始化分配量
#define LISTINCREAMENT 10 //线性表存储空间的分配增量

typedef struct LNode//线性单链表存储结构
{
int data;
struct LNode *next;
}LNode,*LinkList;

int CreatList_L(LinkList&L)//创建一个线性链表
{
L=(LinkList)malloc(sizeof(LNode));//分配一个空间给链表,作为头结点

if(!L) exit(OVERFLOW);
L->next=NULL;
return OK;
}
int DestroyList_L(LinkList &L)//销毁链表
{
if(L) free(L);
return OK;
}
int ListInsert_L(LinkList&L,int i,int e)//再练表的第i个元素前插入一个元素e
{
LinkList p=L;//p指针定位于i-1
LNode *s;
int j=0;
while(p&&j<i-1) {p=p->next;j++;}//定位
if(!p||j>i-1) return ERROR;//如果i<1或大于链表元素个数+1
s=(LNode*)malloc(sizeof(LNode));
if(!s) exit(OVERFLOW);
s->data=e; //完成插入操作
s->next=p->next;
p->next=s;
return OK;
}

int ListDelet_L(LinkList&L,int i,int&e)//删除链表L中的第i个元素,并返回给e;
{
LinkList p=L;
LNode* q;
int j=0;
while(!p&&j<i-1) {p=p->next;j++;}//p指针定位于i-1;
if(!p->next||j>i-1) return ERROR;

e=p->next->data; //完成删除操作
q=p->next;
p->next=p->next->next;
free(q);
return OK;

}

int ListTraverse_L(LinkList L,int n)//链表的遍历
{
int i=0;
if(!L)return ERROR;
L=L->next;
while(L)
{
if(L->data==n)return i;
L=L->next;
i++;
}

return FALSE;
}

int InverseSingleList_L(LinkList &L)
{
if(!L->next||!L->next->next)//如果链表少于2个Node那么链表不需要改变顺序
return OK;
LNode *p,*q;
p=L->next; //第一次因为p是最后一个连接所以把p->next设为空
q=p->next;
p->next=NULL;
p=q;
while(p)
{
q=p->next; //用q去保留p后面一个Node;
p->next=L->next;
L->next=p;
p=q;
}
return OK;
}

int main()
{
int List[N];
LinkList L;

int ch,exit='N';
do
{
system("CLS");
printf("\t\t********************************************\n");
printf("\t\t* 1.创建一个顺序表 .........(1) *\n");
printf("\t\t* 2.在顺序表中查找元表.........(2) *\n");
printf("\t\t* 3.在顺序表中插入元表.........(3) *\n");
printf("\t\t* 4.在顺序表中删除元表.........(4) *\n");
printf("\t\t* 5.退出 .........(5) *\n");
printf("\t\t********************************************\n");
printf("\n请选择操作代码:");
ch=getchar();

switch(ch)
{
case '1':
printf("\n请输入十个元素");
CreatList_L(L);
for(length=0;length<N;length++)
{
scanf("%d",&List[length]);
getchar();
ListInsert_L(L,length+1,List[length]);
}
printf("\n创建成功!");
getchar();
break;
case '2':
scanf("%d",&List[0]);
if(ListTraverse_L(L,List[0]))printf("该元素存在该年表的第%d个位置",ListTraverse_L(L,List[0]));
else printf("不存在该元素");
getchar();
break;
case '3':
scanf("%d%d",&length,&List[0]);
ListInsert_L(L,length,List[0]);
system("pause");
break;
case '4':
scanf("%d",&length);
ListDelet_L(L,length,List[0]);
system("pause");
break;
case '5':
printf("\n您是否真的要退出程序(Y/N):");
getchar();
exit=getchar();
break;
default:
getchar();
printf("\n无效输入,请重新选择...:");
getchar();
break;

}

}while(exit!='y'&&exit!='Y');

}

④ 求学生成绩管理系统的主要数据结构啊。。。

你说的数据结构是指学生成绩管理系统的数据库表么?

⑤ 可以帮我用数据结构(C语言)顺序表编一个学生信息表

#include "stdio.h"#include "stdlib.h"typedef struct chain{ long num; float score; struct chain *next;}jd;jd *create(long *num,float *score,int n){ jd *head=NULL,*p,*q; p=q=(jd *)malloc(sizeof(jd)); p->num=num[0]; p->score=score[0]; head=p; q=p; for (i=1;i<n;i++) { p=(jd *)malloc(sizeof(jd)); p->num=num[i]; p->score=score[i]; p->next=q; q=p; } p->next=NULL; return(head);}main(){ jd *create(long *num,float *score,int n); jd *head; long num[8]={1000,1001,1002,1003,1004,1005,1006,1007}; float score[8]={71.2,78.9,97.5,87.4,79.3,77.5,88.6,90.5}; int n=8; head=(num,score,n);}

⑥ 怎样用C语言中的顺序表编写学生学籍管理系统拜托各位大神

/*给你写好了,实现基本功能 其他自己完善 谢谢!*/ #include "stdio.h" #include "stdlib.h" #include "string.h" #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define MAXLEN 12 typedef int Status; typedef struct { char num[MAXLEN]; char name[MAXLEN]; int socre; /*只写一门先*/ int credit; }ElemType; typedef struct { ElemType *elem; int length; int listsize; }SqList; Status ListInit(SqList *L) { L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!L->elem)exit(OVERFLOW); L->length=0; L->listsize=LIST_INIT_SIZE; return OK; } Status ListInsert(SqList *L,int pos,ElemType e) { /*先不先溢出那种情况了*/ ElemType *p,*q; if(pos<1||pos>L->length+1) return ERROR; p=&L->elem[L->length-1]; q=&L->elem[pos-1]; for(;p>=q;--p) *(p+1)=*p; *q=e; ++L->length; return OK; } void Print(SqList L) { int i; for(i=0;i<L.length;++i) { printf("学号:%s",L.elem[i].num); printf("姓名:%s",L.elem[i].name); printf("成绩:%d",L.elem[i].socre); printf("学分:%d",L.elem[i].credit); printf("\n"); } } void ReadIn(ElemType *e) { printf("输入学号:"); scanf("%s",e->num); printf("输入姓名:"); scanf("%s",e->name); printf("输入成绩:"); scanf("%d",&e->socre); printf("输入学分:"); scanf("%d",&e->credit); } void Sort(SqList *L) { int i,j; ElemType t; for(i=0;i<L->length-1;++i) for(j=0;j<L->length-i-1;++j) if(L->elem[j].socre>L->elem[j+1].socre) { t=L->elem[j]; 1 L->elem[j]=L->elem[j+1]; L->elem[j+1]=t; } } void main() { SqList L; int key,len; ElemType e; ListInit(&L); do{ printf("(1):录入成绩\n"); printf("(2):成绩排序\n"); printf("(3):显示所有成绩\n"); printf("(4):退出\n"); scanf("%d",&key); switch(key) { case 1 :ReadIn(&e); len=L.length; ListInsert(&L,++len,e); break; case 2 :Sort(&L);break; case 3 :Print(L);break; case 4:exit(0); default:printf("Error\n");break; } }while(1); }

⑦ 数据结构实验:运用顺序表或链表,实现对学生成绩的输入、输出、查询、插入、删除、修改、排序等功能

这个问题你可以用易微库表这个工具试下,工具可以在网络软件http://rj..com/中搜索易微库表,使用手册可以在网络文库http://wenku..com/中搜索易微库表,以下是简介
普通人也可以自己设计程序,根据平时处理业务数据时总结的表格、方法、公式等信息,创建一个自己的程序。数据结构自定义、自动计算记录数、自动计算列合计、录入首字母自动显示相应的属性类值、Excel数据处理、数据去重、数据整理、数据统计、数据一维表变成二维表的列转行,数据公式计算、数据首字母检索、数据快速检索、Excel数据导入、Excel数据导出、数据显示排序、查询结果计算百分比、查询结果计算顺序名次、数据查询条件自定义、数据高级筛选、小数据量数据挖掘、自定义显示字段名称等等这些功能都可以通过简单配置后即可实现。如此神奇的事情,赶快创建一个属于自己的库表程序吧。

⑧ C语言 顺序线性表 实现学生成绩管理系统

/***************************头文件*********************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/***************************常量***********************************/
#define MENU_NUM 10
#define N 3
/****************************结构体********************************/
typedef struct s1
{
char no[10] ; //学号由10个字符组成
char name[15] ; //学生姓名
float score[N] ; //各门课成绩
float sum ; //总分
float average ; //平均分
struct s1 *next ; //指向后继结点的指针
}STUDENT; //定义结构体类型
/********************************全局变量*************************/
struct s1 * head=NULL; //链表头结点
/********************************函数声明*************************/
void InputData( STUDENT * ptr ); //录入信息
void PrintMenu( ); //显示菜单
int MenuSelect( ); //选择菜单项
void Init( ); //初始化
void create( ); //创建链表
void print( ) ; //打印链表数据
void Delete( ); //删除指定学号的记录数据
void append(); //追加一个数据到链表尾部
void computer(); //计算链表中所有人的总分和平均分
/***********************************主函数********************************/
void main()
{
int key;
while(1) {
key=MenuSelect();
switch(key)
{
case 1:
Init(); //初试化链表。也就是若链表不为空则释放链表中所有数据,将head置为空(NULL)
break;
case 2:
create(); //创建链表,输入数据
break;
case 3:
Delete(); //删除一个指定学号的记录数据
break;
case 4:
print(); //打印链表中所有数据
break;
case 5:
computer(); //计算链表中所有人的总分和平均分
break;
case 6:
append(); //追加一个数据到链表的尾部
break;
case 7:
Init(); //释放链表
exit(0);
}
}
}
/*****************************************************************
*函数名:PrintMenu
*
*描 述:显示操作菜单*
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void PrintMenu( )
{
int i;
char * menu[]={
"-----------------------------------------------",
"| 基于指针和链表的学生成绩管理系统 |",
"| 1. 初始化链表 |",
"| 2. 创建链表 |",
"| 3. 删除指定学号的记录 |",
"| 4. 打印学生成绩信息 |",
"| 5. 计算学生的总分和平均分 |",
"| 6. 插入一条学生记录 |",
"| 7. 退出 |",
"-----------------------------------------------",
};
printf("\n\n");
for (i=0;i<MENU_NUM;i++)
printf("%s\n",menu[i]);
printf("\n输入要进行的操作(1-7):");
}
/*****************************************************************
*函数名:MenuSelect
*
*描 述:选择菜单选项,返回选择的选项
*
*入口参数:无
*
*出口参数:整型数据
******************************************************************/
int MenuSelect( )
{
int key;
PrintMenu( );
scanf("%d",&key);
return key;
}
/*****************************************************************
*函数名:Init
*
*描 述:初始化单链表。也就是释放链表中的所有数据
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void Init( )
{
STUDENT *p,*ptr; //定义两个临时指针变量p,ptr
p=head;
ptr=head; //将两个临时变量指向头指针head ;
while(ptr!=NULL)
{
ptr=ptr->next; //ptr指向下一个结构数据
free(p); //释放p所指向的结构数据的内存
p=ptr; //将p指向ptr所指向的数据
}
head=NULL; //将head指向NULL
}
/*****************************************************************
*函数名:create
*
*描 述:创建单链表
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void create( )
{
STUDENT *pt, *pth=NULL; //定义两个指针变量:pt指向即将申请新的数据内存,pth指向当前数据
while(1)
{
pt=(STUDENT *)malloc(sizeof(STUDENT)); //让pt指向新申请的内存空间
InputData(pt); //输入数据,存放到pt所指向的结构数据。注意让pt的next指向NULL
if (strcmp(pt->no,"@")==0)
{
free(pt); //释放pt所指向的内存空间
break; //退出循环
}
else if (head==NULL)
{
pth=pt;
head=pt; //将头指针head和pth指向pt
}
else
{
pth->next=pt; //将pth的next指向pt;
pth=pt; //将pth指向pt;
}
}
}
/*****************************************************************
*函数名:print
*
*描 述:打印单链表中所有数据
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void print( )
{
int i=0;
STUDENT *p; //第一个指针p
p=head; //将p指向head
printf("\n");
printf("******************************STUDENT******************************\n");
printf("|rec| 学号 | 姓名 | 成绩1| 成绩2| 成绩3|总成绩| 平均成绩|\n");
printf("|---|----------|------------|------|------|------|------|---------|\n");
//打印表头
while (p!=NULL)
{
printf("|%3d|%10s|%-12s|%6.1f|%6.1f|%6.1f|%6.2f|%9.1f|\n",
++i,p->no,p->name,p->score[0],p->score[1],p->score[2],
p->sum,p->average); //打印p所指向的结构中的所有数据。注意打印数据间的分隔线
p=p->next; //将p指向p的下一个结构数据
}
printf("********************************END********************************\n");
//打印表尾
}
/*****************************************************************
*函数名:Delete
*
*描 述:删除指定学号的记录
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void Delete( )
{
STUDENT *p,*pth; //定义两个指针p,pth
char no[11]; //定义一个整数no(用来存储输入的学号)
printf("输入要删除学生的学号:");
scanf("%s",no); //用输入语句输入一个学号存储到no中
p=head;pth=head; //将p和pth都指向头指针
if (strcmp(p->no,no)==0) //也就是若头指针指向的数据需要删除
{
head=head->next; //将head指针指向head的下一个数据;
free(p); //释放p所指向的数据
}
else
{
p=p->next; //将p指向p的下一个数据
while ( p!=NULL)
{
if (strcmp(p->no,no)==0) //找到了要删除的数据
{
pth->next=p->next; //将pth的next指向p的next
free(p); //释放p
break; //退出循环
}
else
{
pth=pth->next; //将pth指向pth的next 或 将pth指向p
p=p->next; //将p指向p的next
}
}
}
}
/*****************************************************************
*函数名:append
*
*描 述:增加学生记录
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void append()
{
STUDENT *p,*pth; //定义两个指针变量p,pth
pth=head; //将pth指向head
while ( pth->next!=NULL)
{
pth=pth->next; //ptr指向ptr的next
}
p=(STUDENT *)malloc(sizeof(STUDENT)); //将p指向新申请的内存空间
InputData(p);
p->next=NULL; //数据数据存储到p所指向的内存空间,注意将p的next置为NULL
pth->next=p; //将ptr的next指向p
}
/*****************************************************************
*函数名:InputData
*
*描 述:输入学生信息
*
*入口参数:指针
*
*出口参数:无
******************************************************************/
void InputData( STUDENT *ptr )
{
int i;
printf("输入学号:");
scanf("%s",ptr->no);
if (strcmp(ptr->no,"@")==0 )
return;
printf("输入姓名:");
scanf("%s",ptr->name);
for(i=0;i<3;i++)
{
printf("输入成绩:");
scanf("%f",&ptr->score[i]);
}
ptr->sum=0;
ptr->average=0;
ptr->next=NULL; //不要忘记这一步
}
/*****************************************************************
*函数名:computer
*
*描 述:计算学生总成绩和平均成绩
*
*入口参数:无
*
*出口参数:无
******************************************************************/
void computer()
{
STUDENT *p;
p=head;
for(;p;p=p->next)
{
p->sum=p->score[0]+p->score[1]+p->score[2];
p->average=(p->score[0]+p->score[1]+p->score[2])/3;
}
}

⑨ 问下关于数据结构顺序表 写的学生管理小程序

建议将头文件和其实现分开。而且你的头文件不标准

下面是我的~

student.h

#ifndef _STUDENT_H_
#define _STUDENT_H_
#define MAXlength 50
typedef struct{
int data[MAXlength];
int length;
}LinerLink;
extern void InsertLink(LinerLink *line, int temp, int position);
extern void PrintLink(LinerLink *line);
extern void FindLink(LinerLink *line, int x);
extern void DeleteLink(LinerLink *line, int position);
#endif

student_1.cpp //实现头文件的功能

#include "student.h"
#include <stdio.h>
void InsertLink(LinerLink *line, int temp, int position)
{
int i=line->length;
if(position>line->length)
printf("输入错误,位置过大 ");
else
{
for(;position<i;i--)
{
line->data[i]=line->data[i-1];
}
line->length++;
line->data[position]=temp;
}
}
/*输出元素操作*/
void PrintLink(LinerLink *line)
{
for(int i=0; i<line->length; i++)
{
printf("data%d=%d",i,line->data[i]);
printf(" ");
}
}
/*查找输入找到的第一个元素操作*/
void FindLink(LinerLink *line, int x)
{
for(int i=0; i<line->length; i++)
{
if(x==line->data[i])
{
printf("找到元素,在第%d位置~ ",i+1);
break;
}
}
}
/*删除找到的第一个元素操作*/
void DeleteLink(LinerLink *line, int position)
{
if(position>line->length)
printf("输入错误,位置过大 ");
else
{
for(;position<line->length;position++)
{
line->data[position-1]=line->data[position];
}
line->length--;
}
}
热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919