数据结构课程设计—学生成绩管理系统

时间:2025-02-26

//#include <windows.h>
#include <malloc.h> //包含malloc()等函数
#include "stdafx.h"
#include <stdlib.h>
#include<string.h>
#include <stdio.h> //包含printf()函数
typedef struct Students
{
char Class[20];
int Number;
char Name[20];
char Sex[20];
char Major[20];
float Score;
}Students;
typedef Students DataType; // 定义DataType为任意类型时 一定要在DataType出现之前

typedef struct Node
{
DataType data;
struct Node *next;
}SLNode;

void ListInitiate(SLNode **head) //初始化
{
*head = (SLNode *)malloc(sizeof(SLNode)); //申请头结点,由head指示其地址
//(*head)->next=NULL; //置结束标记NULL
(*head)->next=*head; //置结束标记到head,即循环链表了
}

int ListLength(SLNode *head) //求当前数据元素个数
{
SLNode *p=head; //p指向头结点
int size=0; //size初始化为0
//while(p->next!=NULL) //循环计数
while(p->next!=head) //循环计数
{
p=p->next;
size++;
}
return size;
}
int ListInsert(SLNode *head,int i,DataType x)
//在带头结点的单链表head的第i(0<=i<=size)个结点前
//插入一个存放数据元素x的结点。插入成功则返回1;失败则返回0
{
SLNode *p,*q;
int j;
p=head;
j=-1;
//while(p->next!=NULL&&j<i-1) //最终让指针p指第i-1个结点
while(p->next!=head&&j<i-1)
{
p=p->next;
j++;
}
if(j!=i-1)
{
printf("插入位置参数错误!");
return 0;
}
q=(SLNode *)malloc(sizeof(SLNode)); //生成新的结点
q->data=x; //新结点数据域赋值
q->next=p->next; //插入步骤1
p->next=q; //插入步骤2
return 1;
}
void input(DataType *x)
{
//char ch;
//int j;
//do
//{
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n");
printf(" 请依次输入班级、学号、姓名、性别、专业、成绩\n\n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
printf("(⊙_⊙)?班级:");
scanf("%s",&x->Class);
printf("(⊙_⊙)?学号:");
scanf("%d",&x->Number);
printf("(⊙_⊙)?姓名:");
scanf("%s",&x->Name);
printf("(⊙_⊙)?性别:");
scanf("%s",&x->Sex);
printf("(⊙_⊙)?专业:");
scanf("%s",&x->Major);
printf("(⊙_⊙)?成绩:");
scanf("%lf",&x->Score);
/*
printf("(⊙_⊙)?是否保存该学生信息:1、是 ;0、否\n");
scanf("%d",&j);
if(j==1)
return x;
else
return 0;*/
//}while(getchar(ch)!=NULL);
}

/*void insertface()
{
printf(" .&______~*@*~______&. * \n");
printf(" /%%%%%%%%%%%%%%%%%%%\ *** \n");
printf(" `Y""Y"&quo
t;Y"""""Y""Y""Y' ***** \n");
printf(" __/M__ p-p_|__|__|_____|__

|__|_q-q **Y** \n");
printf(" ____|O_^_O|_________[EEEEM==M==MM===MM==M==MEEEE]-__....|.... \n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n");
printf(" 请依次输入班级、学号、姓名、性别、专业、成绩\n\n");


}*/
void listshow(DataType x)
{
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
printf(" ○ Оοo ╭ ﹌╮╭ ∽╮ oοО○ \n");
printf(" (*o.o*)(*o.o*) \n");
printf(" (~~﹊︸ ̄︸ ̄︸) \n");
printf(" 班级:%s \n",x.Class);
printf(" 学号:%d \n",x.Number);
printf(" 姓名:%s \n",http://);
printf(" 性别:%s \n",x.Sex);
printf(" 专业:%s \n",x.Major);
printf(" 成绩:%lf \n",x.Score);
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
}
int ListDelete(SLNode *head,int i,DataType *x)
//删除带头结点单链表head的第i(0<=i<=size-1)个结点
//被删除结点的数据域值由x带回。删除成功返回1,失败则返回0
{
SLNode *p,*s;
int j;
p=head;
j=-1;
//while(p->next!=NULL&&p->next->next!= NULL &&j<i-1)
//循环结束时指针p指向第i-1个结点
while(p->next != head && p->next->next !=head && j<i-1)
{
p=p->next;
j++;
}
if(j!=i-1)
{
printf("删除位置参数错!");
return 0;
}
s=p->next; //指针s指向a结点
*x=s->data; //把 指针s所指结点的数据域值 赋予x
p->next=p->next->next; //删除
free(s); //释放指针s所指结点 的内存空间
return 1;
}


int ListGet(SLNode *head,int i,DataType *x) //取数据元素
{ …… 此处隐藏:7735字,全部文档内容请下载后查看。喜欢就下载吧 ……

数据结构课程设计—学生成绩管理系统.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219