用C语言写一个简易的学生管理系统

用c语言写一个简易的学生管理系统

首先我们创建一个头文件student.h
在其中写入两个结构体,一个是学生的信息,一个是班级的信息,其次声明你所需要的功能(此处我只声明了比较基本的几个功能,可自行添加)

注:函数声明时形参名称可以不加,但是类型必须加

#ifndef __STUDENT_H__
#define __STUDENT_H__
#define MAX 40
typedef struct
{
	int id;
	char name[20];
    int age;
	float score;
}student_t;
typedef struct
{
	int num;
	student_t student[MAX];
}class_t;
enum{ ADD=1,DEL,SHOW,SEL,SORT,QUIT};
int add_student(class_t *cls);
int show_student(class_t *a);
int del_student(class_t *a);
int paixu(class_t *cls);
int sel(class_t *cls);
#endif
代码片

然后你需要把你的功能进行实现
创建一个.c文件,向其中写入:

#include<stdio.h>
#include"student.h"
#include<string.h>
int add_student(class_t *cls)
{
	int ret;
	cls->num++;
	if(cls->num>MAX)
	{
		cls->num--;
		puts("...人数已满,自动退出...");
        return -1;
	}
again:
	puts("@@@请输入:@@@");
    puts("学号 姓名 年龄 分数\n");
	ret=scanf("%d%s%d%f",&cls->student[cls->num].id,
			cls->student[cls->num].name,
			&cls->student[cls->num].age,
			&cls->student[cls->num].score);
	if(ret!=4)
	{
		puts("..输入错误,请重新输入..");
		goto again;
	}
	puts("..添加成功..");
	return 0;
}
int show_student(class_t *a)
{
	int i;
	printf("学生信息如下:\n");
	if(a->num==-1)
	{
		puts("...当前无学生信息...");
		return 0;
	}
		printf("学号 姓名 年龄 成绩\n");
	 for(i=0;i<=a->num;i++)
	 {

		 printf("%d %s %d %.1f\n",a->student[i].id,
				 a->student[i].name,
				 a->student[i].age,
				 a->student[i].score);
     }
	 return -1;
}
int del_student(class_t *a)
{
	char b[20];
	printf("输入你所想删除人的姓名:\n");
		scanf("%s",b);
	    while(getchar() !='\n');
	int i,j=0,flag;
	for(i=0;i<=a->num;i++)
	{
		flag=0;
		if(strcmp(a->student[i].name,b)==0)//strcmp 如果相等,返回0
		{
			a->student[j++] = a->student[i];
			flag=1;
			a->num--;
		}
	}
	if(flag==0)puts("无此人");
	else puts("删除完毕");
	return 0;
}
void stu_swap(class_t *cls,int j);
int paixu(class_t *cls)
{
	printf("未排序前默认为输入时顺序\n");
	int i,j,flag;
	for(i=0;i<=cls->num-1;i++)
	{
		flag=0;
		for(j=0;j<=cls->num-i-1;j++)
		{

			if(cls->student[j].score<cls->student[j+1].score)
				stu_swap(cls,j);
			flag=1;
		}
		if(flag==0)
		{
			printf("排序完毕,自动返回选择界面\n");
			break;
		}

	}
	return 0;
}
int sel(class_t *cls)
{
	puts("请输入您想要查询的学生姓名>");
	char a[15]={0};
	scanf("%s",a);
	while(getchar() !='\n');
	int i,flag=0;
	for(i=0;i<=cls->num;i++)
	{
		if(strcmp(cls->student[i].name,a)==0)
		{
			printf("学号:%d 姓名:%s 年龄:%d 分数:%.1f",cls->student[i].id,
					cls->student[i].name,
					cls->student[i].age,
					cls->student[i].score);
			flag=1;
		}
	}
	if(flag==0)puts("...查无此人...");
	return 0;
}
void stu_swap(class_t *cls,int j)
{
    student_t *new=NULL;
    new=cls->student[j];
    cls->student[j]=cls->student[j+1];
    cls->student[j+1]=new;
}

功能函数写完后,就要要写主函数了

#include <stdio.h>
#include "student.h"
#include <stdlib.h>

int main(int argc, const char *argv[])
{
	int chose;
	class_t *cls = NULL;

	cls = (class_t *)malloc(sizeof(class_t));
	if(cls == NULL)
	{
		printf("malloc error\n");
		return -1;
	}
	
//	cls->n = 0;
	cls->num = -1;

	while(1)
	{
		puts("\n\n\n==========================================");
		puts("==1.ADD 2.DEL 3.SHOW 4.SEL 5.SORT 6.QUIT==");
		puts("==========================================");
	
		printf("please input your chose>:\n");
		scanf("%d",&chose);
		getchar();
		switch(chose)
		{
			case ADD:system("clear");
				add_student(cls);
				break;
			case DEL:system("clear");
                del_student(cls);
				break;
			case SHOW:system("clear");
				show_student(cls);
				break;
			case SEL:system("clear");
                sel(cls);
				break;
			case SORT:system("clear");
				paixu(cls);
				break;
			case QUIT:system("clear");
				goto OUT;
				break;
			default:system("clear");
				printf("input error,try again\n");
				continue;
		}	
	}

OUT:
	printf("quit system..\n");
	if(cls != NULL)
	{
		free(cls);
		cls = NULL;
	}
 
	return 0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
纯C语言学生成绩管理系统(以包含文件的形式的),结构体,链表,数组,以下是main.c #include #include #include #define m 3/*宏定义m的值为3*/ struct node/*链表初始化*/ { char name[20]; int no; float score[m]; float sum; float avg; struct node *next; }; char ch[m+4][20]={{"学号"},{"姓名"},{"语文"},{"数学"},{"英语"},{"总分"},{"平均分"}};/*定义并初始化一个全局二维字符数组*/ #include "save.c"/*包含保存文件*/ #include "read.c"/*包含读取文件*/ #include "output.c"/*包含打印文件*/ #include "set.c"/*包含录入文件*/ #include "demand.c"/*包含查询文件*/ #include "sort.c"/*包含排序文件*/ #include "modified.c"/*包含修改文件*/ #include "add.c"/*包含添加文件*/ #include "del.c"/*包含删除文件*/ void main() { int n; printf("\n\t\t\t欢迎使用学生成绩管理系统\n\n"); printf("\t\t\t\t\t\t制 作: XIA XIA\n"); do { printf("\n\n1:学生成绩录入,并保存\n"); printf("2:学生成绩查询\n"); printf("3:学生成绩的排序\n"); printf("4:学生成绩的修改\n"); printf("5:学生成绩的打印\n"); printf("6:学生信息的添加\n"); printf("7:学生信息的删除\n"); printf("0:退出学生成绩管理系统\n\n\n"); printf("输入你要执行操作的相应序号\n"); scanf("%d",&n);/*输入相就的操作的序号*/ switch (n) { case 1: set();break;/*调用录入函数*/ case 2: demand();break;/*调用查询函数*/ case 3: sort();break;/*调用排序函数*/ case 4: modified();break;/*调用修改函数*/ case 5: output();break;/*调用打印函数*/ case 6: add();break;/*调用添加函数*/ case 7: del();break;/*调用删除函数*/ case 0: printf("正在退出学生成绩管理系统......\n");exit(0);/*直到输入“0”退出学生成绩管理系统*/ default:printf("输入错误码,请重新输入\n"); } }while(1); }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

reloadEarth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值