/*===============================================
* 文件名称:学生管理系统
* 创 建 者:
* 创建日期:2022年12月28日
* 描 述:
================================================*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 100
typedef struct STU
{
char xuehao[20];
char name[20];
float score;
}stu_t;
typedef stu_t data_t;
typedef struct list
{
data_t data[SIZE];
int last;
}seqlist;
//初始化
seqlist *seqlistCreate()
{
seqlist *seq = (seqlist *)malloc(sizeof(data_t)*SIZE);
if(seq == NULL)
perror("malloc");
bzero(seq->data,sizeof(data_t)*SIZE);
seq->last = -1;
return seq;
}
//判空
int seqlist_is_empty(seqlist *seq)
{
return (seq->last == -1)?1:0;
}
//判满
int seqlist_is_full(seqlist *seq)
{
return (seq->last == SIZE-1)?1:0;
}
//求表长
int seqlistLength(seqlist *seq)
{
return seq->last+1;
}
//插入
int seqlistInsert(seqlist *seq)
{
if(seqlist_is_full(seq))
{
puts("表已满");
return -1;
}
char x_h[20] = {0};
char m_z[20] = {0};
float f_s = 0;
scanf("%s",x_h);
getchar();
scanf("%s",m_z);
scanf("%f",&f_s);
seq->last++;
strcpy(seq->data[seq->last].xuehao,x_h);
strcpy(seq->data[seq->last].name,m_z);
seq->data[seq->last].score = f_s;
}
//打印
void seqlistDisplay(seqlist *seq)
{
if(seqlist_is_empty(seq))
{
puts("列表为空");
return;
}
for(int i = 0;i <= seq->last;i++)
{
printf("%s %s %f\n",seq->data[i].xuehao,seq->data[i].name,seq->data[i].score);
}
}
//按名字修改分数
int seqlistChangeByName(seqlist *seq)
{
char m_z[20] = {0};
float f_s = 0;
scanf("%s%f",m_z,&f_s);
for(int i = 0;i <= seq->last;i++)
{
if(strcmp(seq->data[i].name,m_z) == 0)
{
seq->data[i].score = f_s;
return 0;
}
}
puts("没有这个人");
return -1;
}
//按名字删除信息
void seqlistDeleteByName(seqlist *seq)
{
char m_z[20] = {0};
scanf("%s",m_z);
if(seqlist_is_empty(seq))
return;
for(int i = 0;i <= seq->last;i++)
{
if(strcmp(seq->data[i].name,m_z) == 0)
{
for(int j = i;j <= seq->last;j++)
{
seq->data[j] = seq->data[j+1];
}
}
}
seq->last--;
}
//按名字查看信息
int seqlistShowByName(seqlist *seq)
{
char m_z[20] = {0};
scanf("%s",m_z);
for(int i = 0;i <= seq->last;i++)
{
if(strcmp(seq->data[i].name,m_z) == 0)
{
printf("%s %s %f\n",seq->data[i].xuehao,seq->data[i].name,seq->data[i].score);
return 0;
}
}
puts("没有这个人");
return -1;
}
//清空
void seqlistClear(seqlist *seq)
{
seq->last = -1;
}
//销毁
void seqlistDestroy(seqlist **seq)
{
free(*seq);
*seq = NULL;
}
//管理界面
void home_page()
{
printf("/*********************/\n");
puts("欢迎使用学生管路系统");
puts("请根据提示完成相关操作");
puts("1.添加学生信息 2.打印全部学生信息 3.根据名字删除信息 4.根据名字修改信息");
puts("5.根据名字显示信息 6.清空表 7.销毁表 0.退出系统");
puts("");
printf("请输入指令:");
puts("/*********************/");
}
int main(int argc, char *argv[])
{
seqlist *seq = seqlistCreate();
if(seq == NULL)
perror("seqlistCreat");
int m = 0;
while(1)
{
home_page();
scanf("%d",&m);
switch(m)
{
case 1:seqlistInsert(seq);system("clear");break;
case 2:seqlistDisplay(seq);break;
case 3:seqlistDeleteByName(seq);system("clear");break;
case 4:seqlistChangeByName(seq);system("clear");break;
case 5:seqlistShowByName(seq);break;
case 6:seqlistClear(seq);system("clear");break;
case 7:seqlistDestroy(&seq);break;
case 0:return 0;
default:break;
}
}
#if 0
int i = 0;
while(i < 2)
{
seqlistInsert(seq);
i++;
}
seqlistDisplay(seq);
seqlistChangeByName(seq);
seqlistDisplay(seq);
seqlistClear(seq);
seqlistDisplay(seq);
#endif
return 0;
}
学生管理系统
最新推荐文章于 2024-08-22 17:27:46 发布
该程序是一个用C语言编写的简单学生管理系统,包括初始化、判断列表是否为空/满、插入学生信息、打印所有信息、按姓名修改/删除/显示信息、清空及销毁表等操作。用户通过命令行交互进行管理。
摘要由CSDN通过智能技术生成