数据结构课程设计—学生成绩管理系统
时间:2025-02-26
时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:如何打造吸引用户的网站
下一篇:营业执照副本-翻译模板