C语言期末课设:从头开始设计一个简单的学生成绩管理系统

C语言期末大作业,课程设计
摘要由CSDN通过智能技术生成

整个可以运行的源代码在文章最后!!!

        首先我们先创建一个结构体,用来抽象一个学生的信息,包含该学生的学号姓名成绩(这里我们为了程序简单,只包含了一个成绩。也可以自行添加,其他成绩信息,以及性别,年龄等等)

typedef struct 
{
	int id; //学号
	char name[20]; //姓名
	double score; //成绩
}st, * pst;

        接着我们考虑设计学生成绩管理系统的菜单,以及菜单的选择功能。

        大概可以列出入上图几个功能,然后菜单界面大致可以参考上图(图中的三,五是当时我根据自己课设要求编写的,可以不看)

        然后我们可以写出下面的代码

void menu(pst S, PNode * node)
{
	int a;

	//显示菜单
	printf("**************学生成绩查询系统***************\n");
	printf("****************1.录入信息*******************\n");
	printf("*************2.显示所有学生信息**************\n");
	printf("***********3.按学号排序后折半查找************\n");
	printf("*****************4.保存信息******************\n");
	printf("************5.构建二叉排序树查找*************\n");
	printf("*************6.按学号删除信息****************\n");
	printf("**************7.清空所有信息*****************\n");
	printf("*****************0.退出系统******************\n");

	printf("请输入您需要操作的对应序号:");
	scanf("%d", &a);

	//选择功能
	switch (a)
	{
		case 1: add(S); break;

		case 2: display(S); break;

		case 3: lookfor(S);  break;

		case 4: save(S); printf("保存成功!\n"); break;
		
		case 5: create(node, S); break;

		case 6: del(S); break;

		case 7: delall(S); break;

		case 0: quit(S); break;
	
		default: printf("输入错误!请重新输入!\n"); break;
	}

}

        函数中的参数可以暂时不看,函数的定义都在后面。

        顺便把函数声明也全写了。

void add(st * S); //添加信息
void display(pst S); //显示学生信息
void save(st * S); //保存文件
void read(st * S); //读取文件
void menu(pst S, PNode * node); //菜单目录
void quit(pst S); //退出程序
void inseart(PNode * root,st key); //二叉排序树插入
void create(PNode* root, pst keyArray); //创建二叉排序树
PNode search(PNode root, int id); //二叉排序树搜索(递归)
int find(pst a,int val); //折半查找
void sort(pst a); //插入排序
void lookfor(pst a); //折半查找功能函数
void del(pst S); //删除
void delall(pst S); //清空

        然后我们开始写主函数里面的东西,首先我们可以先创建一个结构体数组,用来操作(增删改查排序)信息以及临时保存信息(后面我们要将其写入文本文件中保存)。然后在把menu()函数在主函数里调用。

int main(void)
{
	st S[MAXSIZE]; //这里的MAXSIZE, 我用的是宏定义(100),相当于数字100
	//PNode  node = NULL;

	//读取文件
	//read(S);
	
	//显示菜单
	while (1)
	{
		menu(S, &node);
        
        //按任意键继续
		system("pause");
        
        //清屏
        system("cls");
	}
	
	return 0;
}

        上面的代码中,注释掉的可以暂时不看。首先创建了结构体数组,至于后面将menu()函数在while()循环中调用,是为了菜单可以一直显示,其他提示信息没用时可以利用清屏,清除。

        接着我们实现录入信息的功能函数。在录入中,为了防止输入多个一样的学号,我们进行的判断。详细见如下代码。

  • 13
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值