精华内容
下载资源
问答
  • 输入学生姓名、学号、成绩,会按学生成绩高低排序并输出排名,使用结构体存储,可通过学生学号查找学生成绩并修改(也可以选择不修改),
  • C语言学生成绩管理系统源代码,可完整执行,包括,增加,修改,查询,统计,删除等等功能
  • 学生成绩管理系统 系统功能模块如下: 1.学生信息管理:实现对学生信息(包括学号、姓名、性别、班级)数据的增删改查操作。 2.班级信息管理:实现对班级信息(包括班级编号、班级名称)数据的增删改查操作。 3.课程信息...

    学生成绩管理系统

    系统功能模块如下:
    1.学生信息管理:实现对学生信息(包括学号、姓名、性别、班级)数据的增删改查操作。
    2.班级信息管理:实现对班级信息(包括班级编号、班级名称)数据的增删改查操作。
    3.课程信息管理:实现对课程信息(包括课程编号、课程名称)数据的增删改查操作。
    4.成绩信息管理:每条学生成绩记录以课程编号和学号的组合为唯一标识,实现对学生成绩(包括课程编号、学号、成绩)数据的增删改查操作。可以按以课程编号计算每门课的最高分、最低分、平均。也可以统计同一门课程不同分数段(0-59,60-69,70-79,80-89,90-100分)的人数。

    /*以下为自定义结构体*/
    struct studentinfo{      /*学生信息结构体*/
       char number[15];      /*学号*/
       char name[20];        /*姓名*/
       char sex[10];          /*姓别*/
       int  classno;         /*班级编号*/
    };
    
    struct classinfo{        /*班级信息结构体*/
       int  classno;         /*班级编号*/
       char classname[30];   /*班级名称*/
    };
    
    struct courseinfo{       /*课程信息结构体*/
       int courseno;         /*课程编号*/
       char coursename[50];  /*课程名称*/
    };
    
    struct scoreinfo{        /*学生成绩结构体*/
       int  courseno;        /*课程编号*/
       char number[15];      /*学号*/
       int  coursescore;     /*成绩*/
    } ;
    
    
    /*以下为自定义函数*/
    int  studentmanage(void);   /*学生信息管理主程序*/
    int  classmanage(void);     /*班级信息管理主程序*/
    int  coursemanage(void);    /*课程信息管理主程序*/
    int  scoremanage(void);     /*学生成绩管理主程序*/
    
    int  student_add(void);     /*添加学生*/
    int  student_modify(void);  /*修改学生*/
    int  student_delete(void);  /*删除学生*/
    int  student_query(void);   /*查询学生*/
    int  student_exists(char *number,struct studentinfo *sinfo); /*用学号判断学生的记录是否已经存在*/
    void student_append(FILE *file,  struct studentinfo *sinfo); /*将一条学生记录写入文件,统一写入的格式*/
    
    int  class_add(void);       /*添加班级*/
    int  class_modify(void);    /*修改班级*/
    int  class_delete(void);    /*删除班级*/
    int  class_query(void);     /*查询班级*/
    int  class_exists(int classno,struct classinfo *cinfo);      /*用班级编号判断班级的记录是否已经存在*/
    void class_append(FILE *file, struct classinfo *cinfo);      /*将一条班级记录写入文件,统一写入的格式*/
    
    int  course_add(void);      /*添加课程*/
    int  course_modify(void);   /*修改课程*/
    int  course_delete(void);   /*删除课程*/
    int  course_query(void);    /*查询课程*/
    int  course_exists(int courseno,struct courseinfo *rinfo);   /*用课程号判断学生的记录是否已经存在*/
    void course_append(FILE *file,  struct courseinfo *rinfo);   /*将一条课程记录写入文件,统一写入的格式*/
    
    int  score_add(void);       /*添加成绩*/
    int  score_modify(void);    /*修改成绩*/
    int  score_delete(void);    /*删除成绩*/
    int  score_query(void);     /*查询成绩*/
    int  score_statistics(void);/*统计成绩*/
    int  score_exists(int courseno,char *number,struct scoreinfo *einfo);   /*用课程号,学号判断成绩的记录是否已经存在*/
    void score_append(FILE *file,  struct scoreinfo *einfo);                /*将一条成绩记录写入文件,统一写入的格式*/
    

    主程序

    // score.cpp : Defin es the entry point for the console application.
    //
    #include "stdafx.h"
    #include "stdio.h"
    #include "conio.h"
    #include "process.h"
    #include "string.h"
    
    #include "score.h"  /*自定义头文件,内含自定义结构体和自定义函数声明*/
    
    /*主程序*/
    int main(int argc, char* argv[])
    {
    	char menuid=' ';
    
    	while(menuid!='0'){
    		
    		system("cls");                              /*vc++6不支持清屏函数clrscr(),在其它编译器中可以试一试*/
    
            printf("=======学生成绩管理系统=======\n"); /*显示主菜单*/
            printf("========  主  菜  单  ========\n");
            printf("   1.学生信息管理\n");
            printf("   2.班级信息管理\n");
            printf("   3.课程信息管理\n");
            printf("   4.学生成绩管理\n");
    		printf("   0.退出\n");
            printf("==============================\n");
            printf("请选择(0-4)\n");
            
    		menuid=getch();                             /*获取按键*/
    		switch(menuid){
    		   case '1': studentmanage(); break;
    		   case '2': classmanage();   break;
    		   case '3': coursemanage();  break;
    		   case '4': scoremanage();   break;
    		   case '0':return 0;                       /*0-退出系统*/
    		   default:break;
    		}
    	}
    	
    	return 0;
    }
    

    用dev-c++写的
    大概的框架就是这样的,只要把方法写全了就可以!
    坚持自己打完代码能力会有很大的提升的!
    想要源码的可以私信联系👌🏻

    展开全文
  • C语言小程序-学生成绩统计系统

    万次阅读 多人点赞 2019-05-30 13:12:45
    C语言小程序-学生成绩统计系统 #刚入门的小白,写的一个C语言作业,参考了 另一位博主的代码(https://blog.csdn.net/qq_36503589/article/details/53106983) 但是我自信的认为我的代码更“好看”一点,见笑了,请...

    C语言小程序-学生成绩统计系统

    参考了

    另一位博主的代码(https://blog.csdn.net/qq_36503589/article/details/53106983)
    我后来写的成绩排序版本链接:https://blog.csdn.net/qq_43617268/article/details/103491760

    1. 功能介绍:本程序可以输入50人以内的成绩,包括英语,C语言,高数,体育成绩。
    2. 可以计算并输出学生的平均分,学科的平均分。
    3. 可以循环查询并修改学生成绩。
      这是我的测试情况
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    #include<stdio.h>
    #include<string.h>
    struct grade_list{										//定义结构体 
    	char name[10];										//姓名 
    	float c_len;										//C语言成绩 
    	float math;											//高数 
    	float eng;											//英语 
    	float PE;											//体育 
    };
    void in_put(struct grade_list grades[], int n);			//声明输入函数
    void average(struct grade_list grades[], int n);		//声明平均值函数
    void average_subject(struct grade_list grades[], int n);//声明课程平均值函数
    void find(struct grade_list grades[], int n);			//声明查询函数 
    void change(struct grade_list grades[], int n);			//声明修改成绩函数
     
    int main()
    {
    	struct grade_list grades[50];
    	int choices,i,n;
    	printf("成绩统计系统正在启动...\n"); 
    	printf("程序正在运行...\n");
    	do{
    		rerun:
    		printf("\n");
    		printf("\t************************************\n");
    		printf("\t*    ===========================   *\n");
    		printf("\t*          学生成绩统计系统        *\n");
    		printf("\t*    ===========================   *\n");
    		printf("\t*                                  *\n");
    		printf("\t*     输入学生成绩---------1       *\n");
    		printf("\t*     查看学生平均成绩-----2       *\n");
    		printf("\t*     查看课程平均值-------3       *\n");
    		printf("\t*     查找学生成绩---------4       *\n");
    		printf("\t*     修改学生成绩---------5       *\n");
    		printf("\t*     退出系统-------------0       *\n");
    		printf("\t*                                  *\n");
    		printf("\t************************************\n");
    		printf("\t请选择功能:");
    		scanf("%d", &choices);
    		switch(choices)
    		{
    			case 1:
    				printf("执行成绩输入程序...\n\n");
    				printf("\t请输入学生人数(1~50):");
    				scanf("%d",&n);
    				in_put(grades,n);
    				break;
    			case 2:
    				printf("执行学生平均成绩计算程序...\n\n");
    				average(grades,n);
    				break;
    			case 3:
    				printf("执行学科平均成绩计算程序...\n\n");
    				average_subject(grades,n);
    				break;
    			case 4:
    				printf("执行成绩查询程序...\n\n");
    				find(grades, n);
    				break;
    			case 5:
    				printf("执行成绩修改程序...\n\n");
    				change(grades, n);
    				break; 
    			case 0:
    				printf("\t||系统已关闭,感谢您的使用!||");
    				break;
    			default :
    				printf("\t非法输入!!!");
    				goto rerun; 
    		}
    	}while(choices>0&&choices<6);
    	
    	return 0;
     } 
    
    void in_put(struct grade_list grades[], int n)				//定义输入函数 
    {
    	int i;
    	for(i=0;i<n;i++)
    	{
    		printf("\t请输入第%d名同学的姓名:", i+1);
    		scanf("%s", grades[i].name);
    		printf("\t请输入第%d名同学的C语言成绩:", i+1);
    		scanf("%f", &grades[i].c_len);
    		printf("\t请输入第%d名同学的高数成绩:", i+1);
    		scanf("%f", &grades[i].math);
    		printf("\t请输入第%d名同学的英语成绩:", i+1);
    		scanf("%f", &grades[i].eng);
    		printf("\t请输入第%d名同学的体育成绩:", i+1);
    		scanf("%f", &grades[i].PE);
    	}
    	printf("\t*成绩录入成功*\n");
    }
    
    void average(struct grade_list grades[], int n)			//定义计算学生平均值 
    {
    	int i;
    	float result;
    	for(i=0;i<n;i++)
    	{
    		result=(grades[i].c_len+grades[i].math+grades[i].eng
    		+grades[i].PE)/4;
    		printf("\t%s的平均成绩为%.2f\n",grades[i].name, result);	
    	}
    }
    
    void average_subject(struct grade_list grades[], int n)	//定义计算学科平均分 
    {
    	printf("\tC语言\t高数\t英语\t体育\n");
    	int i;
    	float result=0.0;
    	for(i=0;i<n;i++)
    	{
    		result+=grades[i].c_len;
    	}
    	printf("\t%.2f", result/n);
    	result=0;
    	for(i=0;i<n;i++)
    	{
    		result+=grades[i].math;
    	}
    	printf("\t%.2f", result/n);
    	result=0;
    	for(i=0;i<n;i++)
    	{
    		result+=grades[i].eng;
    	}
    	printf("\t%.2f", result/n);
    	result=0;
    	for(i=0;i<n;i++)
    	{
    		result+=grades[i].PE;
    	}
    	printf("\t%.2f\n", result/n);
    }
    
    void find(struct grade_list grades[], int n)			//定义循环成绩查询函数 
    {
    	int i,trigger;
    	char in_name[10];
    	
    	do{
    		printf("\t请输入要查询的学生姓名:");
    		scanf("%s", in_name);
    		int chack=0;
    		for(i=0;i<n;i++)
    		{
    			if(strcmp(in_name,grades[i].name)==0)
    			{
    				printf("\t%s的成绩为:\n\n",grades[i].name);
    				printf("\tC语言\t高数\t英语\t体育\n");
    				printf("\t%.2f\t%.2f\t%.2f\t%.2f\n\n", grades[i].c_len,grades[i].math,grades[i].eng,grades[i].PE); 
    				chack=1;
    			}
    					 
    		}
    		if(chack==0) printf("\t*查无此人*\n\n"); 
    		printf("\t继续查询请输入1,否则输入0返回功能选择界面:");
    		scanf("%d", &trigger);
    	}while(trigger==1);
    } 
    
    void change(struct grade_list grades[], int n)			//定义成绩修改函数 
    {
    	int i,trigger;
    	char ch_name[10];
    	
    	do{
    		int chack=0; 
    		printf("\t请输入要修改成绩的学生姓名:");
    		scanf("%s", ch_name);
    		for(i=0;i<n;i++)
    		{
    			if(strcmp(ch_name,grades[i].name)==0)
    			{
    				printf("\t请输入该同学修改后的成绩:\n\tC语言:");
    				scanf("%f", &grades[i].c_len);
    				printf("\t高数:");
    				scanf("%f", &grades[i].math);
    				printf("\t英语:");
    				scanf("%f", &grades[i].eng);
    				printf("\t体育:");
    				scanf("%f", &grades[i].PE);
    				chack=1;
    				printf("\t*修改成功*\n");
    			}		 
    		}
    		if(chack==0) printf("\t*查无此人*\n\n");
    		printf("\t继续修改请输入1,否则输入0返回功能选择界面:");
    		scanf("%d", &trigger);
    	}while(trigger==1);
    }
    
    展开全文
  • C语言开发简单的学生成绩管理系统(附源码)

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

    学生成绩管理系统

    开发语言:C语言
    开发工具:Visual Studio 2019
    开发时间:2019.4.14
    开发者:summer
    CSDN源码下载:C语言开发简单的学生成绩管理系统
    Github项目源码下载:C语言开发简单的学生成绩管理系统
    百度网盘源码下载:链接:https://pan.baidu.com/s/1nF53PtRtbuFCNvG7hfylPw 提取码:ar5g

    @一、系统使用展示

    @二、系统功能

    @三、菜单

    @四、录入学生信息

    @五、打印学生信息

    @六、保存学生信息

    @七、读取学生信息

    @八、统计所有学生人数

    @九、查找学生信息

    @十、修改学生信息

    @十一、删除学生信息

    @十二、退出系统

    @十三、出错

    一、系统使用展示

    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");    //清屏
    

    展开全文
  • 程序设计基础实训 项目名称 学生学分管理 系 别 计算机...本程序为学生学分管理系统本程序根据现实中的问题通过c语言形式编程本程序要求能够登记学分显示学分查询学分修改学分删除学分统计学分 二程序功能描述 描述基本
  • C语言学生成绩统计系统

    千次阅读 2016-11-09 22:40:21
    该程序可以输入学生成绩,计算平均成绩和及格率,以及查找学生成绩和修改学生成绩,输入所需功能对应的数字再按回车键即可,效果如下 : 看起来还不错吧,代码如下: #include void main() { int sel,i=0,x,...

    第一次发博客,也是个初学者,很多只是一知半解,如果有说错的地方,希望大家可以告诉我,我多多努力改正。

    该程序可以输入学生成绩,计算平均成绩和及格率,以及查找学生成绩和修改学生成绩,输入所需功能对应的数字再按回车键即可,效果如下





    看起来还不错吧大笑,代码如下:

    #include<stdio.h>
    void main()
    {
    int sel,i=0,x,y,n;
    double sum,ave=1,count=0,a[999];
    do
    {
    printf("\n");
    printf("\t************************************\n");
    printf("\t*    ===========================   *\n");
    printf("\t*          学生成绩统计系统        *\n");
    printf("\t*    ===========================   *\n");
    printf("\t*                                  *\n"); 
    printf("\t*     输入学生成绩---------1       *\n");
    printf("\t*     统计平均成绩---------2       *\n");
    printf("\t*     统计及格率-----------3       *\n");
    printf("\t*     查找学生成绩---------4       *\n");
    printf("\t*     修改学生成绩---------5       *\n");
    printf("\t*     退出系统-------------6       *\n");
    printf("\t*                                  *\n");
    printf("\t************************************\n");
    printf("\t请输入选项(1-6):");
    scanf("%d",&sel);
    switch(sel)
    {
    case 1:
    printf("执行输入学生成绩命令。\n");
    printf("\t请输入学生人数(0-999):");
    scanf("%d",&n);
    printf("\t\t学号\t成绩\n");
    do
    {
    printf("\t\t[%d]\t",i+1);
    scanf("%lf",&a[i]);
    i++;
    }while(i<n);
    break;
    case 2:
    printf("执行统计平均成绩命令。\n");
    sum=0;
    for(i=0;i<n;i++)
    sum+=a[i];
    ave=sum/n;
    printf("平均成绩为%.1f\n",ave);
    break;
    case 3:
    printf("执行统计及格率命令。\n");
    for(i=0;i<n;i++)
    if(a[i]>=60)
    count++;
    printf("及格率为%.1f%%\n",count/n*100);
    break;
    case 4:
    printf("执行查找学生成绩命令。\n");
    do
    {
    printf("请输入需查找的学生的学号(输入非法数据退出):");
    scanf("%d",&x);
    if(x>0&&x<=n)
    printf("\t[%d]\t%.1f\n",x,a[x-1]);
    else
    break;
    }while(1);
    break;
    case 5:
    printf("执行修改学生成绩命令。\n");
    do
    {
    printf("请输入需修改的学生的学号(输入非法数据退出):");
    scanf("%d",&y);
    if(y>0&&y<=n)
    {
    printf("\t[%d]\t%.1f\n",y,a[y-1]);
    printf("\t请输入改动后的分数:");
    scanf("%lf",&a[y-1]);
    }
    else
    break;
    }while(1);
    break;
    case 6:
    printf("退出系统。\n");
    break;
    default:
    printf("输入错误!\007\n");
    break;
    }
    }while(sel>0&&sel!=6);
    }


    复制即可用,不必修改由***组成的边框,显示不对,但是在vc中没问题。

    展开全文
  • 学生成绩统计管理系统 C 语言数据结构课程作品 指导老师 学生 学号 班级 一代码 #include "stdafx.h" #include <stdio.h> #include <malloc.h> #include <memory.h> #include <string.h> #include <conio.h> #...
  • C语言进阶 (一)前言: 在学习c语言基础语法后我们需要通过...(二)题目要求:学生成绩统计系统实现 设计结构体数组,结构中包含学生数据为:学号、姓名、物理分数、数学分数、外语分数、计算机分数。 设...
  • C语言 学生成绩统计及学籍管理系统 萌新第一次做的C语言大作业,所做内容与题目要求略有不同,添加了在输入成绩时禁止输入字母和负数的程序,添加了在输入成绩时禁止大于100分的程序,首次使用需要先添加一个保存...
  • 学生成绩管理程序 编制一个统计学生考试分数的管理程序。 设学生成绩已以一个学生一个记录的形式存储在文件中, 每位学生记录包含的信息有:姓名,学号和各门功课的成绩。 程序具有以下几项功能:求出各门课程的总分...
  • 使用单链表实现学生成绩管理系统,并以文件的形式打开和保存, 1.建立成绩表,实现增删改查功能, 2.按任一科排序 3.计算每名学生的平均成绩 4.统计不及格同学的人数,输出不及格的名单 5.统计平均成绩并排序,统计...
  • 设计一个学生成绩管理系统系统功能需求: (1)输入学生的信息,包含学号、姓名、性别等基本信息和各课成绩(C语言,高等数学,线性代数); (2)显示全部学生各科成绩信息; (3)对各科成绩统计分析(总分、...
  • C语言实现学生成绩管理系统

    万次阅读 多人点赞 2017-09-20 23:41:31
    C语言实现学生成绩管理系统V1.0某班有最多不超过30人(具体人数由键盘输入),参加某门课程的考试,实现如下学生成绩管理: 录入每个学生的学号和考试成绩 计算课程的总分和平均分 按成绩由高到低排出名次表 按学号...
  • 程序以单链表形式实现,主要以函数调用形式,及文件读取。主要功能有:输入记录模块、查询模块、更新记录模块、统计记录模块、输出记录模块。 我用的编译环境是vs2012 希望对部分人有用,请大家提意见。

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 217
精华内容 86
关键字:

学生成绩统计系统c语言

c语言 订阅