C语言创建简单的学生成绩管理系统
2020-02-02 07:29
621 查看
C语言创建一个简单的学生成绩管理系统
链表实现
实现输入、排序、统计、打印及存入文件等功能。
先写main函数菜单,把要完成的功能添加上去
int main() { system("color F1"); int sl; char file[8]={'\0'}; char Dele[8]={'\0'}; StudentsList *L; L=(StudentsList*)malloc(sizeof(StudentsList)); InitStudentsList(L); do{ start:printf("菜单\n"); printf("创建学生成绩单...1\n打印学生列表...2\n统计数据...3\n删除学生...4\n保存并退出...0\n"); scanf("%d",&sl); switch(sl){ case 0:printf("请输入文件名:");scanf("%s",file);SaveStudentsList(L,file);system("pause");system("cls");exit(0); case 1:CreateStudentsArray(L);system("pause");system("cls");break; case 2:PrintStudentsList(L);system("pause");system("cls");break; case 3:Statistic(L);system("pause");system("cls");break; case 4:printf("\n请输入需要删除的学生姓名:");scanf("%s",Dele);DeleteStudent(L,Dele);printf("已将%s从列表中删除\n",Dele);system("pause");system("cls");break; default:goto start; } }while(1); }
下面是头文件及宏定义
#define _CRT_SECURE_NO_WARNINGS #define MAX_GRADE 100 #define MIN_GRADE 0 #define SIZE 10 #define goon 1 #define stop 0 #include<stdio.h> #include<stdlib.h> #include<string.h>
/“#define _CRT_SECURE_NO_WARNINGS”这一行在VS2019上运行的话必须添加,不然不能运行,在VC++6.0或VS2010上运行如果报错的话请删除。/
这个程序要用到strcmp、strcpy字符串处理函数,因此需要添加<string.h>头文件
动态分配函数在<stdlib.h>里,这个是C标准库头文件,<malloc.h>不是C标准库头文件,在某些编译器上可能会出错。
下面是结构体定义,借鉴了C++的语法,我把一些函数写进结构体了。
typedef struct studentslist{ char Name[8]; char ID_number[10]; int Grade_m; int Grade_e; struct studentslist* next; void studentlist() { int i; for(i=0;i<8;i++) { Name[i]='\0'; ID_number[i]='\0'; } } void input_name() { printf("请输入该学生的姓名:"); scanf("%s",Name); } void input_id() { printf("请输入%s的学号",Name); scanf("%s",ID_number); } void input_grade() { int temp,flag=1; do { printf("请输入%s的高数成绩:",Name); scanf("%d",&temp); if(temp<MIN_GRADE||temp>MAX_GRADE) { flag=0; printf("请重新输入在0-100的成绩\n"); continue; } flag=1; Grade_m=temp; }while(flag==0); do { printf("请输入%s的英语成绩:",Name); scanf("%d",&temp); if(temp<MIN_GRADE||temp>MAX_GRADE) { flag=0; printf("请重新输入在0-100的成绩\n"); continue; } flag=1; }while(flag==0); Grade_e=temp; } }StudentsList,*SL;
下面是初始化函数
void InitStudentsList(StudentsList *L) { strcpy(L->Name,"头结点"); strcpy(L->ID_number,"0000000000"); L->Grade_m=MAX_GRADE; L->Grade_e=MAX_GRADE; L->next=NULL; }
接下来是输入学生以创建列表的函数
SL InputStudents() { int i; SL p=(StudentsList*)malloc(sizeof(StudentsList)); p->input_name(); p->input_id(); p->input_grade(); p->next=NULL; return p; } int check_order(StudentsList *a,StudentsList *b)//这个函数用来比较两个学生结点的学号大小 { if(a->next==NULL){ return stop; } else if(a->next!=NULL){ if((strcmp(a->ID_number,b->ID_number)<=0)&&(strcmp(a->next->ID_number,b->ID_number)>0)){ return stop; } else{ return goon; } } } void InsertStudents(SL t,SL b)//这个函数用来插入新的学生结点 { if(t->next==NULL){ t->next=b; } else if(t->next!=NULL){ b->next=t->next; t->next=b; } } void CreateStudentsArray(StudentsList *L) { int i, Students_Number; printf("请输入学生的人数:"); scanf("%d", &Students_Number); SL* m = (SL*)malloc(Students_Number * sizeof(SL)); for (i = 0; i < Students_Number; i++) { m[i]=InputStudents(); } for(i=0;i<Students_Number;i++){ SL t=L; while(check_order(t,m[i])==goon){ t=t->next; } if(check_order(t,m[i])==stop){ InsertStudents(t,m[i]); } } }
打印学生列表函数
void PrintStudentsList(StudentsList *L) { SL p; p=L->next; if(p==NULL){ printf("出错!此列表为空!\n"); return ; } while(p!=NULL){ printf("姓名:%s 学号:%s 高数:%d 英语:%d\n",p->Name,p->ID_number,p->Grade_m,p->Grade_e); p=p->next; } }
统计最高分、最低分、人数,计算平均分函数
void DeleteStudent(StudentsList *L,char Dele[]) { SL d; d=L; while(d->next!=NULL) { if(strcmp(d->next->Name,Dele)==0){ if(d->next->next==NULL){ free(d->next); } else if(d->next->next!=NULL){ d->next=d->next->next; } break; } d=d->next; } }
存入文件函数
void SaveStudentsList(StudentsList *L,char str[]) { char Enter='\n'; FILE *fp; if((fp = fopen(str,"w"))==NULL){ printf("打开文件出错!\n"); return ; } SL p; p=L->next; while(p!=NULL){ fprintf(fp,"姓名:%s 学号:%s 高数:%d 英语:%d%c",p->Name,p->ID_number,p->Grade_m,p->Grade_e,Enter); p=p->next; } fclose(fp); printf("保存完成\n"); }
- 点赞 5
- 收藏
- 分享
- 文章举报
相关文章推荐
- 简单的C语言学生管理系统加成绩管理系统
- C语言编写的简单的学生成绩管理系统
- C语言小项目(简单的学生成绩管理系统)
- C语言实现简单学生成绩管理系统
- C语言编写的简单的学生成绩管理系统
- 用C语言写的炒鸡简单的学生成绩管理系统
- C语言——学生成绩管理系统
- C语言基于单链表得学生成绩管理系统
- C语言项目:学生成绩管理系统
- 一个简单的学生成绩管理系统
- 《C语言编写 学生成绩管理系统》
- C语言实现---学生成绩管理系统
- C语言项目--教师信息/学生成绩管理系统
- 使用Java模拟一个简单的Dos学生成绩管理系统:
- [置顶] C语言项目--教师信息/学生成绩管理系统
- 用C语言写的学生成绩管理系统
- C语言学生成绩信息管理系统课程设计报告
- MySQL 创建一个简单的成绩管理系统
- C语言实现学生成绩管理系统
- C语言练手自己编写学生成绩管理系统