精华内容
下载资源
问答
  • 学生学分管理系统 说明 需要在代码同一级目录下添加administrator.txt(存储管理员用户名与密码),point_table.txt(存储所有加分项名称与分值),student.txt(存储所有学生基本信息),credit.txt(存储所有...

    学生学分管理系统

    • 说明

      需要在代码同一级目录下添加administrator.txt(存储管理员用户名与密码),point_table.txt(存储所有加分项名称与分值),student.txt(存储所有学生基本信息),credit.txt(存储所有加分信息:加分学生学号与加分项名称),存储方式如下所示:
      • administrator.txt
        john john12345
        jason jason875981
        lilly lilly228751  
        
      • point_table.txt
        国际级竞赛一等奖 5
        国际级竞赛二等奖 4
        国际级竞赛三等奖 3
        国家级竞赛一等奖 4
        国家级竞赛二等奖 3
        国家级竞赛三等奖 2
        省部级竞赛一等奖 3
        省部级竞赛二等奖 2
        省部级竞赛三等奖 1
        学校级竞赛一等奖 2
        学校级竞赛二等奖 1
        学校级竞赛三等奖 0.5
        班长 1.5
        学习委员 1
        副班长 0.1
        国家级三好学生 20
        省级三好学生 10
        市级三好学生 7
        校级三好学生 5
        年级三好学生 2
        
      • student.txt
        张一 1 19 计科 20170001
        张二 1 19 计科 20170002
        张三 0 18 网安 20170003
        张四 0 19 计科 20170004
        张五 1 18 物联网 20170005
        张六 0 18 网安 20170006
        
      • credit.txt
        20170001 国际级竞赛一等奖
        20170002 国际级竞赛二等奖
        20170002 市级三好学生
        20170002 学校级竞赛一等奖
        20170003 省部级竞赛二等奖
        20170004 省级三好学生
        20170004 班长
        20170005 国家级三好学生
        20170005 省级三好学生
        20170006 市级三好学生
        
    • 代码

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    //管理员结构体
    typedef struct admin{
    	char name[50]; //用户名
    	char pass[50]; //密码
    	struct admin * next; //链表,指针指向下一个元素
    }admin;
    
    //存储所有加分项
    typedef struct point{
    	char name[50]; //加分项名称
    	float score; //分值
    	struct point *next;  //链表,指针指向下一个元素
    }point;
    //存储每一个同学的所有加分项
    typedef struct record{
    	char name[50];  
    	struct record * next;
    }record;
    
    //存储所有学生
    typedef struct student{
    	char name[50];  //姓名
    	int sex; //0为男生, 1为女生
    	int age; //年龄
    	char major[50];  //专业
    	char number[50]; //学号
    	float score; //总学分
    
    	record * head; //获奖记录
    	struct student * next; //下一个学生
    }student;
    
    //读取所有管理员账号的用户名与密码
    void read_admin(admin **head) {
    	char name[50],pass[50]; //姓名,密码
    	admin * cur; //用于记录链表末端元素的指针
    	FILE *fp = fopen("administrator.txt","r");
    	if(fp == NULL) {  //同级目录下没有该文件
    		*head = NULL;
    		printf(":: 文件administrator.txt 不存在!\n");
    		return;
    	}
    	while(fscanf(fp, "%s %s",name,pass) != EOF) {  //读到缓存name,pass数组中
    		if(*head == NULL) {  //链表为空
    			*head = (admin*)malloc(sizeof(admin)); //新建一个空间
    			strcpy((*head) -> name, name);  //拷贝到链表中
    			strcpy((*head) -> pass, pass);
    			(*head) -> next = NULL;
    			cur = *head; //记录末端元素
    		}else{
    			cur -> next = (admin*)malloc(sizeof(admin));
    			strcpy(cur -> next -> name,name); //拷贝到到链表中
    			strcpy(cur -> next -> pass,pass);
    			cur -> next -> next = NULL; //标记末指针的下一个元素的指针为空
    			cur = cur -> next;
    		}
    	}
    }
    
    //读取所有加分项
    void read_point(point **add) { //二级指针
    	char name[50];  //临时存储
    	float score;
    	point * cur;
    	FILE *fp = fopen("point_table.txt","r");
    	if(fp == NULL) {
    		*add = NULL;
    		printf(":: 文件point_table.txt 不存在!\n");
    		return;
    	}
    	while(fscanf(fp, "%s %f",name, &score) != EOF) {
    		if(*add == NULL) {
    			*add = (point*)malloc(sizeof(point));
    			strcpy((*add) -> name, name);
    			(*add) -> score = score;
    			(*add) -> next = NULL;
    			cur = *add;
    		}else{
    			cur -> next = (point*)malloc(sizeof(point));
    			strcpy(cur -> next -> name,name);
    			cur -> next -> score = score;
    			cur -> next -> next = NULL;
    			cur = cur -> next;
    		}
    	}
    }
    
    //输出所有管理员信息(调试)
    void print_admin(admin *head) {
    	printf("用户名\t密码\n");
    	while(head != NULL) {
    		printf("%s\t%s\n",head -> name,head -> pass);
    		head= head->next;
    	}
    }
    
    //检查输入的账户是否合法,返回-1代表无此用户,0代表密码不正确,1代表正确
    int check_admin(admin *head, char name[],char pass[]) {
    	int exist = 0;
    	int pass_ok = 0;
    	while(head != NULL) {
    		if(strcmp(head -> name, name) == 0) {  //如果用户名与输入相同
    			exist = 1;
    			if(strcmp(head -> pass, pass) == 0) { //密码正确
    				pass_ok = 1;
    			}
    			break;
    		}
    		head = head->next;
    	}
    	if(exist == 0) return -1; //用户不存在
    	else if(pass_ok == 0) return 0; //密码不对
    	else return 1;  //正确
    } 
    
    //从文件读取所有学生信息
    void read_student(student **head) {
    	FILE *fp = fopen("student.txt","r");
    	if(fp == NULL) {
    		*head = NULL;
    		printf(":: 文件student.txt 不存在!\n");
    		return;
    	}
    	char name[50];
    	char number[50];
    	char major[50];
    	int sex,age;
    
    	student *cur;
    	while(fscanf(fp, "%s %d %d %s %s",name, &sex, &age, major, number) != EOF) {
    		if(*head == NULL) {
    			*head = (student *) malloc(sizeof(student));
    			strcpy((*head) -> name,name);
    			strcpy((*head) -> major,major);
    			strcpy((*head) -> number,number);
    			(*head) -> sex = sex;
    			(*head) -> age = age;
    			(*head) -> next = NULL;
    			(*head) -> head = NULL;
    			(*head) -> score = 0;
    			cur = *head;
    		}else{
    			cur -> next = (student *)malloc(sizeof(student));
    			strcpy(cur -> next -> name, name);
    			strcpy(cur -> next -> major, major);
    			strcpy(cur -> next -> number, number);
    			cur -> next -> sex = sex;
    			cur -> next -> age = age;
    			cur -> next -> head = NULL;
    			cur -> next -> next = NULL;
    			cur -> next -> score = 0;
    			cur = cur -> next;
    		}
    	}
    }
    
    //依据加分项名称获得加分数值
    float get_add_score(point *add, char name[]) {
    	while(add != NULL) {
    		if(strcmp(add -> name, name) ==0) return add -> score; //找到学生并返回姓名
    		add = add -> next;
    	}
    	return 0;
    }
    
    //输出单个学生的所有加分项信息
    void print_student_point_list(student *stu, point *add) {
    	if(stu -> head == NULL) {
    		printf(":: 无加分项!\n");
    	}else{
    		record *cur = stu -> head; // 学生stu的获奖记录
    		printf("名称\t分值\n");
    		while(cur != NULL) { //遍历链表直到末尾
    			printf("%s\t%.1f\n",cur -> name, get_add_score(add, cur -> name));
    			cur = cur->next;  //指针改成下一个
    		}
    		printf("\n");
    	}
    }
    
    //输出单个学生基本信息及加分项信息
    void print_student(student *stu, point *add){
    	printf("姓名\t学号\t\t性别\t年龄\t专业\t学分\n");
    	printf("%s\t%s\t%s\t%d\t%s\t%.1f\n", stu -> name, stu -> number, stu -> sex ==0?"男":"女", stu ->age,stu->major,stu->score);
    	printf("\n具体加分项信息:\n");
    	print_student_point_list(stu, add);
    }
    
    //输出所有学生基本信息
    void print_all_student(student *stu){
    	printf("姓名\t学号\t\t性别\t年龄\t专业\t学分\n");
    	while(stu != NULL) {
    		printf("%s\t%s\t%s\t%d\t%s\t%.1f\n", stu -> name, stu -> number, stu -> sex ==0?"男":"女", stu ->age,stu->major,stu->score);
    		stu = stu -> next;
    	}
    }
    
    //输出所有加分项信息
    int print_score_list(point *add) {
    	printf("序号\t加分名称\t分值\n");
    	int index =0;
    	while(add!=NULL) {
    		printf("%d\t%s\t%.1f\n",index++,add->name,add->score);
    		add = add -> next;
    	}
    	printf("\n");
    	return index;
    }
    
    //依据加分项编号获得加分项指针
    point * get_point(point *add,int index) {
    	int i = 0;
    	point *res=add;
    	while(i<index) { //查找第i个加分项
    		res =res->next; //下一个
    		i++;
    	}
    	return res;
    }
    //依据学号找到学生指针
    student * find_student(student *head, char number[]) {
    	while(head != NULL) {
    		if(strcmp(head -> number, number) == 0) break; //找到该学号学生
    		head = head -> next;
    	}
    	return head;
    }
    //给学生stu添加名为name的加分项
    void add_credit(student * stu, point * add,char name[]) {
    	record *r = stu -> head, *cur = NULL;
    	if(r == NULL) {
    		stu -> head = (record *)malloc(sizeof(record)); // 初始化头节点指针
    		strcpy(stu -> head -> name, name);
    		stu -> head -> next = NULL;
    		//printf("%s %.1f\n",name,get_add_score(add, name));
    		stu -> score += get_add_score(add, name);  //将该项学分驾到学生头上
    		cur = stu -> head;
    	}else{
    		while(r -> next !=NULL) {
    			r = r -> next;
    		} // 找到链表末尾元素
    		r -> next = (record *)malloc(sizeof(record)); //新建空间
    		strcpy(r -> next -> name, name);
    		r -> next -> next = NULL;
    		//printf("%s %.1f\n",name,get_add_score(add, name));
    		stu -> score += get_add_score(add, name);
    	}
    }
    //读取所有学生已有的加分项
    void read_credit(student *head, point * add) {
    	FILE *fp = fopen("credit.txt", "r");
    	if(fp == NULL) {
    		printf(":: 文件credict.txt 不存在!\n");
    		return;
    	}
    	char number[50];
    	char name[50];
    
    	while(fscanf(fp, "%s %s",number, name) != EOF) {
    		student *cur = find_student(head, number);
    		//printf("%s\n",cur->name);
    		add_credit(cur, add, name);  //添加该奖项
    	}
    }
    
    //录入信息,可以从文件中录入,也可以从键盘录入(包括录入学生基本信息即添加学生、录入学生学分信息即添加加分信息)
    void input(student **stu, point **add) {
    	printf("**************** 信息录入 ******************\n");
    	printf("************* 1. 从文件录入 *****************\n");
    	printf("************* 2. 从键盘录入 *****************\n");
    	printf("*******************************************\n");
    	int opt;
    	printf("-> 请输入您的选择: ");
    	scanf("%d",&opt);
    	if(opt == 1) {
    		read_point(add);
    		read_student(stu);
    		//printf("student ok!\n");
    		read_credit(*stu,*add);
    		//printf(":: 成功从文件读取信息!\n");
    		print_all_student(*stu);
    	}else if(opt == 2) {
    		printf("************** 键盘信息录入 ********************\n");
    		printf("************ 1. 录入同学信息 *******************\n");
    		printf("************ 2. 录入学分信息 *******************\n");
    		printf("**********************************************\n");
    		printf("-> 请输入您的选择: ");
    		int opt1;
    		scanf("%d",&opt1);
    		if(opt1==1) {  //添加学生
    			student *tmp = (student *)malloc(sizeof(student));
    			printf("-> 请输入姓名: ");
    			scanf("%s",tmp->name);
    
    			printf("-> 请输入学号: ");
    			scanf("%s",tmp->number);
    
    			printf("-> 请输入性别(0代表男生,1代表女生): ");
    			scanf("%d",&tmp->sex);
    
    			printf("-> 请输入年龄: ");
    			scanf("%d",&tmp->age);
    
    			printf("-> 请输入专业: ");
    			scanf("%s",tmp->major);
    
    			tmp -> score = 0;
    			tmp -> head = NULL;
    			tmp -> next = NULL;
    
    			if(*stu == NULL) {
    				*stu = tmp;
    			}else{
    				student *cur = (*stu);
    				while(cur -> next != NULL) cur = cur -> next; //找到末元素
    				cur -> next = tmp; //添加到末元素之后
    			}
    			printf(":: 添加成功!\n");
    		}else if(opt1 == 2) {  //添加学分信息
    			int n =print_score_list(*add);
    			char number[50];
    			printf("-> 请输入学号: ");
    			scanf("%s",number);
    			student *cur = find_student(*stu, number);  //找到该学生的指针
    			if(cur == NULL) {
    				printf(":: 无此学生!\n");
    			}else{
    				int index;
    				print_student(cur, *add);  //输出所有加分项
    				printf("-> 请输入加分项ID: ");
    				scanf("%d",&index);  //选择加分项
    				if(index>=0&&index<n){
    					point *res=get_point(*add,index);  //查找加分项
    					add_credit(cur, *add, res->name);  //添加加分项
    					printf(":: 添加成功!\n");
    				}else{
    					printf(":: 加分项ID应大于等于0小于%d\n",n);
    				}
    			}
    		}else{
    			printf("输入有误!\n");
    		}
    	}else{
    		printf(":: 输入有误!\n");
    	}
    }
    //查询信息,可以查询个人的基本信息及所有加分信息,也可以查询每个专业的排名信息
    void search(student *stu, point *add) {
    	printf("********************* 信息查询 **********************\n");
    	printf("******************* 1. 个人信息查询 ******************\n");
    	printf("******************* 2. 专业信息查询 ******************\n");
    	printf("****************************************************\n");
    	int opt;
    	printf("-> 请输入您的选择: ");
    	scanf("%d",&opt);
    	if(opt == 1) {
    		char number[50];
    		printf("-> 请输入学号: ");
    		scanf("%s",number);
    		student *cur = find_student(stu, number);
    		if(cur == NULL) {
    			printf(":: 无此学生!\n");
    		}else{
    			print_student(cur,add);
    		}
    	} else if(opt == 2) {
    		char major[50];
    		printf("-> 请输入专业名称: ");
    		scanf("%s",major);
    		student s[10005];
    		int tot = 0,i,j;
    		student *head = stu;
    		while(head != NULL) {
    			if(strcmp(head -> major, major) == 0) {  //找到该专业的学生,加入数组
    				s[++tot] = *head;
    			}
    			head = head -> next;
    		}
    		for(i=1;i<=tot;i++) {  //按照总学分排序
    			for(j=i+1;j<=tot;j++) {
    				if(s[i].score < s[j].score) {
    					student tmp =s[i];
    					s[i] = s[j];
    					s[j] = tmp;
    				}
    			}
    		}
    		printf("姓名\t学号\t\t性别\t年龄\t专业\t学分\n");
    		for(i=1;i<=tot;i++) {
    			printf("%s\t%s\t%s\t%d\t%s\t%.1f\n", s[i].name, s[i].number, s[i].sex ==0?"男":"女", s[i].age, s[i].major, s[i].score);
    		}
    
    	}else{
    		printf(":: 输入有误!\n");
    	}
    }
    //修改信息,即修改学生基本信息
    void modify(student *stu, point *add) {
    	printf("********************* 个人信息修改 **********************\n");
    	char number[50];
    	printf("-> 请输入待修改学生学号: ");
    	scanf("%s",number);
    	student *cur = find_student(stu, number);  //找到该学生
    	if(cur == NULL) {
    		printf(":: 无此学生!\n");
    	}else{
    		int ok = 1;
    		printf("-> 确认修改 %s 同学信息?(0表示取消修改,1确认): ",cur->name);
    		scanf("%d",&ok);
    		if(ok==0) {
    			printf(":: 成功取消修改!\n");
    		}
    		else{
    			printf("-> 请重新输入姓名: ");
    			scanf("%s",cur->name);
    
    			printf("-> 请重新输入学号: ");
    			scanf("%s",cur->number);
    
    			printf("-> 请重新输入性别(0代表男生,1代表女生): ");
    			scanf("%d",&cur->sex);
    
    			printf("-> 请重新输入年龄: ");
    			scanf("%d",&cur->age);
    
    			printf("-> 请重新输入专业: ");
    			scanf("%s",cur->major);
    			printf(":: 修改成功!\n");
    		}
    		
    	}
    }
    //删除信息,可以删除学生基本信息即删除学生,也可以删除学分信息
    void dele(student **stu,point **add) {
    	printf("********************* 信息删除 **********************\n");
    	printf("******************* 1. 个人信息删除 ******************\n");
    	printf("******************* 2. 学分信息删除 ******************\n");
    	printf("****************************************************\n");
    	int opt,i,j;
    	printf("-> 请输入您的选择: ");
    	scanf("%d",&opt);
    	if(opt == 1) {
    		char number[50];
    		printf("-> 请输入学号: ");
    		scanf("%s",number);
    		student *cur = *stu;
    		if(cur == NULL) {
    			printf(":: 无此学生!\n");
    		}else{
    			if(strcmp(cur -> number, number) == 0) {  //该学生处在链表头部(这种情况需要修改头部指针)
    				int ok = 1;
    				printf("-> 确认删除 %s 同学信息?(0表示取消删除,1确认): ",cur->name);
    				scanf("%d",&ok);
    				if(ok==0) {
    					printf(":: 成功取消删除!\n");
    				}
    				else{
    					*stu = cur->next;  //修改头部指针为下一个
    					printf(":: 删除成功!\n"); 
    					print_all_student(*stu); //输出删除后的所有学生
    					free(cur);
    				}
    					
    				return;
    			}
    			while(cur -> next !=NULL) {
    				if(strcmp(cur -> next -> number, number) == 0) break;  //找到该学生
    				cur = cur -> next;
    			}
    			if(cur->next==NULL) {
    				printf(":: 无此学生!\n");
    			}else{
    				int ok = 1;
    				printf("-> 确认删除 %s 同学信息?(0表示取消删除,1确认): ",cur-> next -> name);
    				scanf("%d",&ok);
    				if(ok==0) {
    					printf(":: 成功取消删除!\n");
    				}
    				else{
    					cur -> next = cur -> next -> next;  //在链表中删除该学生
    					printf(":: 删除成功!\n");
    					print_all_student(*stu);
    				}
    				
    			}
    		}
    	} else if(opt == 2) {
    		char number[50];
    		printf("-> 请输入学号: ");
    		scanf("%s",number);
    		student *cur = find_student(*stu, number);
    		if(cur == NULL) {
    			printf(":: 无此学生!\n");
    		}else{
    			record *head = cur -> head;  //记录的头指针
    			print_student_point_list(cur, *add);  //打印该学生所有已有加分项
    			printf("-> 请输入奖项名称: ");
    			char name[50];
    			scanf("%s",name);
    			if(strcmp(head -> name, name) == 0) {  //待删除的记录在链表头部,要修改头节点指针
    				int ok = 1;
    				printf("-> 确认删除?(0表示取消删除,1确认): ");
    				scanf("%d",&ok);
    				if(ok==0) {
    					printf(":: 成功取消删除!\n");
    				}
    				else{
    					cur -> head = cur -> head -> next;
    					cur -> score -= get_add_score(*add, head -> name);
    					printf(":: 删除成功!\n");
    					print_student_point_list(cur, *add);
    				}
    			}
    
    			while(head -> next != NULL) {  //找到待删除的指针
    				if(strcmp(head -> next -> name,name) == 0) {
    					break;
    				}
    			}
    			if(head -> next == NULL) {
    				printf(":: 无此加分项!\n");
    
    			}else{
    				int ok = 1;
    				printf("-> 确认删除?(0表示取消删除,1确认): ");
    				scanf("%d",&ok);
    				if(ok==0) {
    					printf(":: 成功取消删除!\n");
    				}
    				else{
    					
    					cur -> score -= get_add_score(*add, head -> next -> name);  //从总学分中减去删除的项的学分
    					head -> next = head -> next -> next;  //删除该记录
    					printf(":: 删除成功!\n");
    					print_student_point_list(cur, *add);//输出删除后的该学生的所有记录
    				}
    			}
    		}
    
    	}else{
    		printf(":: 输入有误!\n");
    	}
    }
    //存储所有信息
    void save_data(student *stu) {
    	FILE *fp_stu = fopen("student.txt", "w");
    	FILE *fp_cre = fopen("credit.txt", "w");
    	while(stu != NULL) {
    		fprintf(fp_stu, "%s %d %d %s %s\n", stu -> name, stu -> sex ,stu -> age, stu -> major, stu -> number);
    		record *r = stu -> head;
    		while(r != NULL) {
    			fprintf(fp_cre, "%s %s\n", stu -> number, r -> name);
    			r = r -> next;
    		}
    		stu = stu -> next;
    	}
    	printf(":: 保存成功!\n");
    	fclose(fp_stu);
    	fclose(fp_cre);
    }
    
    
    
    int main() {
    	student *students = NULL;
    	point *add = NULL;
    	admin *admi = NULL;
    
    	char input_name[50];
    	char input_password[50];
    
    	read_admin(&admi);
    	if(admi != NULL) {
    
    		printf("-> 请输入用户名: ");
    		scanf("%s",input_name);
    		printf("-> 请输入密码: ");
    		scanf("%s",input_password);
    
    		int check = check_admin(admi,input_name,input_password);
    		if(check == -1) return printf(":: 用户名称不存在!\n"),0;
    		else if(check == 0) return printf(":: 密码错误!\n"), 0;
    		else printf(":: 登陆成功!\n");
    	}
    
    	while(1) {
    		printf("********************************* 大学学分管理系统 ***********************************\n");
    		printf("*********************************   1. 信息录入   ***********************************\n");
    		printf("*********************************   2. 信息查询   ***********************************\n");
    		printf("*********************************   3. 信息修改   ***********************************\n");
    		printf("*********************************   4. 信息删除   ***********************************\n");
    		printf("*********************************   5. 保存信息   ***********************************\n");
    		printf("*********************************   6. 安全退出   ***********************************\n");
    		printf("***********************************************************************************\n\n");
    
    		printf("-> 请输入您的选择: ");
    		int opt;
    		scanf("%d",&opt);
    		if(opt == 1) {
    			input(&students, &add);
    			getchar();  //换行确认
    			getchar();
    		}else if(opt == 2) {
    			search(students,add);
    			getchar();
    			getchar();
    		}else if(opt == 3) {
    			modify(students,add);
    			getchar();
    			getchar();
    		}else if(opt == 4) {
    			dele(&students,&add);
    			getchar();
    			getchar();
    		}else if(opt == 5){
    			save_data(students);
    			getchar();
    			getchar();
    		}else if(opt == 6){
    			save_data(students);
    			break;
    		}else{
    			printf(":: 输入有误!\n");
    		}
    	}
    }
    
    展开全文
  • C语言学生成绩管理系统源代码

    万次阅读 多人点赞 2018-03-21 20:27:20
    大学C语言实训课,C语言学生成绩管理系统。 #include<stdio.h> #include<string.h> #include<math.h> struct student { int num; char name[20]; float pingshi; float shiyan; ...

    分享:C语言学生成绩管理系统设计 《C语言程序设计》实训报告

    点击查看 ----> C语言学生成绩管理系统(课程设计报告书)

    扫描下方公众号,发送 成绩系统 4个字,获取下载源码

    扫描上方二维码,回复 999 直接获取作者之前收藏的学习资源,谢谢网友们的分享。

    回复 系统大全,即可获得关于C语言管理系统比较全面的文章内容,覆盖全网(有点夸张,但仍在更新补充中)

    以后有时间再给大家继续分享,有任何问题欢迎留言区交流。

    大学C语言实训课,C语言学生成绩管理系统。

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    struct student
    	{
    		int num;
    		char name[20];
    		float pingshi;
    		float shiyan;
    		float kaoshi;
    		double zongping;
    	}stu[4];
    void main()
    {
    	void a();
    	void b();
    	void c();
    	void d();
    	void e();
    	int n;
    	while(n!=6)
    	{	printf("\t大学计算机基础成绩管理系统\n");
    		printf("1:输入一个班学生大学计算机基础成绩记录\n");
    		printf("2:显示所有成绩记录\n");
    		printf("3:计算并输出平均成绩,均方差\n");
    		printf("4:输出成绩与排名\n");
    		printf("5:结果存入文件chengji.txt\n");
    		printf("6:退出系统\n");
    		printf("输入选项代码:");
    		scanf("%d",&n);
    		switch(n)
    		{
    			case 1:a();break;
    			case 2:b();break;
    			case 3:c();break;
    			case 4:d();break;
    			case 5:e();break;
    			case 6:printf("\n*******************谢谢使用!*******************\n");break;
    			break;    
    		}	
    	}
    getchar();
    }
    /* 子  函  数*/
    void a() /* 输入一个班的学生记录*/
    
    {
    	int i;
    
    	for(i=0;i<4;i++)
    
    	{   
    
    		printf("请输入学号 姓名 平时成绩 实验成绩 考试成绩:");
    
    		scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].pingshi,&stu[i].shiyan,&stu[i].kaoshi);
    		
    	}for(i=0;i<4;i++)
    stu[i].zongping=0.1*stu[i].pingshi+0.3*stu[i].shiyan+0.6*stu[i].kaoshi;
    }
    void b()/* 显示所有记录*/
    
    {
    	int i;
    
    	printf("学号        姓名       平时成绩       实验成绩      考试成绩     总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		printf("%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping);
    
    }
    
    void c()/* 求出全班平均成绩,显示均方差*/
    {  
    	int a[4]={0,1,2,3};
        int i,j;
        double total=0,pfc=0,bzc=0;
        double ave;
        for(i=0;i<4;i++)
    	{
    		total=total+stu[i].zongping;
    	}
        ave=total/4.0;
        printf("总评平均成绩是%f\n",ave);
    	for(i=0;i<4;i++)
    	{
    		pfc=pow((stu[i].zongping-ave),2)/4;
    	}
    	bzc=sqrt(pfc);
    	printf("\n平方差是%f\n",pfc);
    	printf("\n标准差是%f\n",bzc);
    }
    void d()
    
    {
    	int a[4]={0,1,2,3};
    	int i,j,temp;
    	for(j=0;j<3;j++)
    	{
    		for(i=0;i<3-j;i++)
    		if(stu[a[i]].zongping>stu[a[i+1]].zongping)
    		{	
    			temp=a[i];a[i]=a[i+1];
    			a[i+1]=temp;
    
    		}
    	}
    
    	printf("顺序为:\n");
    
    	printf("学号     姓名      总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		printf("%d%10.2s%15.2f\n",stu[a[i]].num,stu[a[i]].name,stu[a[i]].zongping);
    
    	printf("\n");
    
    }
    
    void e()
    {int i;
    FILE *fp;
    fp=fopen("chengji.txt","w");
    
    	fprintf(fp,"学号        姓名       平时成绩       实验成绩      考试成绩     总评成绩\n");
    
    	for(i=0;i<4;i++)
    
    		fprintf(fp,"%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping);
    
    printf("\n\n*******************恭喜,保存完成!*******************\n\n");
    }
    

    简单记录。

    关注微信公众号“资料在线”,回复“C语言源码”,即可获得C语言源码包

    更多资源等着你

    最新文章:

    0、C语言学生成绩管理系统(课程设计报告书)★★★

    1、 C语言学生成绩管理系统源代码 ★★★★★

    2、 C语言学籍管理系统源代码 ★★

    3、C语言学生成绩管理系统设计 《C语言程序设计》实训报告 ★★★

    4、C语言学生信息管理系统源代码 ★★★★

    展开全文
  • c语言课程设计-学生学分管理程序程序设计基础实训项目名称:学生学分管理系 别: 计算机工程系专 业: 计算机网络技术班 级: 0922211学生姓名:指导教师:北 京 信 息 职 业 技 术 学 院2010年 1 月 日一、项目背景...

    c语言课程设计-学生学分管理程序

    程序设计基础实训

    项目名称:

    学生学分管理

    系 别: 计算机工程系

    专 业: 计算机网络技术

    班 级: 0922211

    学生姓名:

    指导教师:

    北 京 信 息 职 业 技 术 学 院

    2010年 1 月 日

    一、项目背景介绍

    (概要介绍此项目设计的意义和要求)

    本程序为学生学分管理系统。本程序根据现实中的问题通过c语言形式编程。本程序要求能够登记学分,显示学分查询学分,修改学分,删除学分,统计学分。

    二、程序功能描述:

    (描述基本程序中每个函数的功能,给处各函数流程图)

    1、

    登记单流程图

    2、

    显示学分流程图

    3、

    查询学分流程图

    4、

    修改信息流程图

    5、

    删除信息流程图

    6、

    统计信息流程图

    三、设计方案介绍

    (基本思想函数调用的思路介绍)

    1、主流程图

    2、界面设计

    (界面设计,函数的定义,功能设计、,罗列出所有需要解决的问题

    函数调用问题,循环问题,查找问题,修改问题,查询问题,删除问题,比较问题。

    3、变量定义

    序号变量名变量性质(局部/全局)功能作用范围1typedef全局定义结构体类型整体2Int全局定义五门课类型整体...Char全局定义学号班级姓名类型整体

    5、函数调用的类型

    四、测试与分析

    (简要介绍测试的作用及意义)

    测试可以知道所编写的程序是否可行,通过实际的测试可以找出程序是否符合现实。通过测试和反复修改可以使程序更加人性化。

    (一)测试列表

    (以表格的形式给出,不少于10个)

    测试数据或执行操作执行结果是否正确测试人签名调用主菜单显示了主菜单正确 选择主菜单里的1请输入学生学生信息….正确 输出有重复有乱码否 查询无否 修改按学号修改…….是 按学号查询显示了该信息是 按班级查询只显示里一名同学的信息否 按学好删除删除成功是 须补考基础课的所有学生信息都显示否 可升学学生显示了该显示的信息是

    (二)测试结果分析

    (根据以下表格,如实填写并签名)

    bug个数错误类型错误原因分析是否修改设计者签名1与count声名中的类型不匹配少了void count()是2错误 jia.c 19: 表达式语法错在 main 函数中Scanf中少了&s是4错误 jia.c 31: do语句中必须有while关键字在 main 函数中没写while是5错误 jia.c 30: 未定义的符号's'在 main 函数中上面没int I;是6错误 1.c 335: 表达式语法错在 count 函数中Switch() 括号里没有变量是7

    五、实训总结

    (总结实训过程中的所使用的知识和已实现的功能,总结自己掌握理论知识和动手能力的程度,提出自己的不足之处及改进措施)

    通过这一周的实训。我们充分运用了所学的东西编出了解决实际问题的程序。我们运用了函数的调用,循环,定义,比较,查找,删除等知识。通过实际动手,我更加深入的了解了课本上的知识。同时提高了我的动手能力。

    实训中我找到了我许多的不足,以前我遇到不董的就会直接去问别人,不独自思考。试训中我学会了独自思考和团队合作。虽然我在编程当中遇到许多问题,但经过独自思考和学习解决了问题。最后编出了管理程序。

    C语言学生学分管理程序代码

    typedef struct student

    { char num[11],name[7],class[10];

    int jichu,renwen,xuanxiu,zhuanye,shiyan;

    }STU;

    STU st[37];

    static int n;

    void menu();

    void input();

    void print();

    void query();

    void modi();

    void del();

    void count();

    main()

    { int s;

    do{

    menu();

    printf("\n\t\t\t\t 请选择:");

    scanf("%d",&s);

    switch(s)

    { case 0:break;

    case 1:input();break;

    case 2:print();break;

    case 3:query();break;

    case 4:modi();break;

    case 5:del();break;

    case 6:count();b

    展开全文
  • C语言实现学生成绩信息管理系统
  • 要求:1记录学生班级姓名,性别,职务住址情况,数据输入数据删除排序查。#include /*引用库函数*/ #include #include #include typedef struct /*定义结构体数组*/ . printf("\t\t\this(her) number:%s\n",stud[i...

    要求:1记录学生班级姓名,性别,职务住址情况,数据输入数据删除排序查。

    #include /*引用库函数*/ #include #include #include typedef struct /*定义结构体数组*/ . printf("\t\t\this(her) number:%s\n",stud[i].num); /*输出该学生信息*/ printf("\t\t\this(.

    插入一条学生记录,按学号排好。5。按姓名查找,并删除一条记录。6。查找。

    C 语言学生成绩管理系统 #include #include#include#include typedef struct STUDENT { char studentNumber[20];/*学生学号*/ char .

    #include #define max_num 100 typedef struct studnet{ char name[20]; int chinese; int. student s[max_num]; printf("请输入学生数目:"); scanf("%d",&num); for(i = .

    #include void shuru(FILE *wfp); void tianjia(FILE *cfp); void chazhao(FILE *. case 0: break; } } int choice(void ) { int a; printf("欢迎进入学生基本信息管理系统:\n.

    系统以菜单方式工作(用键盘输入1~4之间的数来选择功能) (1)学生信息。

    #include#include#include#include#include#define LEN sizeof(struct student)#define . elec,stu[i].expe,stu[i].requ,stu[i].sum struct student/*定义学生成绩结构体*/ { int num;/*.

    写了一个,不行可以改一下,,,#include #include struct stu { . case 2: if(n==0) printf("无学生信息!!!"); else { printf("[1]:从系统调用 [2]:.

    系统以菜单方式工作 2. 学生信息录入功能(学生信息保存在文件里,student。

    给你一些提示:建立结构体成员,断student_info.txt是否存在~ 判断文件指针的位置 读取数据给结构体 判断读取到的成员数 (程序主菜单)...学生信息录入功能 按学号排.

    ⑴输入至少10个学生的自然信息(学号、姓名、年龄、所在系、成绩)。 ⑵.

    #include #include #define max 200 struct student { char no[10]; // 学号 char name[. printf("\t\t\t* *\n"); printf("\t\t\t* 健身跑学分管理系统 *\n"); printf("\t\t\t* *\n"); printf(.

    要求添加,修改,删除学生信息 以及按照指定项目对学生进行排序,一简单的。

    #include #include #include #include #define N. printf("查看英语成绩请按 1 :\n查看数分成绩请按 2 :\n查看C语言成绩请按 3 :\n查.

    要求添加,修改,删除学生信息 以及按照指定项目对学生进行排序,一简单的。

    #include #include #include #define LEN sizeof(struct . { printf("不能打开文件!\n"); return 0; } fscanf(fp," 考试成绩管理系统 \n"); fscanf.

    参考如下学生信息管理系统的C源代码吧。#include #include /*定义学生结构体*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float .

    编写学生成绩管理系统的源程序代码;1) 按学生姓名查询成绩2) 分别统计。

    学生成绩管理(c语言版)/*11.3.2 源程序*//***********xuesheng.c***********//******头文件(.h)***********/#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*其它说明*/#.

    列出记录三,电脑维修,平均得分,[20]stud_name等等学生成绩管理系统是。

    #include&quot:\n&quot.h的内容 list *insert(list *h) { list *p,*q; printf("next; } } int main(). =ERROR) {printf("n"); printf(" | 学生成绩管理 |\n"); printf(" |__ _ _ _ _ _ _ _ _ .

    要求有类似wps文字处理系统的背景。 老师要求只能用c语言!

    #ifndef H_STUDENT_HH #define H_STUDENT_HH #include "stdio.h" #include ". printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n"); printf("\t**.

    可以添加,删除,插入信息,可以对成绩进行升序降序排列,信息有姓名,学。

    #include"stdio.h" #define SIZE 100000 #include"string.h" #include"stdlib.h" . printf("请输入要修改学生的学号:"); scanf("%d",&num); for(i=0;i<=SIZE;i++.

    我来回答 以下是平均分 最高分 总分的代码。。。。/* Note:Your choice is C IDE */#. printf("sum=%d\nave=%d\nmost=%d",sum,ave,most); }while(n<=j);}以下是输入学生.

    1系统以菜单方式工作。 2登记学生的学号,姓名,性别,年龄,籍贯,系别.

    好好学学链表章节,程序开始运行从文件读数据到链表,然后对链表进行功能操作,程序结束之前将链表存入文件。这些功能都比较简单,你学好链表应该就可以完成了。

    学校要求用C语言设计的 学生信息管理系统 学生信息包括:学号,姓名,年。

    写了半天,看看吧。#include #include #include #include. printf("\n是否7a64e58685e5aeb931333262346435继续输入另外一个学生信息?(.

    这是运行界面。。。急求啊!!!!!!!!!!!!!!!!!

    #include int main(void) { int num; printf("欢迎使用学生成绩统计系统\n\n"); printf("\t\t:---------------------------------------:\n"); printf("\t\t:\t学生成绩统计系统\t\t:\n.

    学生管理系统设计,每个学生是一条记录,包括姓名,学号,性别,出生年月.

    这个百度搜搜或者找人帮做一个吧 一般不会有人免费给你做的~!

    展开全文
  • 程序设计基础实训 项目名称 学生学分管理 系 别 计算机工程系 专 业 计算机网络技术 班 级 学生姓名 指导教师 一项目背景介绍 概要介绍此项目设计的意义和要求 c 本程序为学生学分管理系统本程序根据现实中的问题...
  • 学分管理程序的设计目录TOC \o "1-3" \h \z \u 1.需求分析(本部分是此程序的需求分析,包括以下四个方面) 41.1总体分析: 41.2功能需求: 51.2.1录入某位学生的学分; 51.2.2给定学号,显示某...
  • 3)学生成绩管理系统  需要处理的基础数据 学生基本信息:如班级、学号、姓名、性别、年龄等。 学生选修课程的基本信息:课程编号、课程名称、学分、考试成绩、平时成绩、综合成绩(考试成绩*0.7+平时成绩*0.3...
  • c语言课程设计学生学分管理程序北京信息职业技术学院PAGE程序设计基础实训项目名称:学生学分管理系 ...1 月 日一、项目背景介绍(概要介绍此项目设计的意义和要求)本程序为学生学分管理系统。本程序根据现实中的问题...
  • c语言版的学生成绩管理系统,有ppt和Word文档,分管理员账户与学生账户,代码长度1000行+;是一个完整的实验报告
  • 学生信息管理系统C语言编程.docx

    千次阅读 2021-05-24 03:06:02
    学生信息管理系统 C 语言编程【问题描述】学生信息的管理是每个学校必须具有的管理功能,主要是对学生的基本情况及学习成绩等方 面的管理。该系统模拟一个简单的学生管理系统,要求对文件中所存储的学生数据进行各种...
  • 学生学分管理程序-c语言代码-学生成绩统计c语言代码》由会员分享,可在线阅读,更多相关《学生学分管理程序-c语言代码-学生成绩统计c语言代码(20页珍藏版)》请在人人文库网上搜索。1、程序设计基础实训项目名称:...
  • 一份C语言学生成绩管理系统设计报告,分享给大家一、课程设计题目《学生成绩管理系统设计》二、实训目的(1)掌握结构化程序设计的基本方法,基本掌握面向对象程序设计的基本思路和方法。(2)掌握C++的基本概念和基础...
  • 3)学生成绩管理系统  需要处理的基础数据 学生基本信息:如班级、学号、姓名、性别、年龄等。 学生选修课程的基本信息:课程编号、课程名称、学分、考试成绩、平时成绩、综合成绩(考试成绩*0.7+平时成绩*0.3...
  • p->data.ave,p->data.mingci #define END " --------------------------------------------------------------------- \n" /*关注公众号:C语言与cpp编程,回复"源码",获取更多*/ int saveflag=0; /*是否需要...
  • 别: 计算机工程系专 业: 计算机网络技术班 级: 0922211学生:指导教师: 韦立蓉北 京 信 息 职 业 技 术 学 院2010年 1 月 日一、项目背景介绍(概要介绍此项目设计的意义和要求)本程序为学生学分管理系统。...
  • C语言学生管理系统源代码

    千次阅读 多人点赞 2020-10-13 21:28:07
      新人博主不易,希望看完点赞 ```c /** *autor:旋尘 *time:2020.4.20 */ #includeint Menu() ...printf("\t学生成绩管理系统*\n"); printf("\t*| 1. 添加学生信息 \n"); printf("\t| 2. 显示学生信息 \
  • HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC语言程序设计实训报告实训题目: 学分管理程序专 业: 计算机科学与技术班 级: K1273-5姓 名: 涂 瑞成 绩:完成日期: 2014年 7月8 日指导教师: 张吴波1目...
  • C语言实现_学生成绩管理系统

    千次阅读 2020-06-12 20:25:25
    C语言实现_学生成绩管理系统 自己写了一个关于C语言实现学生成绩管理系统的代码 方法很粗糙。 不过还是第一次写这么“大”的。 #include<stdio.h> #include<stdlib.h> #include<string.h> struct...
  • 学生学籍信息管理系统C语言设计学生学籍信息管理系统目录1.设计目的与要求2.总体设计3.详细设计4.调试分析5.总结6.答辩记录7.教师意见8.附录主程序1.设计目的与要求:1.1 【要求】:使用下面的数据,设计一个简单的...
  • 1、用用 c c 语言编写学分管理系统语言编写学分管理系统- -成绩管理系统成绩管理系统#include#include#include #include#include#define LEN sizeof(struct student)typedef struct student char num11,name7,class...
  • 程序设计基础实训 项目名称 学生学分管理 系 别 计算机...本程序为学生学分管理系统本程序根据现实中的问题通过c语言形式编程本程序要求能够登记学分显示学分查询学分修改学分删除学分统计学分 二程序功能描述 描述基本
  • 数据结构可用结构体,包括课程和选修两个结构体,其中课程结构体成员结构体成员包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期。选修结构体成员包括学号,课程编号,该结构体...
  •  /*显示没有该学生*/ else /*显示找到的记录信息*/ { printf("\n\n***********************havefound***********************\n"); printf("|number | name | tel | \n"); printf("|----------|---------------...
  • 学生信息管理系统C语言编程【问题描述】学生信息的管理是每个学校必须具有的管理功能,主要是对学生的基本情况及学习成绩等方面的管理。该系统模拟一个简单的学生管理系统,要求对文件中所存储的学生数据进行各种...
  • 3:学分管理程序:设计一个学生学分管理程序,学生人数自定,假设每位学生必须完成基础课50学分、专业课50学分、选修课24学分、人文类课程8学分和实验性课程20学分才能够毕业。因此在管理学分时,要考虑每个学分所...
  • #include <stdio.h> #include <string.h> #include <string> #include<Windows.h> #define USER "TOM" // 事先定义...//主菜单的声明--选择学生端还是老师端。 void Level_2_menu(); //二级菜
  • 本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下下面是我自己用写的学生信息管理系统,为了增加数据的利用率,分为学生端和教师端,同时实现账号密码登录,以文件的形式将其...
  • c语言实验报告--学生成绩管理系统.doc XX大学CSUC语言程序设计实践报告题目学生成绩管理系统学生姓名剽悍的小白兔指导教师TZ学院信息科学与工程学院专业班级电气信息类XXXX班完成时间20XX年X月一、设计目的通过课程...
  • 《课程信息管理系统C语言程序》由会员分享,可在线阅读,更多相关《课程信息管理系统C语言程序(19页珍藏版)》请在人人文库网上搜索。1、include #include#include typedef struct char num15;char name20;char ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,003
精华内容 401
关键字:

学生学分管理系统c语言

c语言 订阅