精华内容
下载资源
问答
  • 学生管理系统,实现插入删除等功能,界面化设计,很好的实现了管理的功能,评价较高
  • 学生成绩管理系统功能设计

    千次阅读 2016-09-27 16:54:55
     1)用户从键盘输入每个学生的信息:学号,姓名,班级,数学、英语、语文成绩等。  2)可插入一个或多个学生信息到当前编辑的班级数据中。 (2)文件保存功能  1)将学生信息存为一个数据文件,数据文件可在...

    1学生信息添加功能
        1)用户从键盘输入每个学生的信息:学号姓名,班级,数学、英语、语文成绩
        2)可插入一个或多个学生信息到当前编辑的班级数据中。

    2)文件保存功能
        1学生信息存为一个数据文件,数据文件可在程序中打开、编辑和重新保存
        2)用户输入学生信息可随时保存数据文件。
    3)查询功能
        1)浏览所有学生信息;
        2)按学号查询学生信息;
        3)按姓名查询学生信息;
        4) 查询一个班的学生信息;

    4)排序功能

    1)按数学成绩排序;

    2)按英语成绩排序;

    3)按语文成绩排序;

    5主菜单返回功能

    每执行一个功能就返回主菜单。

    (6)修改、删除信息功能

        可以修改、删除学生信息

     注:以上功能以菜单形式供用户使用,并有一定的容错功能。

    展开全文
  • C语言开发简单的学生成绩管理系统(附源码)

    万次阅读 多人点赞 2019-04-15 21:08:22
    学生成绩管理系统 开发语言:C语言 开发工具:Visual Studio 2019 开发时间:2019.4.14 开发者:summer @一、系统使用展示 @二、系统功能 @三、菜单 @四、录入学生信息 @五、打印学生信息 @六、保存学生信息 @七、...

    学生成绩管理系统

    开发语言:C语言
    开发工具:Visual Studio 2019
    开发时间:2019.4.14
    开发者:summer

    商业合作可淘宝搜索店铺“程序员夏天的小店”

    @一、系统使用展示

    @二、系统功能

    @三、菜单

    @四、录入学生信息

    @五、打印学生信息

    @六、保存学生信息

    @七、读取学生信息

    @八、统计所有学生人数

    @九、查找学生信息

    @十、修改学生信息

    @十一、删除学生信息

    @十二、退出系统

    @十三、出错

    一、系统使用展示

    Alt

    二、系统功能

    1. 系统功能介绍
    1.录入学生信息:用户可以自由输入学生信息到系统中。
    2.打印学生信息:格式化展示系统中的学生信息。
    3.保存学生信息:将系统中的学生信息保存到本地文档。
    4.读取学生信息:读取本地文档中的学生信息并显示。
    5.统计所有学生人数
    6.查找学生信息:根据用户给定的信息(学号)在系统中查找该学生的信息
    7.修改学生信息
    8.删除学生信息
    0.退出系统
    
    1. 系统main函数,while循环在外,系统程序能够持续运行,switch判断语句进行功能选择与函数切换。
    int main() {
    	while (1)
    	{
    		//打印菜单
    		Menu();
    		//读取一个字符 整数,字符在内存中映射为ASCII码
    		char ch = _getch();
    
    		switch (ch)
    		{
    		case '1'://1.录入学生信息
    			InputStudent();
    			break;
    		case '2'://2.打印学生信息
    			PrintStudent();
    			break;
    		case '3'://3.保存学生信息
    			SaveStudent();
    			break;
    		case '4'://4.读取学生信息
    			ReadStudent();
    			break;
    		case '5'://5.统计所有学生人数
    			CountStudent();
    			break;
    		case '6'://6.查找学生信息
    			FindStudent();
    			break;
    		case '7'://7.修改学生信息
    			ChangeStudent();
    			break;
    		case '8'://8.删除学生信息
    			DeleteStudent();
    			break;
    		case '0'://0.退出系统
    			return 0;
    			break;
    		default:
    			printf("输入有误,没有该功能\n\n");
    			system("pause");  //暂停
    			system("cls");    //清屏
    			break;
    		}
    	}
    
    	return 0;
    }
    

    三、菜单

    1. 菜单显示
    //菜单
    void Menu() {
    	printf("*************************************************\n");
    	printf("*\t欢迎使用高校学生成绩管理系统V1.0\t*\n");
    	printf("*\t\t请选择功能\t\t\t*\n");
    	printf("*************************************************\n");
    	printf("*\t\t1.录入学生信息\t\t\t*\n");
    	printf("*\t\t2.打印学生信息\t\t\t*\n");
    	printf("*\t\t3.保存学生信息\t\t\t*\n");
    	printf("*\t\t4.读取学生信息\t\t\t*\n");
    	printf("*\t\t5.统计所有学生人数\t\t*\n");
    	printf("*\t\t6.查找学生信息\t\t\t*\n");
    	printf("*\t\t7.修改学生信息\t\t\t*\n");
    	printf("*\t\t8.删除学生信息\t\t\t*\n");
    	printf("*\t\t0.退出系统\t\t\t*\n");
    	printf("*************************************************\n");
    }
    
    1. 打印菜单

    scanf()、getchar()输入后均需要按enter,而getch()不用

    	//打印菜单
    	Menu();
    	//读取一个字符 整数,字符在内存中映射为ASCII码
    	char ch = _getch();
    

    四、录入学生信息

    1. 定义学生结构体、链表节点结构体
    //定义一个学生
    typedef struct tagStudent {
    	char szName[20];	//姓名
    	char szSex[4];		//性别
    	int  nAge;			//年龄
    	int  nStuNo;		//学号
    	int  nScore;		//成绩
    }Student;
    
    //链表
    //节点
    typedef struct tagNode
    {
    	Student stu;			//学生信息
    	struct tagNode* pNext;	//指向下一个节点
    }Node;
    
    //创建头节点
    Node* g_pHead = NULL;		//指向头节点
    
    1. 利用学生结构体,以及链表操作输入学生信息
    //1.录入学生信息
    void InputStudent() {
    	//创建一个人,在堆中分配内存
    	Node* pNewNode = (Node*)malloc(sizeof(Node));
    	//指针下一个指向空
    	pNewNode->pNext = NULL;
    
    	//查找链表的尾结点
    	Node* p = g_pHead;
    	while (g_pHead != NULL && p->pNext != NULL)
    	{
    		p = p->pNext;
    	}
    
    	//把节点插到链表的尾节点
    	if (g_pHead == NULL) {
    		g_pHead = pNewNode;
    	}
    	else {
    		p->pNext = pNewNode;
    	}
    
    	//录入学生信息
    	printf("请输入学生姓名:\n");
    	scanf_s("%s", pNewNode->stu.szName, sizeof(pNewNode->stu.szName));
    	printf("请输入性别:\n");
    	scanf_s("%s", pNewNode->stu.szSex, sizeof(pNewNode->stu.szSex));
    	printf("请输入学生年龄:\n");
    	scanf_s("%d", &pNewNode->stu.nAge);
    	printf("请输入学号:\n");
    	scanf_s("%d", &pNewNode->stu.nStuNo);
    	printf("请输入成绩:\n");
    	scanf_s("%d", &pNewNode->stu.nScore);
    
    	printf("学生信息录入成功。\n\n");
    	system("pause");
    	system("cls");
    }
    

    五、打印学生信息

    1. 读取链表结构,输出学生信息。先进行判空处理,如果无学生信息则输出提示信息,反之则正确输出学生信息。
    //2.打印学生信息
    void PrintStudent() {
    
    	system("cls");
    	//遍历链表
    	Node* p = g_pHead;
    	if (p == NULL) {
    		printf("系统中暂无学生信息,请录入后再来打印查看。\n\n");
    	}
    	else {
    		printf("*********************************************************************************\n");
    		printf("*\t\t\t欢迎使用高校学生成绩管理系统V1.0\t\t\t*\n");
    		printf("*********************************************************************************\n");
    		printf("*\t学号\t*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
    		printf("*********************************************************************************\n");
    
    		while (p != NULL)
    		{
    			printf("*\t%d\t*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",
    				p->stu.nStuNo,
    				p->stu.szName,
    				p->stu.szSex,
    				p->stu.nAge,
    				p->stu.nScore
    			);
    
    			//下一个节点
    			p = p->pNext;
    			printf("*********************************************************************************\n");
    		}
    	}
    
    	system("pause");
    	system("cls");
    }
    

    六、保存学生信息

    1. 利用文件对学生信息进行存储
    //3.保存学生信息
    void SaveStudent() {
    	//打开文件
    	FILE* pFile;
    	pFile = fopen(".\\stuinfo.dat", "w");
    	
    	if (pFile == NULL) {
    		printf("打开文件失败。\n");
    		return;
    	}
    
    	//写入数据
    	Node* p = g_pHead;
    	while (p != NULL)
    	{
    		fwrite(&p->stu, sizeof(Node), 1, pFile);
    		p = p->pNext;
    	}
    
    	//关闭文件
    	fclose(pFile);
    
    	printf("数据保存成功。\n");
    	system("pause");
    	system("cls");
    }
    
    1. fopen在vs中会报错,解决方式

    (1)按照vs的提示,将fopen换成fopen_s

    (2)不修改函数,仅仅修改项目的属性。因为fopen_s是一种Microsoft的函数,若纯做Windows开发则直接改为_s也无妨,但是我们尽量还是用标准C++比较好,这样代码有较好的移植性。

    具体操作:

    右键工程名–>属性–>C/C++–>预处理器–>预处理器定义,编辑右边输入框加入: _CRT_SECURE_NO_WARNINGS

    保存(注意用分号隔开)。

    七、读取学生信息

    1. 打开存储学生信息的文本,单个单词读取,判断非分隔符或者空时则赋值给链表中的节点,读取完毕后,直接调用PrintStudent()函数进行打印结果。
    //4.读取学生信息
    void ReadStudent() {
    	system("cls");
    
    	//打开文件
    	FILE* pFile;
    	pFile = fopen(".\\stuinfo.dat", "r");
    
    	if (pFile == NULL) {
    		printf("打开文件失败。\n");
    		return;
    	}
    	
    	//创建一个人,在堆中分配内存
    	Node* p = (Node*)malloc(sizeof(Node));
    	p->pNext = NULL;
    	//重新建立链表
    	g_pHead = p;
    
    	//逐个单词读入文本内容
    	char str[200];
    	int i = 0;
    	while (fscanf(pFile, "%s", str) != EOF) {  //读文件 
    		//单词不是*或者空时,进行赋值
    		if (strcmp(str, "*") && str != NULL) {
    			switch (i)
    			{
    			case 0:
    				p->stu.nStuNo = atoi(str);
    				break;
    			case 1:
    				strcpy(p->stu.szName, str);
    				break;
    			case 2:
    				strcpy(p->stu.szSex, str);
    				break;
    			case 3:
    				p->stu.nAge = atoi(str);
    				break;
    			case 4:
    				p->stu.nScore = atoi(str);
    				break;
    			default:
    				Node* pNewNode = (Node*)malloc(sizeof(Node));
    				pNewNode->pNext = NULL;
    				p->pNext = pNewNode;
    				p = pNewNode;
    				p->stu.nStuNo = atoi(str);
    				i = 0;
    				break;
    			}
    			i++;
    		}
    	}
    	//打印读取结果
    	PrintStudent();
    }
    
    1. 读取文本时,将内容全部赋值给char数组,所有赋值时需特殊处理。
    • char数组赋值给整数

      在<stdlib.h>头文件中有两个函数,int atoi(char *p)和char *itoa(int p),分别将装有整数的char数组转化为整数,和将整数按位数分解依次存入char数组中。

    • char数组赋值给char数组

      用strcpy函数!

      原型声明:extern char *strcpy(char *dest,char *src);

      头文件:string.h

      功能:把src所指由NULL结束的字符串复制到dest所指的数组中。

      说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

      返回指向dest的指针。

      注:不能使用memcpy(a, b, strlen(b)),会导致中文乱码。

    八、统计所有学生人数

    1. 设置计数器,遍历链表
    //5.统计所有学生人数
    void CountStudent() {
    	int countStu = 0;
    
    	//遍历链表
    	Node* p = g_pHead;
    	while (p != NULL)
    	{
    		countStu++;
    		p = p->pNext;
    	}
    	printf("学生总人数:%d\n\n", countStu);
    
    	system("pause");
    	system("cls");
    }
    

    九、查找学生信息

    1. 本次查找以学号为示例,改用姓名等信息查询流程基本一致。

      遍历链表,如果有符合信息的学生则打印,反之则继续下一个节点,若系统中无该学生信息,给予用户无结果提示。

    //6.查找学生信息
    void FindStudent() {
    	system("cls");
    	//以学号为查找示例,其他信息查找流程基本相似
    	int stuNum;
    	printf("请输入查找学生学号:");
    	scanf("%d", &stuNum);
    	//遍历链表查找,查找到后进行信息显示
    	Node* p = g_pHead;
    	//对表头进行展示一次
    	bool isShowHead = false;
    	//记录是否有找到该学号的学生信息
    	bool isFindStu = false;
    	while (p != NULL)
    	{
    		if (stuNum == p->stu.nStuNo) {
    			if (!isShowHead) {
    				printf("*********************************************************************************\n");
    				printf("*\t学号\t*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
    				printf("*********************************************************************************\n");
    				isShowHead = true;
    			}
    			printf("*\t%d\t*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",
    				p->stu.nStuNo,
    				p->stu.szName,
    				p->stu.szSex,
    				p->stu.nAge,
    				p->stu.nScore
    			);
    			isFindStu = true;
    			printf("*********************************************************************************\n");
    		}
    		p = p->pNext;
    	}
    
    	if (!isFindStu) {
    		printf("学号输入有误,系统中暂无该学生信息。\n\n");
    	}
    
    	system("pause");
    	system("cls");
    }
    

    十、修改学生信息

    1. 可参考查找学生信息代码段,在查找后进行修改即可
    //7.修改学生信息
    void ChangeStudent() {
    	//以学号为查找示例,其他信息查找流程基本相似
    	int stuNum;
    	printf("请输入欲修改学生的学号:");
    	scanf("%d", &stuNum);
    	//遍历链表查找,查找到后进行信息显示
    	Node* p = g_pHead;
    	//对表头进行展示一次
    	bool isShowHead = false;
    	//记录是否有找到该学号的学生信息
    	bool isFindStu = false;
    	while (p != NULL)
    	{
    		if (stuNum == p->stu.nStuNo) {
    			if (!isShowHead) {
    				printf("*********************************************************************************\n");
    				printf("*\t学号\t*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
    				printf("*********************************************************************************\n");
    				isShowHead = true;
    			}
    			printf("*\t%d\t*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",
    				p->stu.nStuNo,
    				p->stu.szName,
    				p->stu.szSex,
    				p->stu.nAge,
    				p->stu.nScore
    			);
    			//修改学生信息
    			printf("请输入学生姓名:\n");
    			scanf_s("%s", p->stu.szName, sizeof(p->stu.szName));
    			printf("请输入性别:\n");
    			scanf_s("%s", p->stu.szSex, sizeof(p->stu.szSex));
    			printf("请输入学生年龄:\n");
    			scanf_s("%d", &p->stu.nAge);
    			printf("请输入学号:\n");
    			scanf_s("%d", &p->stu.nStuNo);
    			printf("请输入成绩:\n");
    			scanf_s("%d", &p->stu.nScore);
    			isFindStu = true;
    			printf("*********************************************************************************\n");
    			printf("学生信息修改成功,请注意及时保存。\n\n");
    		}
    		p = p->pNext;
    	}
    
    	if (!isFindStu) {
    		printf("学号输入有误,系统中暂无该学生信息,无法进行修改。\n\n");
    	}
    
    	system("pause");
    	system("cls");
    }
    

    十一、删除学生信息

    1. 仍然以查找学生信息操作为基础,以学号为线索,查找到则进行删除,未查找到则进行错误提示,删除时需要区分当前节点是头结点、尾节点或者中间节点,不同节点操作不同,同时该删除仅作用于本次操作,需保存学生信息才能长久生效。
    //8.删除学生信息
    void DeleteStudent() {
    	system("cls");
    	//以学号为查找示例,其他信息查找流程基本相似
    	int stuNum;
    	printf("请输入删除学生的学号:");
    	scanf("%d", &stuNum);
    	//遍历链表查找,查找到后进行信息显示
    	Node* p = g_pHead;
    	//记录前一个节点,删除时方便操作
    	Node* beforeNode = g_pHead;
    
    	//对表头进行展示一次
    	bool isShowHead = false;
    	//记录是否有找到该学号的学生信息
    	bool isFindStu = false;
    	while (p != NULL)
    	{
    		if (stuNum == p->stu.nStuNo) {
    			if (!isShowHead) {
    				printf("*********************************************************************************\n");
    				printf("*\t学号\t*\t姓名\t*\t性别\t*\t年龄\t*\t成绩\t*\n");
    				printf("*********************************************************************************\n");
    				isShowHead = true;
    			}
    			printf("*\t%d\t*\t%s\t*\t%s\t*\t%d\t*\t%d\t*\n",
    				p->stu.nStuNo,
    				p->stu.szName,
    				p->stu.szSex,
    				p->stu.nAge,
    				p->stu.nScore
    			);
    			isFindStu = true;
    			printf("*********************************************************************************\n");
    
    			//删除节点为头节点
    			if (p == g_pHead) {
    				g_pHead = p->pNext;
    			}
    			//删除节点为尾节点
    			else if (p->pNext == NULL) {
    				p = beforeNode;
    				p->pNext = NULL;
    			}
    			//删除节点为中间节点
    			else {
    				beforeNode->pNext = p->pNext;
    			}
    			printf("删除成功,请记得保存。\n\n");
    		}
    		beforeNode = p;
    		p = p->pNext;
    	}
    
    	if (!isFindStu) {
    		printf("学号输入有误,系统中暂无该学生信息,无法进行删除操作。\n\n");
    	}
    
    	system("pause");
    	system("cls");
    }
    

    十二、退出系统

    直接在选择0时,设置return即可。

    十三、出错

    用户输入有误时,进行提示信息输出即可。

    	printf("输入有误,没有该功能\n\n");
    	system("pause");  //暂停
    	system("cls");    //清屏
    

    展开全文
  • 优索科技教务管理系统主要的功能有基本设置系统,学生管理系统,教师管理系统,课程管理系统,课程表查询,公用信息系统,成绩管理系统,教师评价系统,证书管理系统,在线报名
  • 学生成绩管理系统

    2011-09-07 17:11:21
    基于VC++6.0,MFC实现的学生成绩管理系统 功能:在对话框中输入学生基本资料,能够按学号或姓名查找或删除信息.能够生成一个简明文件,存了学生的姓名和平均成绩.能够生成一个两科成绩都不及格的文件. 注:含完整...
  • 学生成绩管理系统.cpp

    2020-01-22 20:29:57
    学生成绩管理系统 功能描述:学生信息,课程信息的输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出。 设计要求:自定义学生,课程信息完成以上功能描述。
  • java实现学生成绩管理系统源码(学生信息管理 学生成绩管理 学生信息管理
  • 用C语言实现一个学生成绩管理系统 题目: 学生成绩管理系统 功能: 实现学生信息管理。包括:录入、查询、排序等功能。 要求: 用数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3…) ,利用菜单可以循环实现...

    欢迎关注我的公众号【软件大爆炸】
    用C语言实现一个学生成绩管理系统
    题目: 学生成绩管理系统
    功能: 实现学生信息管理。包括:录入、查询、排序等功能。
    要求: 用数据文件保存学生基本信息(学号 姓名 课程1 课程2 课程3…) ,利用菜单可以循环实现各个功能。
    进一步要求*: (1) 能够实现增加、删除、修改功能;
    (2) 能够实现统计功能等。
    思路简介: 要采用模块化思想,对不同的功能编写不同的函数进行实现
    不足之处: 没有查重处理,需要进一步完善
    比如此结构体中,定义有学号,在函数查找、修改等功能中也是通过学号来查找。
    没有查重则对结果影响比较大。举例来说,原本数据存有学号为 20190156 的学生
    。当你选择增加数据且再次输入一个学号为 20190518 的学生数据时,程序并不会
    报错,只是默默的存在在数据文件中。所以这就带来了很大的隐患。当你继续选择
    查找功能时,假如你输入的学号是 20190518 ,这时候计算机就不知道怎么处理了
    。在实际生活中情况可能更复杂,带来更大的隐患。所以应该增加查重环节并对数
    据进一步处理。

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>   //提供 exit() 函数支持  
    #define SIZE 100000
    //#include"conio.h"
    
    //声明函数原型
    void finput();    //存入数据
    void flist();     //输出数据
    void fsearch();   //查找数据
    void fadden();    //增加数据
    void fchange();   //修改数据
    void ftaxis();    //数据排序
    void stat();      //统计数据
    
    //定义结构体 
    struct student 
    {
    	int num;        //存放
    	char name[10];  //定义名字数组变量
    	int C;          //C 语言成绩
    	int Maths;      //数学课成绩
    	int En;         //英语课成绩
    	float ave;      //三门课平均成绩
    } stu[SIZE];        //在定义结构体时同时声明结构体变量
    
    int main() 
    {
    	int n;
    	for(;;)          //使程序能够循环,在循环内部判断何时结束 
    	{
    		printf("\n\n");        //与上次的输出结果保持间隔,便于美观 
    		printf("	_________________________________\n");//菜单输出 
    		printf("	|           MENU                |\n");
    		printf("	|       1.Input data            |\n");               
    		printf("	|       2.Output data           |\n");
    		printf("	|       3.Search data           |\n");
    		printf("	|       4.Add data              |\n");
    		printf("	|       5.Revise data           |\n");
    		printf("	|       6.Sort data             |\n");
    		printf("	|       7.Statistics            |\n");
    		printf("	|       8.  quit                |\n");
    		printf("	|_______________________________|\n");
    		printf("  Please choose your function:(1-8):");          //功能选择 
    		scanf("%d",&n);
    		printf("\n");
    		if(n>0&&n<=8) {
    			switch(n) {
    				case 1:
    					finput();
    					break;
    				case 2:
    					flist();
    					break;
    				case 3:
    					fsearch();
    					break;
    				case 4:
    					fadden();
    					break;
    				case 5:
    					fchange();
    					break;
    				case 6:
    					ftaxis();
    					break;
    				case 7:
    					stat();
    				case 8:		 
    		printf("\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");     //退出提示
    		printf("             Goodbye!         \n");
    		printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    					exit(0);//将程序退出 
    			}
    		} else //没有按规范选择功能,要进行错误提示     //错误提示
    		{
    		printf("\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    		printf("           error input!       \n");
    		printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    //			break; //应该将这一句话去掉才能使在输错的情况下也进行菜单循环 
    		}
    	}
    	return 0;
    }
    /*
    主函数部分结束 
    */ 
    
    
    /*
    下面是模块化设计
    每个功能对应一个函数 
    */ 
    
    //part 1 : 进行信息录入 
    void finput() 
    {
    	FILE *fp;            //声明指针变量 
    	int i,p;
    	fp=fopen("grades","wb");          //首次打开文件, 若没有文件将会自动创建新文件 
    	for(i=0; i<SIZE; i+1) 
    	{
    		printf("1 to continue and 0 to end input: ");        //询问是否继续输入 
    		scanf("%d",&i);
    		if(i==0) 
    		{
    			fclose(fp);
    			return;
    		} 
    		else {
    			printf("Please inut your school number, C grade, Math grade, English grade:\n");
    			scanf("%d%s%d%d%d",&stu[i].num,stu[i].name,&stu[i].C,&stu[i].Maths,&stu[i].En);
    			stu[i].ave=(stu[i].C+stu[i].Maths+stu[i].En)/3.0;
    			fwrite(&stu[i],sizeof(struct student),1,fp);
    		}
    	}
    	fclose(fp);         //记得关闭文件,这是一个好习惯! 
    }
    
    
    //part 2: 将结果输出 
    void flist() 
    {
    	FILE *fp;
    	int i;
    	fp=fopen("grades","rb");
    	printf("____________________________________________________________________________________________________\n"); 
    	printf("|                                                  Report                                           |\n");
    	printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    	printf("|        ID      |    name   |    C grade    |    Math grade   |   English grade   |    Average     |\n");
    	printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    	for(i=0; fread(&stu[i],sizeof(struct student),1,fp)==1; i++) 
    		printf("|%11d%15s%13d%17d%18d%19.2f\n",stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
    		/*
    		此处采用字宽输入比加空格更好, 因为若是使用空格输入,当学号或者名字前后输入的长度不一致时,格式会乱掉,导致无法对其格式 
    		*/ 
    	printf("|___________________________________________________________________________________________________|\n\n");
    	fclose(fp);
    }
    
    //part 3:查找数据 
    void fsearch() 
    {
    	FILE *fp;
    	int i,num,flag=0;//flag 用来判断是否需要进行错误提示 
    	fp=fopen("grades","rb");
    	rewind(fp);
    	printf("Which one are you searching? Input the School number: ");
    	scanf("%d",&num);
    	
    	for(i=0; i<=SIZE; i++)
    	{
    		if(stu[i].num==num) 
    		{
    			printf("____________________________________________________________________________________________________\n");//与上文采用相同的输出格式,会显得统一整洁 
    			printf(" Here are the rusults                                                                               \n");
    			printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    			printf("|        ID      |    name   |    C grade    |    Math grade   |   English grade   |    Average     \n");
    			printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    			printf("|%11d%15s%13d%17d%18d%19.2f\n",stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
    			printf("|__________________________________________________________________________________________________|\n\n");
    			flag+=1;
    		}
    	}
    	if(flag==0)
    	{
    		printf("\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    		printf("           error input!       \n");
    		printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    	}
    //	printf("___________________________________________________________________________________________________________\n\n");
    	fclose(fp);
    }
    
    //part 4:增加数据 
    void fadden() 
    {
    	int i,s;
    	FILE *fp;
    	fp=fopen("grades","ab+");
    	rewind(fp);
    	printf("___________________________________________________________________________ ________________________\n");
    	printf("|                                                  Report                                          |\n");
    	printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    	printf("|        ID      |    name   |    C grade    |    Math grade   |   English grade   |    Average     \n");
    	printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    	for(i=0; fread(&stu[i],sizeof(struct student),1,fp)==1; i++) 
    		printf("|%11d%15s%13d%17d%18d%19.2f\n",stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
    	printf("____________________________________________________________________________________________________\n");
    	s=i;	         //记录学号位置,从此处开始增加新的数据 
    	for(i=s; i<SIZE; i++) {
    		printf("1 to continue and 0 to end input: ");
    		scanf("%d",&i);
    		if(i==0) 
    		{
    			fclose(fp);
    			return;
    		} else 
    		{
    			printf("Please inut your school number, C grade, Math grade, English grade:\n");
    			scanf("%d%s%d%d%d",&stu[i].num,stu[i].name,&stu[i].C,&stu[i].Maths,&stu[i].En);
    			stu[i].ave=(stu[i].C+stu[i].Maths+stu[i].En)/3.0;
    			fwrite(&stu[i],sizeof(struct student),1,fp);
    		}
    	}
    	fclose(fp);
    }
    
    //part 5:修改数据 
    void fchange() 
    {
    	FILE *fp;
    	int i,num,n;
    	int flag=0;
    	printf("Which one are you searching? Input the School number: ");
    	scanf("%d",&num);
    	printf("\n");
    	for(i=0; i<=SIZE; i++)
    		if(stu[i].num==num) 
    		{
    			printf("____________________________________________________________________________________________________\n");
    			printf("|                                                  Report                                           |\n");
    			printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    			printf("|        ID      |    name   |    C grade    |    Math grade   |   English grade   |    Average     |\n");
    			printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    			printf("|%11d%15s%13d%17d%18d%19.2f\n",stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
    			printf("|___________________________________________________________________________________________________|\n\n");
    			n=i;
    			flag=1;
    			break;
    		}
    	if(flag==0) {
    		printf("\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    		printf("           error input!       \n");
    		printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    		return;
    	}
    	printf("\n\n");
    	fp=fopen("grades","rb+");
    	fseek(fp,n*sizeof(struct student),0);
    	printf("Please inut your school number, C grade, Math grade, English grade:\n");
    	scanf("%d%s%d%d%d",&stu[i].num,stu[i].name,&stu[i].C,&stu[i].Maths,&stu[i].En);
    	stu[i].ave=(stu[i].C+stu[i].Maths+stu[i].En)/3.0;
    	fwrite(&stu[i],sizeof(struct student),1,fp);
    	fclose(fp);
    	fp=fopen("grades","rb");
    	printf("_______________________________________________________________________________ _____________________\n");
    	printf("|                                                  Report                                           |\n");
    	printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    	printf("|        ID      |    name   |    C grade    |    Math grade   |   English grade   |    Average     |\n");
    	printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    	for(i=0; fread(&stu[i],sizeof(struct student),1,fp)==1; i++) 
    	{
    		printf("|%11d%15s%13d%17d%18d%19.2f\n",stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
    	}
    	printf("|___________________________________________________________________________________________________|\n");
    	fclose(fp);
    }
    
    //part 6:按平均成绩进行排序 
    void ftaxis() 
    {
    	int i,j,n;
    	FILE *fp;
    	struct student t;
    	fp=fopen("grades","rb");
    	printf("____________________________________________________________________________________________________ \n");
    	printf("|                                                  Report                                           |\n");
    	printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    	printf("|        ID      |    name   |    C grade    |    Math grade   |   English grade   |    Average     |\n");
    	printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    	for(i=0; fread(&stu[i],sizeof(struct student),1,fp)==1; i++)
    		printf("|%11d%15s%13d%17d%18d%19.2f\n",stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
    	printf("|___________________________________________________________________________________________________|\n\n");
    	fclose(fp);
    	n=i;
    	for(i=0; i<n; i++)
    		for(j=i+1; j<n; j++)
    			if(stu[i].ave<stu[j].ave) {
    				t=stu[i];
    				stu[i]=stu[j];
    				stu[j]=t;
    			}
    	fp=fopen("grades","wb");
    	printf("\n\n\n");
    	printf("_____________________________________________________________________________________________________\n");
    	printf("|                                                  Report                                           |\n");
    	printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    	printf("|        ID      |    name   |    C grade    |    Math grade   |   English grade   |    Average     |\n");
    	printf("|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
    	for(i=0; i<n; i++) {
    		fwrite(&stu[i],sizeof(struct student),1,fp);
    		printf("|%11d%15s%13d%17d%18d%19.2f\n",stu[i].num,stu[i].name,stu[i].C,stu[i].Maths,stu[i].En,stu[i].ave);
    	}
    	printf("|___________________________________________________________________________________________________|\n");
    	fclose(fp);
    }
    
    //part 6: 统计指定分数之上的人数
    void stat()
    {
    	FILE *fp;
    	int i,num,flag=0,count=0;//flag 用来判断是否需要进行错误提示, count用来统计个数
    	float score_; 
    	fp=fopen("grades","rb");
    	rewind(fp);
    	printf("Do you want to know the percentage of the total score?\nEnter your number: ");
    	scanf("%f",&score_);
    	
    	for(i=0; i<=SIZE; i++)
    	{
    		if(score_ < stu[i].ave ) 
    		{
    			count++;
    			flag=1;
    		}
    	}
    	if(flag == 1)
    		printf("%d in total above your number\n",count);
    	if(flag==0)
    	{
    		printf("\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    		printf("           error input!       \n");
    		printf("    ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    	}
    //	printf("___________________________________________________________________________________________________________\n\n");
    	fclose(fp);
    }
    

    欢迎大家交流指正~

    展开全文
  • struts+hibernate的学生成绩管理系统 功能较全 可以使用
  • 利用链表,文件打开、指针等操作实现的学生成绩管理系统,功能全面,可做为大作业,符合多种要求,基于C语言编写,该成绩管理系统功能全面,可作为C语言学习
  • 学生成绩管理系统功能介绍运行情况和代码实现 主要功能:学生的输入,查询,插入,删除,输出,以及平均分,排名,挂科率,以及补考名单的实现

    C学生成绩管理系统功能介绍运行情况和代码实现

    主要功能介绍:学生的输入,查询,插入,删除,输出,以及平均分,排名,挂科率,以及补考名单的实现
    功能实现方式:根据数组以及多重函数的引用实现功能(详细解释见代码中注释)
    以下是成绩管理系统的代码实现和程序的运行情况:
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define max 100//给定结构体数组的最大值

    int size = 0;//全局变量,表示已经系统内录入学生的个数 并初始化
    //显示学生属性的信息

    typedef struct Information//使Information成为一个类型
    {
    char student_name[20];//学生的名字
    int student_class;
    int student_number;//学生的学号
    float student_english;
    float student_math;
    float student_C;
    }information;

    void menu()
    {
    printf("\n");
    printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
    printf(“\n");
    printf(" 学生成绩管理系统\n");
    printf("
    \n”);
    printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
    printf(" 1—学生输入 \n");
    printf(" 2—学生插入 \n");
    printf(" 3—学生查询 \n");
    printf("  4—学生删除 \n");
    printf(" 5—学生输出 \n");
    printf(" 6—计算每名学生的平均分并输出 \n");
    printf(" 7—计算每科的平均分并输出 \n");
    printf(" 8—对学生的平均分排序 \n");
    printf(" 9—统计每门课程的及格率并输出 \n");
    printf(" 10—输出各科的补考名单(包括学号、姓名、成绩) \n");
    printf(" 11—对学生按学号排序 \n");
    printf(" 12—修改成绩 \n");
    printf(" 0—退出 \n");
    }

    //1.学生输入
    //定义一个函数add_student,zihao表示要录入学生的个数

    void add_student(information im[], int zihao)
    {
    int i;
    int count = size + zihao;
    //count加完之后的人数
    for (i = size; i < count; i++)
    {
    printf(“请录入学生的名字:\n”);
    scanf("%s", &im[i].student_name); printf(“请录入学生的学号:\n”);
    scanf("%d", &im[i].student_number); printf(“请录入学生的班级:\n”);
    scanf("%d", &im[i].student_class); printf(“请录入学生的英语成绩:\n”);
    scanf("%f", &im[i].student_english); printf(“请录入学生的数学成绩:\n”);
    scanf("%f", &im[i].student_math); printf(“请录入学生的C语言成绩:\n”);
    scanf("%f", &im[i].student_C); size++;
    }
    //end of for
    printf(“输入成功,共输入%d人成绩”, i);
    }

    //2.学生插入(按位置插入)
    void st_insert(information im[], int win)
    {
    int i;
    if (win < 1 || win > size + 1){
    printf(“错误!\n”);
    //输入数大于总人数,错误
    return;
    }
    for (i = size; i > win - 1; i–)
    {
    im[i] = im[i - 1];
    //向右移一个位置,左侧用来插入新信息
    }
    printf(“请录入插入学生的名字:\n”);
    scanf("%s", &im[i].student_name);

    printf(“请录入插入学生的学号:\n”);
    scanf("%d", &im[i].student_number); printf(“请录入插入学生的班级:\n”);
    scanf("%d", &im[i].student_class); printf(“请录入插入学生的英语成绩:\n”);
    scanf("%f", &im[i].student_english); printf(“请录入插入学生的数学成绩:\n”);
    scanf("%f", &im[i].student_math); printf(“请录入插入学生的C语言成绩:\n”);
    scanf("%f", &im[i].student_C);
    size += 1;
    printf(“插入成功!\n”);
    }

    //3.学生查询
    void check_oneStudent(information im[], int student_number)
    {
    int i; //是实现学生信息的查询
    for (i = 0; i < size; i++)
    {
    if (im[i].student_number == student_number)
    {
    printf(“名字 = %s\t学号 = %d\t班级 = %s\t英语成绩 = %0.2f\t数学成绩 = %0.2f\tC语言成绩 = %0.2f\n\n”,
    im[i].student_name, im[i].student_number, im[i].student_class, im[i].student_english, im[i].student_math, im[i].student_C);
    return;
    }//end of if
    }//end of for printf(“没有该学生的信息!\n”);}

    //4.学生删除
    void del_studentinfor(information im[], int student_number)
    {
    int i, j; //找到给定的编号,并删除对应编号的信息
    for (i = 0; i < size; i++)
    {
    //通过比较找到对应编号,然后删除
    if (im[i].student_number == student_number)
    {
    //通过移动数组元素来删除信息
    for (j = i; j < size - 1; j++)
    {
    im[j] = im[j + 1];
    } //end of for
    size–;
    printf(“删除成功!\n”);
    return;
    }//end of if
    }//end of for printf(“没有该学生\n”);
    }

    //5.学生输出
    void check_student(information im[])
    {
    int i;
    if (size == 0){
    printf(“没有学生信息录入!”);
    }
    for (i = 0; i < size; i++)
    {
    printf(“名字 : %s\t学号 : %d\t班级 : %s\t\n英语成绩 = %0.2f\t数学成绩 = %0.2f\tC语言成绩 = %0.2f\n\n”,
    im[i].student_name, im[i].student_number, im[i].student_class, im[i].student_english, im[i].student_math, im[i].student_C);
    }//end of for
    }

    //6.计算每名学生的平均分并输出
    void aveGrade(information im[])
    {
    int i;
    float ave = 0;
    //定义ave
    for (i = 0; i < size; i++) {
    //平均分求值公式
    ave = (im[i].student_english + im[i].student_math + im[i].student_C) / 3;
    printf(“学号%d 姓名%s的平均成绩 = %0.2f\n”, im[i].student_number, im[i].student_name, ave);
    }
    }

    //7.每科的平均分并输出
    void ev_grade(information im[]){
    int i, j = 0;
    float sum1 = 0.0, sum2 = 0.0, sum3 = 0.0;
    //j为单科考试人数,sum为单科总分数
    for (i = 0; i < size; i++)
    {
    sum1 = sum1 + im[i].student_english;
    sum2 = sum2 + im[i].student_math;
    sum3 = sum3 + im[i].student_C;
    j++;
    }
    printf(“英语平均成绩: %0.2f\n”, sum1 / j);
    printf(“数学平均成绩: %0.2f\n”, sum2 / j);
    printf(“C语言平均成绩: %0.2f\n”, sum3 / j);
    }

    //8.统计每门课程的及格率并输出
    void evsub_ave(information im[])
    {
    int i, j = 0, count1 = 0, count2 = 0, count3 = 0;
    float w; for (i = 0; i < size; i++)
    {
    if (im[i].student_english >= 60)
    {
    count1++;
    }
    if (im[i].student_math >= 60)
    {
    count2++;
    }
    if (im[i].student_C >= 60)
    {
    count3++;
    }
    j++;
    }
    w = 100.0f / j; //强转
    //count及格人数
    printf(“英语及格率为:%0.2f\n”, count1 * w);
    printf(“数学及格率为:%0.2f\n”, count2 * w);
    printf(“C语言及格率为:%0.2f\n”, count3 * w);
    }

    //9.输出各科的补考名单
    void rebuild(information im[])
    {
    int i, flag = 1; printf(“英语补考名单:\n”);
    for (i = 0; i < size; i++)
    {
    if (im[i].student_english < 60)
    {
    printf(“姓名:%s\t”, im[i].student_name);
    printf(“学号:%d\t”, im[i].student_number);
    printf(“英语成绩:%0.2f\n”, im[i].student_english);
    flag = 0;
    }
    }
    if (flag == 1){
    printf(“没有补考的!\n”);
    }
    else{
    flag = 1;
    }
    printf(“数学补考名单:\n”);
    for (i = 0; i < size; i++)
    {
    if (im[i].student_math < 60)
    {
    printf(“姓名:%s\t”, im[i].student_name);
    printf(“学号:%d\t”, im[i].student_number);
    printf(“数学成绩:%0.2f\n”, im[i].student_math);
    flag = 0;
    }
    }
    if (flag == 1){
    printf(“没有补考的!\n”);
    }
    else{
    //再次定义
    flag = 1;
    }
    printf(“C语言补考名单:\n”);
    for (i = 0; i < size; i++)
    {
    if (im[i].student_C < 60)
    {
    printf(“姓名:%s\t”, im[i].student_name);
    printf(“学号:%d\t”, im[i].student_number);
    printf(“C语言成绩:%0.2f\n”, im[i].student_C);
    flag = 0;
    }
    }
    if (flag == 1){
    printf(“没有补考的!\n”);
    }
    }

    //10.对学生按学号排序(由小到大)
    //采用冒泡排序

    void num_sort(information im[])
    {
    int i, j;
    information stu_temp; for (i = 0; i < size; i++)
    {
    for (j = 0; j<size - 1 - i; j++)
    {
    if (im[j].student_number > im[j + 1].student_number)
    {
    stu_temp = im[j];
    im[j] = im[j + 1];
    im[j + 1] = stu_temp;
    }
    }
    }
    printf(“排序后的结果:\n”);
    for (i = 0; i < size; i++)
    {
    printf("%d\t", im[i].student_number);
    }
    }

    //11.对学生的平均分排序(由大到小)
    //同样采用冒泡排序

    void ave_sort(information im[])
    {
    int i, j;
    float ave[300], ave_temp;
    information stu_temp; for (i = 0; i < size; i++)
    {
    ave[i] = (im[i].student_english + im[i].student_math + im[i].student_C) / 3;
    }
    for (i = 0; i < size - 1; i++)
    {
    for (j = 0; j<size - 1 - i; j++)
    {
    if (ave[j] < ave[j + 1])
    {
    stu_temp = im[j];
    im[j] = im[j + 1];
    im[j + 1] = stu_temp; ave_temp = ave[j];
    ave[j] = ave[j + 1];
    ave[j + 1] = ave_temp;
    }
    }
    }
    printf(“排序后的结果:\n”);
    for (i = 0; i < size; i++)
    {
    printf("%0.2f\t", ave[i]);
    }
    }

    //12.修改成绩
    void gai(information im[], int student_number)
    {
    int i;
    int j = 0;
    //找出你要改的人
    for (i = 0; i < size; i++)
    {
    //筛选
    if (im[i].student_number == student_number)
    {
    printf(“以下是学号为%d的学生的信息名字,请确认\n 名字= %s\t学号 = %d\t班级 = %s\t英语成绩 = %0.2f\t数学成绩 = %0.2f\tC语言成绩 = %0.2f\n\n”,
    im[i].student_number, im[i].student_name, im[i].student_number, im[i].student_class, im[i].student_english, im[i].student_math, im[i].student_C);
    printf(“现在选择你要修改的成绩;名字代号为;1\t学号代号为;2\t班级代号为;3\t英语成绩代号为;4\t数学成绩代号为;5\tC语言成绩代号为;6\t返回代号为0”);
    scanf("%d", &j);
    switch (j)
    {
    case 1:
    scanf("%s", im[i].student_name);
    break;
    case 2:
    scanf("%d", &im[i].student_number);
    break;
    case 3:
    scanf("%s", im[i].student_class);
    break;
    case 4:
    scanf("%f", &im[i].student_english);
    break;
    case 5:
    scanf("%f", &im[i].student_math);
    break;
    case 6:
    scanf("%f", &im[i].student_C);
    break;
    case 0:
    break;
    }
    return;
    }//end of if
    }//end of for printf(“没有该学生的信息!\n”);}
    int main()
    {
    information student[max];
    int zihao;
    int value = -1;
    int student_id, win;
    char user[10] = “wen\0”;
    char key[10] = “123456\0”;
    char user2[100], key2[100];
    printf(“请输入用户名:\n”);
    scanf("%s", &user2);
    printf(“请输入密码:\n”);
    scanf("%s", &key2);
    if (strcmp(user, user2) != 0 || strcmp(key, key2) != 0)
    {
    //非法输入!
    printf(“非法输入!用户名或密码错误!\n”);
    return 0;
    system(“pause”);
    }
    else
    {
    while (value != 0)//按"0"退出操作
    {
    menu();
    printf(“请选择所要执行的操作:\n”);
    scanf("%d", &value);
    switch (value)//根据value的值来执行相应的操作
    {
    //1—学生输入
    case 1:
    printf(“请输入你要录入学生信息的个数:”);
    scanf("%d", &zihao);
    add_student(student, zihao);
    break;
    //2—学生插入
    case 2:
    printf(“请输入插入学生的位置:\n”);
    scanf("%d", &win);
    st_insert(student, win);
    break;
    //3—学生查询
    case 3:
    printf(“请输入要查询的学生的学号:”);
    scanf("%d", &student_id);
    check_oneStudent(student, student_id);
    break;
    //4—学生删除
    case 4:
    printf(“请输入要删除的学生的学号:”);
    scanf("%d", &student_id);
    del_studentinfor(student, student_id);
    break;
    //5—学生输出
    case 5:
    check_student(student);
    break;
    //6—计算每名学生的平均分并输出
    case 6:
    aveGrade(student);
    break;
    //7—计算每科的平均分并输出
    case 7:
    ev_grade(student);
    break;
    //8—对学生的平均分排序
    case 8:
    ave_sort(student);
    break;
    //9—统计每门课程的及格率并输出
    case 9:
    evsub_ave(student);
    break;
    //10—输出各科的补考名单(包括学号、姓名、成绩)
    case 10:
    rebuild(student);
    break;
    //11—对学生按学号排序
    case 11:
    num_sort(student);
    break;
    //12—改成绩
    case 12:
    printf(“请输入要改的学生的学号;”);
    scanf("%d", &student_id);
    gai(student, student_id);
    break;
    //0—退出
    case 0:
    printf(“退出成功!”);
    break;
    default:
    printf(“输入信息错误!!”);
    } //end of switch
    }//end of while
    }
    system(“pause”);
    }

    总结:此成绩管理系统实现较为仓促,没有用链表,而是用最简单的数组实现;目录外观,功能运行也可以进一步优化。

    代码在VS中的实现
    运行后的目录
    功能实现示例

    展开全文
  • JavaWeb学生成绩管理系统

    万次阅读 多人点赞 2018-07-06 21:12:05
    基于JavaWeb开发的学生成绩,使用MyEclipse2014开发,连接MySQL数据库,存储学生的身份信息、成绩,管理员的身份信息,课程信息。功能说明:学生注册。学生身份:跳转到学生登录界面,点击查询成绩按钮,以表格的形式...
  • java web学生成绩管理系统 java web学生成绩管理系统 java web学生成绩管理系统 java web学生成绩管理系统 java web学生成绩管理系统 java web学生成绩管理系统
  • * 欢迎使用学生成绩管理系统 * * 1. 建立文件储存记录 2. 增加学生记录 3. 新建学生信息文件 4. 显示记录 * * 5. 文件存储 6. 读取文件 7. 删除记录 8. 修改记录 * * 9. 查询记录 10.对记录进行排序 11.测试程序 12....
  • 基于JSP的学生成绩管理系统 功能很多
  • c++ 课程设计 学生成绩管理系统 功能描述: 学生的添加,修改,删除 成绩修改,排序,统计。 做的很全滴!
  • 学生成绩管理系统JAVA课程设计 目录 1设计题目1 2 设计目的2 3设计分析 3 4 概念结构设计 6 5 逻辑结构设计 11 6 表结构设计 13 装 7 具体功能实现15 8 总结26 9 附录 27 订 线 共 39 页 第 0 页 1.设计题目 学生...
  • 重点介绍了学生成绩管理系统的实现过程:包括系统分析、 系统调查、 数据流程分析、功能设计、 数据库设计、 系统物理配置方案、 系统实现、 系统测试和调试。本系统主要功能有用户管理、学生注册、班级信息录入、...
  • 这是以前的学生成绩管理系统的升级版,增加了很多的功能。第一,从登录的角度看,实现了选择身份登录,共分了管理员,教师以及学生三个身份。第二,内容更丰富了,实现的不仅仅是成绩的管理,还有学生的基本信息的...
  • 学生成绩管理系统功能很全。c语言实现学生成绩管理系统,里面含有代码以及报告。计算机,通信,课程设计/
  • C++ 学生成绩管理系统

    万次阅读 多人点赞 2019-10-04 20:26:09
    用c++实现学生成绩管理系统,此系统可以提供成绩的录入,可以按学生成绩进行排名,求总分和平均分以及提供成绩查询功能等。 实现功能 提供成绩录入 统计每个学生的总分和平均分 按总分由大到小排出名次 提供成绩...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,398
精华内容 12,959
关键字:

学生成绩管理系统功能