学生系统——C语言课程设计

声明 :

由于我不会单链表,所以我的设计 简单应用了一下结构体数组和指针,绝对适合没有深入了解结构体和指针的朋友。

对您有帮助请点一个赞支持以下~~


 

学生系统要求如下:

  1. 输入记录模块 从键盘逐个输入学生记录。
  2. 查询记录模块 按照学生的学号查询或者按照学生的姓名进行查询;查找最高分和不及格的学生;把满足条件的学生信息显示出来。
  3. 更新记录模块 修改某一个学生的信息,对学生按照学号和成绩就行排序(升序或者降序);求出每个学生的平均成绩。插入一个学生信息;删除一个学生的信息。
  4. 统计记录模块 统计每一门课最高分和不及格人数。
  5. 输出记录模块 显示所有学生的信息。

我写了一个头文件fun.h,两个c文件fun.c,test.c

fun.h包含对我写的函数声明和一些变量声明

fun.c具体写函数功能实现

test.c是游戏的主运行程序

文件名字可以自己随意定义,以上3个文件只要在vs内同一个project内打开就可以运行 

头文件 fun.c

 

#define CHIN 0//stu[].score[0]输入语文成绩
#define MATH 1//stu[].score[1]输入数学成绩
#define ENG  2//stu[].score[2]输入外语成绩

#include<stdio.h>
#include<string.h>
#include<windows.h>//system("cls") 清屏命令   system("pause")输入任意键继续命令
//学生结构体
struct student {
	int id;//学号
	char name[9];//姓名
	int score[3];//成绩数组
}stu;

void Input(struct student stu[100], int Num);//输入学生成绩

void SearchId(struct student stu[100], int Num);//按照学号查找学生
void SearchName(struct student stu[100], int Num);//按照姓名查找学生
void Search_Max_Fall(struct student stu[100], int Num);//查询最高成绩和不及格学生

void Change(struct student stu[100], int Num);//修改学生信息
void Sort(struct student stu[100], int Num);//排序
void SortExchange(struct student stu[100], int Num, int j);//交换结构体数组元素位置
void Average(struct student stu[100], int Num);//求平均成绩
void Search_Max_Sub(struct student stu[100], int Num, int sub);//寻找科目分最高的同学
void Search_Fall_Sub(struct student stu[100], int Num,int sub); //寻找科目挂科的同学
void DeleteId(struct student stu[100], int* Num);//按照学号删除
void DeleteName(struct student stu[100], int* Num);//按照姓名删除
void Insert(struct student stu[100], int* Num);//插入学生信息

void Sum(struct student stu[100], int Num);//同计没课最高分和不及格人数

void Print(struct student stu[100], int Num);//输出所有学生信息

test.c 

#define _CRT_SECURE_NO_WARNINGS 1
#include"fun.h"
//菜单函数
void Menu() {
	printf("--------------------------------------------------\n\n");
	printf("*         您好!欢迎来到学生成绩管理系统!       *\n");
	printf("*                    1.   录入                   *\n");
	printf("*                    2.   查询                   *\n");
	printf("*                    3.   更新                   *\n");
	printf("*                    4.   统计                   *\n");
	printf("*                    5.   输出                   *\n");
	printf("*                    0.   退出                   *\n\n");
	printf("--------------------------------------------------\n");
}
void MenuSearch() {
	printf("--------------------------------------------------\n\n");
	printf("*             1.  按照学号查找                    \n");
	printf("*             2.  按照姓名查找                    \n");
	printf("*             3.  查找最高成绩和不及格学生        \n");
	printf("*             0.  退出                            \n\n");
	printf("--------------------------------------------------\n");
}
void MenuRenew() {
	printf("--------------------------------------------------\n\n");
	printf("*               1.   修改学生信息                *\n");
	printf("*               2.   删除学生信息                *\n");
	printf("*               3.   插入学生信息                *\n");
	printf("*               4.  求学生平均成绩               *\n");
	printf("*               5.       排序                    *\n");
	printf("*               0.       退出                    *\n\n");
	printf("--------------------------------------------------\n");
}
void MenuDeleteMethod() {
	printf("\n--------------------------------------------------\n");
	printf("*      请选择删除方式:                             \n");
	printf("*                    1.  学号                       \n");
	printf("*                    2.  姓名                       \n");
	printf("*                    0.  取消                       \n");
	printf("\n--------------------------------------------------\n");
}
//学生系统主函数
void test() {
	struct student stu[100];
	int Choose = 0;//选择功能
	int Num = 0;//学生总数
	int Search = 0;//查找功能的查找方式
	int Renew = 0;//更新功能选择
	do {
		system("cls");
		Menu();
		printf("\n请输入您想选择的模式:\n");
		scanf("%d", &Choose);
		//五大功能主菜单
		switch (Choose) {
			case 1:
				printf("请输入您想添加的学总人数:\n");
				scanf("%d", &Num);
				system("cls");
				Input(stu,Num);
				break;
			case 2:
				MenuSearch();
				printf("请输入您想查找得方式:\n");
				scanf("%d", &Search);
				switch (Search) {
					case 1:
						system("cls");
						SearchId(stu, Num);
						break;
					case 2:
						system("cls");
						SearchName(stu, Num);
						break;
					case 3:
						system("cls");
						Search_Max_Fall(stu, Num);					
						break;
					case 0:
						break;
					default:
						printf("选择错误!请重新选择!\n");
						break;
				}
				break;
			case 3:
				system("cls");
				MenuRenew();
				printf("请输入您想执行的操作:\n");
				scanf("%d", &Renew);
				switch (Renew) {
					case 1:
						system("cls");
						Change(stu, Num);
						break;
					case 2:
						system("cls");
						int method = 0;
						while (1) {
							MenuDeleteMethod();//
							scanf("%d", &method);
							switch (method) {
							case 1:
								DeleteId(stu, &Num);
								break;
							case 2:
								DeleteName(stu, &Num);
								break;
							case 0:
								goto end;
							default:
								printf("选择不在选项内!请重新选择!\n");
								break;
							}
						}
					end:;
						break;
					case 3:
						Insert(stu,&Num);
						break;
					case 4:
						system("cls");
						Average(stu, Num);
						break;
					case 5:
		
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值