基于c语言的学分管理系统

合集下载

基于c语言学生成绩管理系统编程设计

基于c语言学生成绩管理系统编程设计

基于c语言学生成绩管理系统编程设计1. 引言1.1 概述学生成绩管理系统是一种用于方便地记录、管理和分析学生的各项成绩信息的软件系统。

通过该系统,教师和学校管理者可以轻松地追踪学生的学习进展,提供个性化的辅导和支持;同时,学生和家长也能够查看自己或子女的成绩,并及时了解其在不同科目上的表现。

本文基于C语言,旨在设计一个高效且易于使用的学生成绩管理系统。

该系统将采用合理的数据结构和算法,实现快速可靠地对成绩进行录入、查询、修改和统计功能。

通过对系统进行全面测试与性能评估,并且结合实际应用需求进行改进,在文章中总结研究结果并提出未来发展方向建议。

1.2 文章结构本文共分为五个部分:引言、学生成绩管理系统概述、系统设计与实现、功能测试与性能评估以及结论与展望。

- 在引言部分,将介绍本文所要解决问题的背景和意义,并简要说明文章结构;- 学生成绩管理系统概述部分将对该系统具体功能进行详细描述,并介绍设计思路以及目标用户;- 系统设计与实现部分将详细阐述系统的数据结构设计、用户界面设计以及算法实现;- 功能测试与性能评估部分将介绍如何设计测试用例并执行,并给出性能分析和优化策略,最后对结果进行分析讨论;- 结论与展望部分将对本文主要研究结果进行总结,并指明不足之处以及进一步改进方向和未来发展建议。

1.3 目的本文的目的是通过C语言编程,设计一个高效、可靠且易于使用的学生成绩管理系统。

该系统旨在满足现代教育管理的需求,提供方便快捷、个性化的成绩管理服务。

通过详细描述系统的功能和实现过程,并辅以全面的测试和评估,旨在为教师、学校管理者、学生和家长提供一个有效的工具,以更好地跟踪学生成绩、提供个性化教学和支持,并为未来发展提出建议。

2. 学生成绩管理系统概述2.1 系统功能介绍学生成绩管理系统是一种基于C语言编程的应用软件,旨在帮助学校或教育机构有效管理和统计学生的各项考试成绩。

该系统具备以下主要功能:- 学生信息管理:记录学生的基本信息,包括姓名、学号和班级等,并可以进行增加、删除、修改和查询等操作。

学生学分管理系统c语言报告

学生学分管理系统c语言报告

学生学分管理系统c语言报告1. 引言学分管理系统是一个帮助学校管理学生课程学分的重要工具。

通过该系统,学校可以实时了解学生的学分情况,帮助他们做出正确的课程选择,并按照规定的学分要求进行管理。

本报告将介绍一个使用C语言编写的学生学分管理系统的设计与实现。

2. 功能需求本学生学分管理系统具有以下功能需求:1. 学生信息管理:支持学生基本信息的录入、查询、修改和删除。

2. 课程信息管理:支持课程基本信息的录入、查询、修改和删除。

3. 学生选课管理:支持学生选课、退课和查询选课情况。

4. 学生学分管理:支持学生学分的自动计算和查询学分情况。

3. 数据结构设计为了实现学生学分管理系统的功能,需要设计相应的数据结构。

以下是我们设计的主要数据结构:1. 学生信息结构体:包含学生的学号、姓名、性别、年级等信息。

2. 课程信息结构体:包含课程的编号、名称、学分等信息。

3. 选课信息结构体:包含学生选课的学号和课程编号。

4. 学分信息结构体:包含学生的学号和已获得的学分。

除了上述数据结构外,我们还需要定义相应的链表来存储学生信息、课程信息和选课信息,以便实现各项功能需求。

4. 系统设计与实现为了实现学生学分管理系统的功能需求,我们使用了C语言来进行系统的设计与实现。

以下是系统的设计与实现步骤:1. 定义学生信息、课程信息、选课信息和学分信息的结构体。

2. 定义学生信息、课程信息、选课信息和学分信息的链表。

3. 实现学生信息的录入、查询、修改和删除功能。

4. 实现课程信息的录入、查询、修改和删除功能。

5. 实现学生选课、退课和查询选课情况的功能。

6. 实现学生学分的自动计算和查询学分情况的功能。

5. 系统测试与优化在完成系统设计与实现后,我们进行了系统测试与优化。

测试过程主要包括对各项功能的正确性进行验证,包括学生信息的录入、查询、修改和删除功能,课程信息的录入、查询、修改和删除功能,学生选课、退课和查询选课情况的功能,以及学生学分的自动计算和查询学分情况的功能。

学生成绩管理系统c语言代码(供参考)

学生成绩管理系统c语言代码(供参考)

C程序学生管理系统以下是用C语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include”stdlib。

h"#include"string。

h”typedefstruct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedefstruct unit//定义接点{studentdate;struct unit*next;}unit;unit大build()//建立链表并返回指针{unit*p;if((p=(unit*)malloc(sizeof(unit)))==NULL){printf("二>初始化失败!”);return0;}else{p—>next=NULL;p-〉date.number=O;//头结点存放学生人数printf("初始化成功!\n");return p;}}void add(unit大head)//增加学生{unit*p,*q;int m,n=0;q=head-〉next;p=(unit*)malloc(sizeof(unit));printf(”二〉请输入新生姓名!\n");gets(p—>);fflush(stdin);printf("二〉请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q二二NULL)n二1;while(q){if(q->date.number==m){prinTf("二>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head-〉next;break;}else{q=q->next;if(q==NULL)n=1;}}}p一〉date。

学生绩点计算系统C语言(附完整源代码)

学生绩点计算系统C语言(附完整源代码)

学生绩点计算系统C语言(附完整源代码)本文档提供了一个用于计算学生绩点的C语言程序的完整源代码。

程序简介该程序是一个学生绩点计算系统,它可以读取学生的课程成绩和学分信息,并计算出每门课程的绩点以及整个学期的绩点。

该程序可以帮助学生快速准确地计算自己的绩点,以便了解自己在学业上的表现。

源代码以下是该程序的完整源代码:include <stdio.h>int main() {int numCourses;float totalCredits = 0;float totalGradePoints = 0;printf("请输入您的课程数量:");scanf("%d", &numCourses);for (int i = 0; i < numCourses; i++) {int credits;float grade;printf("请输入第%d门课的学分:", i + 1); scanf("%d", &credits);printf("请输入第%d门课的成绩:", i + 1); scanf("%f", &grade);totalCredits += credits; totalGradePoints += credits * grade;}float gpa = totalGradePoints / totalCredits;printf("\n您的绩点为:%.2f\n", gpa);return 0;}该程序首先会要求用户输入课程数量,然后逐一询问每门课程的学分和成绩。

程序会根据用户输入的数据计算出总学分和总绩点,并最终计算出绩点(GPA),并将结果输出。

使用方法1. 运行该程序;2. 按照提示输入课程数量;3. 按照提示逐一输入每门课程的学分和成绩;4. 程序将会输出您的绩点(GPA)。

C语言课程设计—学生成绩管理系统

C语言课程设计—学生成绩管理系统

#include ”stdio.h”#include ”string.h”#include "stdlib.h"#include "conio.h"#include ”string.h”#include "fcntl。

h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head);//创建学生链表即学生信息录入函数声明// void printstulist(linklist head);//学生信息输出函数声明//void searchstu_namelist(linklist head);//学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head);//学生信息查询函数声明(按学号) linklist modifystulist(linklist head);//学生信息修改函数声明//linklist delatestulist(linklist head);//学生信息删除函数声明//void savestulist(linklist head);//学生信息保存到文件函数声明// linklist loadstulist();//从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]=”zhangqiong";char password[]=”123456";char person[20];char password1[10];int i;printf(”********************************************************************************\n”);printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf(”********************************************************************************\n\n”);printf(”\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名:”);gets(person);fflush(stdin);printf(”\n\n\n”);loginpassword(password1,10);printf("\n\n\n”);if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf(”\t\t\t\t成功登录,亲!\n”);printf("\n\n”);printf(”按任意键继续!”);getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n”);}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n”);}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n)//登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:”);while((ch=getch())!='\r’&&m〈n){password[i++]=ch;printf(”*");}password[i]='\0';return password;}//***************************************************// void menu()//主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L—>next=NULL;int ch;do{printf(”\t -——-----—-******——--——--—---******—————-————-******-—-—-—-—-—\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t ——----——--******-—-——------—******—---———--—-******—---———-——\n\n\n\n\n");printf("\t1。

C语言学生成绩管理系统设计报告

C语言学生成绩管理系统设计报告

C语言学生成绩管理系统设计报告一、背景描述C语言学生成绩管理系统是一款基于C语言编程实现的学生成绩管理系统。

它可以有效的收集、处理、分析学生的成绩数据,为学校及教师提供完善的学生成绩管理服务。

二、系统功能简介1. 记录学生成绩:该系统可以实现学生成绩的录入,以及成绩项目的录入,例如语文成绩、数学成绩等;2. 对学生成绩进行分析和分析统计:该系统可以实现对学生成绩分析和统计,例如学生成绩的最高分、最低分、平均分等;3. 学生成绩查询:可以根据学号或姓名进行查询,也可以按照班级进行查询;4. 成绩排名:可以根据班级列出学生成绩排名;5. 其他功能:可以实现教师及学校管理人员设置登录密码及账号,保证系统的安全稳定。

三、系统架构C语言学生成绩管理系统以学生成绩信息为基本业务,前端模块主要包括:学生成绩录入、学生成绩查询、学生成绩分析统计、学生成绩排名等模块;后端模块主要包括:数据管理模块、数据存储模块和信息安全模块,其信息网络设计如图1所示。

图1四、系统实现1. 数据库设计:学生成绩管理系统的数据库设计要求实现学生成绩信息的收集、处理、分析,因此建立以下4个表:学生信息表、课程信息表、成绩信息表以及评价表;2. 输入输出界面:通过Borland C++ 4.5 软件编写C语言源程序,实现数据库的请求、输入和输出,完成友好、简洁的界面设计;3. 数据处理模块:数据的处理主要する流程为根据输入的条件,从学生成绩数据库提取数据,然后进行数据处理,最后将数据处理的结果传给输出模块进行显示。

4. 信息安全模块:数据安全由操作系统管理,综合利用各种安全机制,如用户权限管理,系统账户安全设置等,确保系统的安全稳定性。

五、结束语。

学分管理程序c语言

学分管理程序c语言

学分管理程序c语言以下是一个简单的学分管理程序示例,使用 C 语言编写。

该程序可以对学生的学分进行管理,包括录入、查询和统计功能。

```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_STUDENTS 100#define MAX_CREDITS 10// 学生结构体struct Student {char name[50];int credits[MAX_CREDITS];int totalCredits;};// 函数声明void addStudent(struct Student* students, int studentCount);void queryStudent(struct Student* students, int studentCount);void printStatistics(struct Student* students, int studentCount);int main() {// 学生数量int studentCount;printf("请输入学生数量:");scanf("%d", &studentCount);// 学生信息数组struct Student* students = (struct Student*)malloc(studentCount * sizeof(struct Student));// 添加学生信息addStudent(students, studentCount);// 查询学生信息queryStudent(students, studentCount);// 打印统计信息printStatistics(students, studentCount);// 释放内存free(students);return 0;}// 添加学生信息void addStudent(struct Student* students, int studentCount) {for (int i = 0; i < studentCount; i++) {struct Student* student = &students[i];printf("请输入第 %d 个学生的姓名:", i + 1);scanf("%s", student->name);printf("请输入该学生的学分(最多 %d 个学分):", MAX_CREDITS); for (int j = 0; j < MAX_CREDITS; j++) {scanf("%d", &student->credits[j]);}student->totalCredits = 0;for (int j = 0; j < MAX_CREDITS; j++) {student->totalCredits += student->credits[j];}}}// 查询学生信息void queryStudent(struct Student* students, int studentCount) {printf("请输入要查询的学生姓名:");char name[50];scanf("%s", name);for (int i = 0; i < studentCount; i++) {struct Student* student = &students[i];if (strcmp(student->name, name) == 0) {printf("姓名:%s\n", student->name);printf("总学分:%d\n", student->totalCredits);printf("学分详情:");for (int j = 0; j < MAX_CREDITS; j++) {printf("%d ", student->credits[j]);}printf("\n");return;}}printf("未找到该学生\n");}// 打印统计信息void printStatistics(struct Student* students, int studentCount) {int totalCredits = 0;for (int i = 0; i < studentCount; i++) {totalCredits += students[i].totalCredits;}printf("学生总数:%d\n", studentCount);printf("总学分:%d\n", totalCredits);}```上述代码中,我们使用结构体来表示学生信息,包括姓名和学分。

学生成绩管理系统C语言版

学生成绩管理系统C语言版

1、2、编一程序,能计算每个学生的总分和平均分。

3、编一程序,能按输入要求打印各门课程的最高分和最低分的同学。

4、编一程序,能将五个学生的成绩按总分进行降序排序。

5、编一程序,能删除一个学生的记录;6、编一程序,能增加一个学生的记录;建立一个菜单模式的学生信息管理系统,完成功能如下:一、建立主菜单*****学生信息管理系统*****1、输入学生信息2、输出学生信息3、计算每个同学成绩的总分与平均分4、对学生成绩进行排序5、输出每门功课最高分的同学信息6、输出每门功课最低分的同学信息7、退出系统主菜单界面:二、将综合练习一中的程序改写为子程序并能通过主菜单进行调用。

先上图开发环境windows 7,vc 6.0 开始贴代码:/*************** 张海山* 10软件2班* 安庆职业技术学院* QQ:136533295******************/#include"stdio.h"#include"stdlib.h"#include"malloc.h"#include"string.h"typedef struct lode{int id;char name[20];char sex[10];int score[4];struct lode *next;}lode,*linklist;linklist input(linklist head)//输入学生信息{char cmd='y';int t,i,l;char name[10];char sex[2];int score[3]={0};//int sum;linklist p;while(cmd=='y'||cmd=='Y'){p=(linklist)malloc(sizeof(lode));printf("请输入学生的编号\n");fflush(stdin);scanf("%d",&t);p->id=t;printf("请输入学生的姓名:\n");fflush(stdin);scanf("%s",p->name);/* l=strlen(p->name);p->sex[l]='\0';/* for(i=0;i<l;i++){p->name[i]=name[i];}*/printf("请输入学生的性别:\n");fflush(stdin);scanf("%s",p->sex);/* l=strlen(p->sex);p->sex[l]='\0';/* for(i=0;i<l;i++){p->sex[i]=sex[i];}*/fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&score[0]);p->score[0]=score[0];fflush(stdin);scanf("%d",&score[1]);p->score[1]=score[1];fflush(stdin);scanf("%d",&score[2]);p->score[2]=score[2];fflush(stdin);p->next=head->next;head->next=p;printf("是否继续(y)&返回主菜单(n) y&n\n");fflush(stdin);scanf("%c",&cmd);}return head;}linklist print(linklist head){linklist p;int i=1;p=head->next;printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");while(p!=NULL){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);p=p->next;/*if(p==NULL)break;printf("%d\n",i);*/}//printf("%d\n",i);//printf("i=%d\n",i);return 0;}void avg(linklist head){int sum=0;double avg=0;linklist p;p=head->next;while(p!=NULL){sum=0;sum=p->score[1]+p->score[2]+p->score[0];avg=sum/3;printf("%s的总分为:%d\t平均分为:%.2lf\n",p->name,sum,avg);p=p->next;}}void maxmin(linklist head){linklist p;intmax1=0,max1index,min1=head->next->score[0],min1index,max2=0,max2index,min2=head->nex t->score[1],min2index,max3=0,max3index,min3=head->next->score[2],min3index;p=head->next;while(p!=NULL){if(max1<(p->score[0])){max1=p->score[0];max1index=p->id;}if(min1>=(p->score[0])){min1=p->score[0];min1index=p->id;}if(max2<(p->score[1])){max2=p->score[1];max2index=p->id;}if(min2>=(p->score[1])){min2=p->score[1];min2index=p->id;}if(max3<(p->score[2])){max3=p->score[2];max3index=p->id;}if(min3>=(p->score[2])){min3=p->score[2];min3index=p->id;}p=p->next;}printf("英语:\n");p=head->next;while(p!=NULL){if((p->id)==max1index)printf("英语最高分为:%d\t姓名为:%s\n",p->score[0],p->name);if((p->id)==min1index)printf("英语最低分为:%d\t姓名为:%s\n",p->score[0],p->name);p=p->next;}printf("数学:\n");p=head->next;while(p!=NULL){if((p->id)==max2index)printf("数学最高分为:%d\t姓名为:%s\n",p->score[1],p->name);if((p->id)==min2index)printf("数学最低分为:%d\t姓名为:%s\n",p->score[1],p->name);p=p->next;}printf("语文:\n");p=head->next;while(p!=NULL){if((p->id)==max3index)printf("语文最高分为:%d\t姓名为:%s\n",p->score[2],p->name);if((p->id)==min3index)printf("语文最低分为:%d\t姓名为:%s\n",p->score[2],p->name);p=p->next;}}void rank(linklist head){linklist p;int i=0,j,k,n=0;int sum[100];p=head->next;while(p!=NULL){n++;sum[i]=p->score[1]+p->score[2]+p->score[0];i++;p=p->next;}printf("n=%d\n",n);for(i=1;i<6;i++){for(j=0;j<6-i;j++)if(sum[j]<sum[j+1]){k=sum[j];sum[j]=sum[j+1];sum[j+1]=k;}}printf("\t序号\t姓名\t性别\t英语\t数学\t语文\n");for(i=0;i<n;i++){p=head->next;while(p!=NULL){if(sum[i]==(p->score[1]+p->score[2]+p->score[0])){printf("\t%d\t%s\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->score[0],p->score[1],p->sco re[2]);break;}p=p->next;}}}void add(linklist head){linklist p,q;p=head;q=(linklist)malloc(sizeof(lode));printf("请输入要插入学生的序号:\n");fflush(stdin);scanf("%d",&q->id);fflush(stdin);printf("请输入学生的姓名:\n");scanf("%s",q->name);fflush(stdin);printf("请输入学生性别:\n");scanf("%s",q->sex);fflush(stdin);printf("请依次输入学生的三门课成绩:\n");scanf("%d",&q->score[0]);fflush(stdin);scanf("%d",&q->score[1]);fflush(stdin);scanf("%d",&q->score[2]);fflush(stdin);q->next=NULL;while(p->next!=NULL){p=p->next;}p->next=q;//p->next=NULL;}void del(linklist head){linklist p,temp;int j;p=head->next;temp=head;printf("请输入要删除学生记录的序号:\n");scanf("%d",&j);while(p!=NULL){if(p->id!=j){p=p->next;temp=temp->next;}else{temp->next=p->next;free(p);break;}}}void main(){int cmd;linklist head;head=(linklist)malloc(sizeof(lode));head->next=NULL;do{printf("\n\n |***************学生成绩管理程序***************|\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 主菜单|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");printf(" | |\n");printf(" | 请输入选择项目:|\n");printf(" | |\n");printf(" | 1、输入学生成绩|\n");printf(" | |\n");printf(" | 2、输出学生成绩|\n");printf(" | |\n");printf(" | 3、计算总成绩、平均成绩|\n");printf(" | |\n");printf(" | 4、求最高分、最低分|\n");printf(" | |\n");printf(" | 5、排序|\n");printf(" | |\n");printf(" | 6、增加记录|\n");printf(" | |\n");printf(" | 7、删除记录|\n");printf(" | |\n");printf(" | 0、退出系统|\n");printf(" | |\n");printf(" |----------------------------------------------|\n");scanf("%d",&cmd);switch(cmd){case 0:break; //退出系统case 1: input(head);break; //输入学生信息case 2: print(head);break; //输出学生信息case 3: avg(head);break; //求总成绩、平均数case 4: maxmin(head);break; //最高分case 5: rank(head);break; //排序case 6: add(head);break; //增加记录case 7: del(head);break; //删除记录default :printf("您输入错误!\n");}}while(cmd!=0);}因为是C语言版的要严格按照样子输入哦要不然就会出现不可预料的结果。

c语言课程设计学生成绩管理系统

c语言课程设计学生成绩管理系统

C语言课程设计:学生成绩管理系统简介学生成绩是学校管理中至关重要的一项工作。

为了更好地管理学生成绩,提高教学质量,我们设计了一个基于C语言的学生成绩管理系统。

该系统可以帮助教师轻松地录入、查询和统计学生成绩,提供全面的学生成绩管理功能。

功能概述学生成绩管理系统主要包括以下功能:1.学生信息管理:可以添加、查询、修改、删除学生信息。

每个学生包括学号、姓名、性别、年龄等基本信息。

2.课程信息管理:可以添加、查询、修改、删除课程信息。

每门课程包括课程编号、课程名称、学分等基本信息。

3.成绩录入:可以根据学号和课程编号录入学生的课程成绩。

成绩包括平时成绩、期中成绩、期末成绩等。

4.成绩查询:可以根据学号或姓名查询学生的成绩,包括总成绩和各项成绩。

5.成绩统计:可以统计每门课程的平均成绩、最高成绩、最低成绩等统计数据。

6.成绩排序:可以按照总成绩对学生进行排序,以便了解学生的学习情况。

7.成绩报表:可以生成学生的成绩报表,以便于打印或导出。

系统设计学生成绩管理系统主要由以下几个模块组成:1.学生信息管理模块:通过该模块可以实现学生信息的添加、查询、修改和删除操作。

学生信息可以存储在文件中,使用文件读写函数实现对学生信息的操作。

2.课程信息管理模块:通过该模块可以实现课程信息的添加、查询、修改和删除操作。

课程信息可以存储在文件中,使用文件读写函数实现对课程信息的操作。

3.成绩录入模块:通过该模块可以根据学号和课程编号录入学生的课程成绩。

成绩信息可以存储在文件中,使用文件读写函数实现对成绩信息的操作。

4.成绩查询模块:通过该模块可以根据学号或姓名查询学生的成绩。

查询结果可以显示在屏幕上。

5.成绩统计模块:通过该模块可以统计每门课程的平均成绩、最高成绩、最低成绩等统计数据。

统计结果可以显示在屏幕上。

6.成绩排序模块:通过该模块可以按照总成绩对学生进行排序。

排序结果可以显示在屏幕上。

7.成绩报表模块:通过该模块可以生成学生的成绩报表,以便于打印或导出。

c语言学生成绩管理系统

c语言学生成绩管理系统

C语言学生成绩管理系统1. 简介本文档介绍了一个基于C语言的学生成绩管理系统的设计和实现。

该系统旨在帮助学校或教育机构管理学生的各项成绩,并提供相应的查询和统计功能。

2. 功能学生成绩管理系统具有以下主要功能:•学生管理:可以添加、删除、修改学生信息,包括学号、姓名、性别等。

•成绩录入:可以录入学生的各个科目的成绩。

•成绩查询:可以根据学号或姓名查询学生的各科成绩。

•成绩统计:可以统计某一科目的平均成绩、最高成绩、最低成绩等。

•成绩排序:可以按照某一科目的成绩对学生进行排序。

•成绩报表:可以生成学生的成绩报表,包括通过率、优秀率等信息。

3. 设计与实现3.1 数据模型学生成绩管理系统的主要数据模型包括:•学生(Student):包含学生的学号、姓名、性别等信息。

•科目(Subject):包含科目的编号、名称等信息。

•成绩(Score):包含学生的学号、科目编号、分数等信息。

这三个数据模型之间存在关联关系,学生和科目通过成绩进行关联。

3.2 界面设计学生成绩管理系统的界面设计应该简洁明了,方便用户操作。

可以通过命令行界面或者图形界面实现。

3.3 数据存储学生成绩管理系统可以使用文件进行数据的持久化存储。

可以使用文本文件、二进制文件或者数据库等方式进行存储。

3.4 算法实现系统需要实现一些算法来支持成绩统计和排序功能。

比如,可以使用冒泡排序、选择排序或者快速排序等算法对成绩进行排序。

4. 使用说明学生成绩管理系统的使用说明如下:•下载并编译源代码。

•运行可执行文件,系统将显示欢迎界面。

•根据提示选择相关功能,进行学生信息管理、成绩录入、成绩查询等操作。

•根据需要生成成绩统计报表或者排序结果。

5. 总结本文档介绍了一个基于C语言的学生成绩管理系统的设计和实现。

该系统提供了学生管理、成绩录入、成绩查询、成绩统计、成绩排序等功能,可以方便地帮助学校或教育机构管理学生的各项成绩。

通过本系统的使用,可以更加高效地管理和分析学生的学习情况。

学生成绩管理系统(c语言课设)

学生成绩管理系统(c语言课设)
scanf("%s",name);
for(j1=0;j1<=imax-1;j1++)
if(strcmp(name,stu[j1].name)==0)
{ printf("学号 姓名 C语言成绩 数学成绩 英语成绩 总分 平均分 名次\n ");
printf("*9 output record 0 quit system *\n");
printf("**********************************************************\n");
do { printf("输入c语言成绩:\t"); scanf("%d",&stu[i].cgrade);}while(stu[i].cgrade>100||stu[i].cgrade<0);
do { printf("输入数学成绩:\t"); scanf("%d",&stu[i].mgrade);}while(stu[i].mgrade>100||stu[i].mgrade<0);
else if(i1==0) { }
else if(i1==1)
{
if(im>0&&im<=30)
{
for (i=0;i<=im-1;i++)
{
do { printf("输入学号:\t");scanf("%s",&num);}while(strlen(num)>=10);

原创c语言学生成绩管理系统总结

原创c语言学生成绩管理系统总结

原创C语言学生成绩管理系统总结学生成绩管理是每个学校必备的重要工作之一。

为了提高学生成绩管理的效率和准确性,我设计并实现了一个基于C语言的学生成绩管理系统。

本文总结了我在开发过程中的思路、技术和经验。

一、系统概述学生成绩管理系统是一个基于C语言的命令行应用程序。

它提供了学生信息录入、成绩录入、成绩查询和成绩统计等功能。

用户可以通过菜单选择相应的操作,系统会根据用户输入的指令进行相应的处理并返回结果。

二、功能实现1. 学生信息录入系统允许用户逐个录入学生的基本信息,包括学号、姓名、性别、年龄等。

这些信息会被保存在一个结构体数组中,方便后续操作。

2. 成绩录入用户可以选择输入学生的科目和成绩,系统会根据学号匹配相应的学生并将成绩保存在对应的结构体中。

系统还会检查输入的成绩是否合法,如是否在合理的范围内。

3. 成绩查询用户可以按照学号或姓名查询学生的成绩。

系统会根据用户输入的关键字,在学生结构体数组中进行查找,并返回查询结果。

如果找不到匹配的学生,则给出相应的提示。

4. 成绩统计系统提供了对学生成绩的统计功能,包括总分、平均分、最高分和最低分等。

用户可以选择统计某一科目或所有科目的成绩,并获得相应的统计结果。

三、技术实现1. 结构体我使用结构体来存储学生的基本信息和成绩数据。

结构体中的成员变量包括学号、姓名、性别、年龄和科目成绩等。

通过定义结构体数组,可以存储和管理多个学生的数据。

2. 文件操作为了实现学生信息的长期保存和读取,我使用了文件操作。

当学生信息录入或成绩录入操作完成后,系统会将数据保存到磁盘文件中。

在每次启动系统时,系统会从文件中读取数据到内存中,以便后续的查询和统计操作。

3. 菜单选择为了交互式地进行操作,我使用了菜单选择的方式。

系统会打印主菜单,并根据用户选择的指令进行相应的处理。

用户可以通过键盘输入数字来选择菜单项,系统会根据输入的数字进行相应的判断和处理。

四、程序测试在开发过程中,我进行了多次测试以确保系统的稳定性和正确性。

原创c语言学生成绩管理系统设计报告

原创c语言学生成绩管理系统设计报告

原创C语言学生成绩管理系统设计报告一、引言学生成绩管理是学校教务工作中的重要组成部分,对于学校管理和学生评价具有重要意义。

为了提高学生成绩管理效率和准确性,本文设计并实现了一个基于C语言的学生成绩管理系统。

本系统以学生的基本信息和成绩为核心,提供了学生信息录入、成绩查询、成绩统计等功能,方便学校教务人员管理学生的学籍和成绩信息。

二、需求分析学生成绩管理系统的主要功能需求如下: 1. 学生信息的录入和修改:系统需要提供录入学生基本信息(如姓名、学号、性别、年级等)的功能,同时可以修改已录入学生的信息。

2. 学生成绩的录入和修改:系统需要提供录入学生成绩的功能,在录入成绩时,需要输入学生学号和各科成绩,并计算总分和平均分。

同时可以修改已录入学生的成绩信息。

3. 学生成绩的查询和统计:系统需要提供根据学生学号或姓名查询学生成绩的功能,并能够对学生成绩进行统计,包括科目平均分、总分排名等。

4. 界面友好、操作简便:系统需要使用简洁明了的界面设计,方便用户进行操作,并给出相应的提示和错误信息。

三、系统设计3.1 数据库设计本系统的数据库需要存储学生的基本信息和成绩信息。

设计采用两个数据表:student和score。

#### 3.1.1 student表字段包括:学生学号(sid)、姓名(name)、性别(gender)、年级(grade)。

#### 3.1.2 score表字段包括:学生学号(sid)、科目1成绩(score1)、科目2成绩(score2)、科目3成绩(score3)、总分(total_score)、平均分(average_score)。

3.2 系统模块设计本系统设计采用模块化设计,将各个功能模块进行划分,提高代码的可维护性和重用性。

#### 3.2.1 学生信息管理模块该模块实现学生信息的录入、修改和删除功能,包括以下函数:- add_student():添加学生信息。

- modify_student():修改学生信息。

c语言课程设计学生成绩管理系统源代码

c语言课程设计学生成绩管理系统源代码

c语言课程设计学生成绩管理系统源代码一、引言学生成绩管理系统是一个非常常见的应用程序,它可以帮助学校或教育机构轻松地管理学生的成绩信息。

在本文中,我们将介绍一个基于C语言的学生成绩管理系统源代码。

二、需求分析在开始编写代码之前,我们需要明确系统的需求和功能。

该系统应该能够完成以下任务:1. 添加新学生信息:包括姓名、性别、年龄等基本信息。

2. 添加课程信息:包括课程名称、授课教师等基本信息。

3. 输入学生的成绩:输入每个学生在每个课程中的成绩。

4. 计算总分和平均分:计算每个学生的总分和平均分,并将其存储在数据库中。

5. 查询成绩信息:查询某个学生或某门课程的成绩信息。

6. 修改成绩信息:修改某个学生或某门课程的成绩信息。

7. 删除成绩信息:删除某个学生或某门课程的成绩信息。

三、设计思路1. 数据库设计我们需要设计一个简单的数据库来存储所有的数据。

该数据库应该包括以下表:- 学生表(student):包含姓名、性别、年龄等基本信息。

- 课程表(course):包含课程名称、授课教师等基本信息。

- 成绩表(score):包含每个学生在每个课程中的成绩信息。

2. 界面设计我们需要设计一个简单的界面来让用户输入和查看数据。

该界面应该包括以下功能:- 添加新学生信息- 添加新课程信息- 输入学生成绩- 查询成绩信息- 修改成绩信息- 删除成绩信息3. 程序设计在程序设计方面,我们需要编写一些函数来执行以上功能。

这些函数应该包括:- add_student():添加新学生信息。

- add_course():添加新课程信息。

- input_score():输入学生成绩。

- calculate_score():计算总分和平均分。

- query_score():查询成绩信息。

- update_score():修改成绩信息。

- delete_score():删除成绩信息。

四、源代码实现在这里,我们提供一个C语言的学生成绩管理系统源代码,该代码可以满足以上需求。

C语言学分管理系统(需求文档附源代码)

C语言学分管理系统(需求文档附源代码)

学分管理程序的设计目录1.需求分析(本部分是此程序的需求分析,包括以下四个方面) (3)1.1总体分析: (3)1.2功能需求: (3)1.2.1录入某位学生的学分; (3)1.2.2给定学号,显示某位学生的学分完成情况; (3)1.2.3给定某个班级的班号,显示该班所有学生的学分完成情况; (3)1.2.4给定某位学生的学号,修改该学生的学分信息; (3)1.2.5按照某类课程的学分高低进行排序; (3)1.2.6提供一些统计各类信息的功能。

(3)1.3具体需求: (3)1.3.1总体 (4)1.3.2录入 (4)1.3.3查询 (4)1.3.4修改 (5)1.3.5删除 (5)1.4开发运行环境 (5)1.4.1开发环境 (5)1.4.2运行环境 (5)2详细设计 (6)2.1整体功能架构 (6)2.2数据结构 (6)2.2.1全局变量 (6)2.2.2结构体变量 (6)2.2.3宏定义 (7)2.3函数接口 (7)2.3.1 Menu()函数 (7)2.3.2 MainMnue()函数 (8)2.3.5 Read()函数 (9)2.3.6 Type()函数 (9)2.3.7 FindClass()函数 (10)2.3.8 StudentNumber()函数 (11)2.3.9 Alter()函数 (12)2.3.10 Delete()函数 (13)2.3.11 Stat()函数 (14)2.3.12 Ordering()函数 (15)2.4函数模块划分 (17)2.4.1主函数 (17)2.4.2录入函数 (18)2.4.3查询函数 (19)2.4.4修改函数 (19)2.4.5删除函数 (20)2.5操作流程图 (21)3用户使用手册 (22)3.1点击进入学分管理系统,显示主菜单,提示用户选择: (22)3.2输入学生信息 (22)3.3输入学号查询 (22)3.4输入班级查询 (22)3.5修改学生信息 (22)3.6排序 (23)3.7删除学生信息 (23)3.8统计某班学生学分完成情况 (23)4源代码 (23)5心得体会 (32)1.需求分析(本部分是此程序的需求分析,包括以下四个方面)1.1总体分析:此系统为学分管理系统,它可以录入、查询、修改以及统计学生所得学分情况。

c语言学生成绩管理系统的设计与实现

c语言学生成绩管理系统的设计与实现

c语言学生成绩管理系统的设计与实现1. 引言1.1 概述学生成绩管理是教育系统中一个重要的环节,它涉及到对学生的信息、成绩进行有效管理和分析。

传统的手工管理方式难以应对大量学生数据和复杂的计算需求,因此,开发一套高效且易于使用的学生成绩管理系统是非常必要和迫切的。

本篇文章介绍了一个基于C语言设计与实现的学生成绩管理系统。

通过该系统,用户可以方便地录入、查询、统计和分析学生的成绩信息。

这个设计具有良好的扩展性和灵活性,可以满足不同规模和需求的学校或教育机构使用。

1.2 文章结构本文共分为五个部分,结构如下:第一部分为引言部分,主要介绍了本文所讨论的课题背景和概述。

第二部分为设计与实现部分,将详细介绍系统需求分析、数据结构设计以及用户界面设计等内容。

第三部分为主要功能模块介绍,将详细描述学生信息管理模块、成绩录入与查询模块以及统计与分析模块等核心功能。

第四部分为系统开发与实现过程,主要包括环境准备与搭建、系统架构设计与技术选择以及编码与测试阶段的详细讲解。

第五部分为结论和展望,对整个系统的设计与实现进行总结,并提出后续工作建议。

1.3 目的本文旨在介绍一个利用C语言开发的学生成绩管理系统的设计与实现过程。

通过该系统,可以有效地管理和分析学生的成绩信息,提高教育教学质量和效率。

同时,本文也希望能够为其他类似项目的开发者提供一些参考和指导,促进学生成绩管理系统的进一步完善和发展。

2. 设计与实现:2.1 系统需求分析:在设计和实现学生成绩管理系统之前,首先需要进行系统需求分析。

通过对用户需求的了解,我们可以确定该系统的功能和性能要求。

学生成绩管理系统主要需要满足以下几个方面的需求:(1) 学生信息管理:系统应能够存储学生的基本信息,包括学号、姓名、班级等,并且能够对这些信息进行增加、删除、修改和查询等操作。

(2) 成绩录入与查询:系统应具备录入学生的各科成绩以及查询某个学生或全部学生的成绩的功能。

同时,还要支持按照不同条件(如学号、科目)进行排序和筛选。

学生学分计算系统c语言

学生学分计算系统c语言

下面是一个简单的示例,说明如何使用C语言编写一个学生学分计算系统。

此示例中,我们假设学生需要满足一定的学分要求才能毕业。

注意:这是一个非常基础的示例,仅用于教学目的。

在实际应用中,学生学分计算系统通常会更加复杂,涉及到更多的数据验证、错误处理和数据持久化。

c#include <stdio.h>struct student {char name[50];int id;float total_credits;float graduation_requirement;int has_graduated;};void calculate_credits(struct student *s) {printf("Enter the number of credits for subject: ");scanf("%f", &s->total_credits);}void check_graduation(struct student *s) {if (s->total_credits >= s->graduation_requirement) {s->has_graduated = 1;printf("Student has graduated!\n");} else {s->has_graduated = 0;printf("Student has not graduated yet.\n");}}int main() {struct student students[100];int num_students, i;printf("Enter the number of students: ");scanf("%d", &num_students);for (i = 0; i < num_students; i++) {printf("Enter details for student %d:\n", i + 1);printf("Name: ");scanf("%s", students[i].name);printf("ID: ");scanf("%d", &students[i].id);printf("Graduation requirement: ");scanf("%f", &students[i].graduation_requirement);calculate_credits(&students[i]);check_graduation(&students[i]);}return 0;}这个程序首先定义了一个结构体student 来存储学生的信息。

用c语言编写学分管理系统-成绩管理系统

用c语言编写学分管理系统-成绩管理系统
printf(&quot;\按任意键
继续&quot;);
break;
}
else printf(&quot;\n对不起!没有该学号,任意键继续&quot;);
getch();
}
void query2()
printf(&quot;\t\t\t*** 0-退出 ***\n&quot;);
printf(&quot;\t\t\t*****************************\n&quot;);
}
void query1()
{ char sn[11];
int i;
printf(&quot;\t\t\t*** 1-按学号查询 ***\n&quot;);
printf(&quot;\t\t\t*** 2-按姓名查询 ***\n&quot;);
printf(&quot;\t\t\t*** 3-按班级查询 ***\n&quot;);
printf(&quot;\t\t\t*** 5-删除学生学分 ***\n&quot;);
printf(&quot;\t\t\t*** 6-统计学生学分 ***\n&quot;);
printf(&quot;\t\t\t*** 0-退出 ***\n&quot;);
{ char sn[7];
int i;
printf(&quot;请输入要查询的姓名:&quot;);
scanf(&quot;%s&quot;,sn);

学生成绩管理系统c语言课程设计

学生成绩管理系统c语言课程设计

学生成绩管理系统c语言课程设计一、引言学生成绩管理系统是一种可以帮助学校或教育机构管理学生的成绩、课程和考试信息的软件。

本文将介绍一个基于C语言的学生成绩管理系统的设计过程。

二、需求分析在设计一个学生成绩管理系统之前,我们需要先进行需求分析。

以下是该系统需要满足的基本需求:1. 学生信息管理:包括添加、删除和修改学生信息,如姓名、性别、年龄等;2. 课程信息管理:包括添加、删除和修改课程信息,如课程名称、授课教师等;3. 成绩录入:可以录入每个学生在每门课程中的成绩;4. 成绩查询:可以查询某个学生在某门课程中的成绩以及某门课程所有学生的成绩排名等;5. 成绩统计:可以统计某个班级或某门课程所有学生的平均分、最高分和最低分等。

三、系统设计1. 数据结构设计为了实现上述需求,我们需要定义一些数据结构来存储相关信息。

以下是我们所定义的数据结构:(1)Student结构体:用于存储每个学生的基本信息,包括姓名、性别、年龄等。

typedef struct {char name[20];char sex[10];int age;} Student;(2)Course结构体:用于存储每门课程的基本信息,包括课程名称、授课教师等。

typedef struct {char name[20];char teacher[20];} Course;(3)Score结构体:用于存储每个学生在每门课程中的成绩。

typedef struct {int student_id;int course_id;float score;} Score;(4)Class结构体:用于存储某个班级的所有学生和所选的所有课程。

typedef struct {Student students[MAX_STUDENT_NUM];int student_num;Course courses[MAX_COURSE_NUM];int course_num;} Class;2. 功能实现在上述数据结构定义完成之后,我们可以开始实现各个功能模块。

基于c语言的学分管理系统【范本模板】

基于c语言的学分管理系统【范本模板】

1引言现今大学对学生成绩管理以及学生水平评定过程中,不仅依靠学生分数,而且把各个科目的掌握情况通过学分来反映,众所周知,大学人数众多, 单靠人工在纸质介质上记录,既浪费资源又不方便管理,并且错误率高,学分管理系统就是基于现今大学在学生成绩管理过程中采用学分制,应运而生的计算机数据管理系统,对在校生进行学分数据录入、修改、删除、查找、排序以及对学分得分的初步统计,并存储学生学分数据的计算机数据管理系统。

利用学分管理系统可以有效的帮助管理者,来管理学生学分数据,并能够了解各个班级学生学分完成情况,从而节约了管理过程中的人力物力,并且存贮方便、准确。

学生学分管理系统是运行于计算机系统下的应用软件,主要用于对学生的学号、姓名以及各项学科学分进行录入、删除、修改、查询、排序、统计、存盘等操作,为学校的教师和学生提供了一个对学生学分进行管理和查看的平台,给用户提供了一个简单友好的用户接口,主要任务如下:1.1查看所有学生信息根据菜单提示,选择该功能,能够逐条显示全部学生学分记录1。

2输入学生记录用户根据菜单提示选择输入学生记录选项,进行有关学生的学号、姓名、班级、基础课学分、专业课学分、选修课学分、人文类课学分以及实验课学分的录入。

可一次性输入多条学生的学分信息记录.1.3删除学生记录根据提示,用户输入要进行删除学生的学号,如果在不存在该学号,则显示没有找到该学生;如果在文件中有该学号的信息存在,则将该学号所对应的姓名、学号、班级、各科学分等在对应文件中加以删除。

1.4修改学生记录根据提示,用户输入要进行修改学分记录的学生的学号,如果在文件中不存在该学号,则显示没有找到该学生;如果在文件中有该学生的信息存在,则将提示用户选择要修改的某课程,当用户选择某课程的代码后,则将显示你所要修改的课程。

然后提示用户选择是否继续进行修改操作。

1。

5查询学生信息查询学生信息,分为根据学号查询和根据班级查询两个具体需求,菜单选项分别提示用户输入要查询学生信息的学号或班级,如果在磁盘文件中有对应的输入信息,则提示用户已找到,并逐项列出对应查找到的学生学分状况.1.6根据学号排序学生记录该项功能根据学生的学号项进行排序,以便用户对学生学分状况有较为直观方便的了解,并能够让学号有规律排列的学生项,在显示时集中出现,让浏览者更加清楚明白。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1引言现今大学对学生成绩管理以及学生水平评定过程中,不仅依靠学生分数,而且把各个科目的掌握情况通过学分来反映,众所周知,大学人数众多,单靠人工在纸质介质上记录,既浪费资源又不方便管理,并且错误率高,学分管理系统就是基于现今大学在学生成绩管理过程中采用学分制,应运而生的计算机数据管理系统,对在校生进行学分数据录入、修改、删除、查找、排序以及对学分得分的初步统计,并存储学生学分数据的计算机数据管理系统。

利用学分管理系统可以有效的帮助管理者,来管理学生学分数据,并能够了解各个班级学生学分完成情况,从而节约了管理过程中的人力物力,并且存贮方便、准确。

学生学分管理系统是运行于计算机系统下的应用软件,主要用于对学生的学号、以及各项学科学分进行录入、删除、修改、查询、排序、统计、存盘等操作,为学校的教师和学生提供了一个对学生学分进行管理和查看的平台,给用户提供了一个简单友好的用户接口,主要任务如下:1.1查看所有学生信息根据菜单提示,选择该功能,能够逐条显示全部学生学分记录1.2输入学生记录用户根据菜单提示选择输入学生记录选项,进行有关学生的学号、、班级、基础课学分、专业课学分、选修课学分、人文类课学分以及实验课学分的录入。

可一次性输入多条学生的学分信息记录。

1.3删除学生记录根据提示,用户输入要进行删除学生的学号,如果在不存在该学号,则显示没有找到该学生;如果在文件中有该学号的信息存在,则将该学号所对应的、学号、班级、各科学分等在对应文件中加以删除。

1.4修改学生记录根据提示,用户输入要进行修改学分记录的学生的学号,如果在文件中不存在该学号,则显示没有找到该学生;如果在文件中有该学生的信息存在,则将提示用户选择要修改的某课程,当用户选择某课程的代码后,则将显示你所要修改的课程。

然后提示用户选择是否继续进行修改操作。

1.5查询学生信息查询学生信息,分为根据学号查询和根据班级查询两个具体需求,菜单选项分别提示用户输入要查询学生信息的学号或班级,如果在磁盘文件中有对应的输入信息,则提示用户已找到,并逐项列出对应查找到的学生学分状况。

1.6根据学号排序学生记录该项功能根据学生的学号项进行排序,以便用户对学生学分状况有较为直观方便的了解,并能够让学号有规律排列的学生项,在显示时集中出现,让浏览者更加清楚明白。

1.7统计学生学分完成情况该项是统计各班学生的学分完成情况,可以很方便了解该班学生的学习水平。

2总体设计进行总体设计,以比较抽象的方式概括的确定系统如何完成预定的任务,进而确定组成系统的每个子程序的结构,从而将一个大的程序按功能分割成一些模块,是每个模块具有功能单一、结构清晰、接口简单易于理解的小程序,并且确定各个函数之间的调用关系。

本系统主要应用结构化的设计思想,实现学生学分的输入、删除、修改、查询以及浏览等管理功能,各主要模块的数据均存储在文件中,因此包含对文件的读、写等基本操作。

在软件开发过程中应用了高级语言程序设计中的基本控制结构,如选择、循环、顺序等结构。

系统的设计方法是结构化设计方法,采用C 语言进行开发。

系统功能结构图,如图1所示。

图1 系统结构图3详细设计本系统采用主函数调用子函数的设计方法,先整体在逐步细化的过程,具体方法如下:在主函数前,进行子函数声明,如下:void menu();//菜单函数void to_menu();//返回菜单函数void view_data();//查看所有学生信息void save_data();//保存数据void add_data();//输入学生数据void read_data();//读取数据void delete_data();//删除数据void edit_data();//修改数据void query_data_no();//查找(按学号)void query_data_clas();//查找(按班级)void sort_data_no();//排序(学号)void tongji();//统计某班学生学分完成情况3.1主函数设计编写主函数,主函数运行时,先调用void read_data()函数,将数据从文件读取到结构体数组中,再调用菜单函数void menu(),显示菜单选择项,设计一个while循环,让函数进入循环,设计switch函数,对菜单各项功能进行选择,使各项功能能够运行,最后退出循环,调用to_menu()函数,返回主菜单。

main(){int fun;read_data();menu();while(1){printf("请输入功能号[0-8]:",&fun);scanf("%d",&fun);switch(fun){case 0: break; // 退出case 1: view_data();break; // 查看所有学生信息case 2: add_data(); break; // 输入学生记录case 3: delete_data();break; // 删除学生记录case 4:edit_data();break; // 修改学生记录case 5: query_data_no();break; // 查询(学号)case 6:query_data_clas();break; // 查询(班级)case 7:sort_data_no(); break; // 排序(学号)case 8:tongji();break; //统计某班学生学分完成情况default:printf("输入错误!");break;}if(fun==0) break;to_menu();}}3.2子函数设计3.2.1菜单函数设计菜单函数首先运行库函数system("cls")进行清屏,然后运行各个printf语句,显示主菜单,如图2所示。

图2 系统主菜单3.2.2返回主菜单函数设计设计字符c1,c2,用c1来接受第一次输入的回车,然后再次输入回车时,调用函数menu(),返回主菜单,来实现各次操作完成后返回主菜单的任务。

3.2.3查看所有学生信息函数设计设计for循环,定义i=0,学生总数为dd.count,利用for循环,可以显示所有学生已经记录的信息。

如图3所示:图3 查看所有学生信息3.2.4数据从结构体数组保存到文件的函数设计创建文件data.txt,利用for循环,把数据逐个写入文件。

3.2.5输入学生记录函数设计根据printf语句提示,逐个输入学号、、班级,调用库函数strcpy(),把各个输入项,拷贝到数组中,再对各项分数进行赋值,如果大于最大值,则显示最大值,设计成循环模式,末尾提示是否继续添加数据,利用break终止循环,最后存盘,退出程序,显示主菜单。

输入学号为106的学生信息后如图4所示。

图4 输入学生信息3.2.6删除学生记录函数设计设计for循环以及库函数strcmp(),把输入的学号,跟已有的学号进行对比,如果没有相同的学号,则提示没有找到该学生,如果找到相同的学号,则把该学号以后的数据向前移动一位,再把学生总数减一,实现删除学生。

删除过程如下图5和图6所示。

图5 输入要删除的学生图6 删除后显示3.2.7修改学生记录函数设计根据printf语句提示,输入要修改的学生的学号,设计for循环和库函数strcmp,对输入学号进行查找,如果没有查找到,显示没有找到该学生,如果能够查找到给学生,则进一步提示输入学生的、班级,然后选择要修改的学生记录项,最后提示,是否继续录入,退出后可返回主菜单。

修改过程如下图7和图8所示。

图7 编辑学生信息窗口图8 修改学生信息完成3.2.8查询学生记录函数设计查询学生记录分为,根据学生学号查询和根据班级查询该班所有学生的成绩,设计for循环和调用ctrcmp()函数,把要查询的结果进行显示,如果没有找到与输入匹配的字符,则显示没有找到该班级或没有找到该学生。

查询显示如下图,根据学号查询如图9所示,根据班级查询如图10所示。

图9 根据学号查询学生信息图10 根据班级查询学生信息3.2.9排序函数设计设计while循环,用for循环和库函数strcmp将学号依次比较,然后用冒泡排序法将学号数据由小到大排列,并且各数据交换,完成排序。

排序结果如下图11所示。

图11 根据学号排序结果3.2.10统计函数设计输入要统计的班级号,调用strcmp函数,查找相同班级号的学生数据,再设计for循环并调用strcmp函数,把差找出的学生数据,与要求完成的学分标准进行对比,统计出符合要求和不符合要求的学生个数,最后显示。

统计结果如下图12所示。

图12 根据班级统计结果4总结本系统可以完成学生学分的录入、查询、修改、删除、排序以及班级总体水平的统计功能,但是对于系统的访问权限设置,访问途径(网络访问还是单机使用)等功能,还没有提出解决的方案,在这些问题上还有待于对系统的进一步开发完善。

学分管理系统是介于学生管理者和学生之间的一个数据库平台,他让数据管理者可以方便的录入修改学生成绩,在管理过程中可以节省时间,增加工作效率,假如学生可以通过网络来进行查询,就可以避免学分改动而引发的矛盾,同时也可以给学生带来方便,因此在访问途径上可以设置为单机服务器管理,网络访问的数据库模式,来为学生和学校之间提供一个信息查询的平台。

本系统的开发过程,主要利用了for循环、switch循环、库函数strcmp与strcpy等,在排序函数设计时,略显繁琐,有待于使用者在使用时,提出宝贵的意见和建议。

通过对本程序的开发,让我了解到一个完整系统的开发过程,将一个大的工程问题可以细化到各个模块,让每个模块可以独立去完成各自的功能,最后用函数之间的调用来解决程序开发的全部问题,让我在以后开发程序的道路上更加拥有信心。

参考文献[1] 启兰.库存管理[M].:高等教育,2005[2] 谭浩强,基温.C语言程序设计教程(第3版)[M].:高等教育,2006[3] 黄明、梁旭、万洪莉.C语言课程设计[M].:电子工业,2006[4] 郭宁,小玲.管理信息系统[M].:人民邮电,2006[5] 池龙,林,伟.实用软件工程[M].:电子工业,2006附录#include <stdio.h>#include <io.h>#include <stdlib.h>#include <string.h>#define MAX 60struct studentchar no[10]; // 学号char name[50]; //char clas[5]; // 班级int score[5]; // 学分};struct data{int count; // 当前学生数组中学生的个数struct student stu[MAX]; // 学生数组} dd;//子函数声明void menu();//菜单函数void to_menu();//返回菜单函数void view_data();//查看所有学生信息void save_data();//保存数据void add_data();//输入学生数据void read_data();//读取数据void delete_data();//删除数据void edit_data();//修改数据void query_data_no();//查找(按学号)void query_data_clas();//查找(按班级)void sort_data_no();//排序(学号)void tongji();//统计某班学生学分完成情况// 主函数main(){int fun;read_data();menu();while(1){printf("请输入功能号[0-8]:",&fun);scanf("%d",&fun);switch(fun){case 0: break; // 退出case 1: view_data();break; // 查看所有学生信息case 2: add_data(); break; // 输入学生记录case 3: delete_data();break; // 删除学生记录case 4:edit_data();break; // 修改学生记录case 5: query_data_no();break; // 查询(学号)case 6:query_data_clas();break; // 查询(班级)case 7:sort_data_no(); break; // 排序(学号)case 8:tongji();break; //统计某班学生学分完成情况default:printf("输入错误!");break;}if(fun==0) break;to_menu();}}void menu()/*显示主菜单*/{system("cls");//清屏printf("\n");printf("\t\t★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★\n"); printf("\t\t☆☆\n"); printf("\t\t☆★☆学分管理系统☆★☆\n"); printf("\t\t☆☆\n"); printf("\t\t☆[0] 退出[1] 查看所有学生信息☆\n"); printf("\t\t☆☆\n");printf("\t\t☆[2] 输入学生记录[3] 删除学生记录☆\n"); printf("\t\t☆☆\n"); printf("\t\t☆[4] 修改学生记录[5] 查询(学号)☆\n"); printf("\t\t☆☆\n"); printf("\t\t☆[6] 查询(班级)[7] 排序(学号)☆\n"); printf("\t\t☆☆\n"); printf("\t\t☆[8]统计某班学生学分完成情况☆\n"); printf("\t\t☆☆\n"); printf("\t\t★☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆★\n\n"); }void to_menu()// 等待用户按回车后回到主菜单{char c1,c2;printf("\n\n\n按回车键返回主菜单...");scanf("%c%c",&c1,&c2);//第一个字符吸收上次的确认回车键menu();}void view_data()// 查看所有学生信息{int i;printf("学号\t\t 班级\t 基础课\t 专业课选修课人文类课实验课\n"); printf("\n-------------------------------------------------------------------\n");for(i=0;i<dd.count;i++)printf("%s\t %s\t %s\t %d\t %d\t %d\t %d\t %d\n",dd.stu[i].no, dd.stu[i].name,dd.stu[i].clas,dd.stu[i].score[0],dd.stu[i].score[1],dd.stu[i]. score[2],dd.stu[i].score[3],dd.stu[i].score[4]);}void save_data()// 将数据从结构体数组保存到文件中{FILE *fp;//文件指针int i,k;k=dd.count;fp=fopen("dada.txt","w");//文件存储位置:当前文件夹fwrite(&k,sizeof(int),1,fp);for(i=0;i<k;i++)fwrite(&dd.stu[i],sizeof(struct student),1,fp);fclose(fp);}void add_data()// 输入学生记录{struct student st;int b;int a;int k;while(1){printf("\n请输入学生信息:");printf("\n学号\t\t班级");printf("\n---------------------------------------------------------------\n"); scanf("%s%s%s",st.no,,st.clas);k = dd.count;strcpy(dd.stu[k].no,st.no);strcpy(dd.stu[k].name,);strcpy(dd.stu[k].clas,st.clas);printf("\n请输入基础课学分(0-50):"); scanf("%d",&a);if(a>50) dd.stu[k].score[0]=50;else dd.stu[k].score[0]=a;printf("\n请输入专业课学分(0-50):"); scanf("%d",&a);if(a>50) dd.stu[k].score[1]=50;else dd.stu[k].score[1]=a;printf("\n请输入选修课学分(0-24):"); scanf("%d",&a);if(a>24) dd.stu[k].score[2]=24;else dd.stu[k].score[2]=a;printf("\n请输入人文课学分(0-8):"); scanf("%d",&a);if(a>8) dd.stu[k].score[3]=8;else dd.stu[k].score[3]=a;;printf("\n请输入实验课学分(0-20):"); scanf("%d",&a);if(a>20) dd.stu[k].score[4]=20;else dd.stu[k].score[4]=a;dd.count++;printf("\n\n继续添加学生信息[1-yes 0-no]:");scanf("%d",&b);if(b==0) break;}save_data();}void read_data()// 将数据从文件读到结构体数组中{FILE *fp;int i,k;struct student st;k=0;if(access("dada.txt",0)==-1) // 如果文件不存在{fp=fopen("dada.txt","w");fwrite(&k,sizeof(int),1,fp);fclose(fp);}fp=fopen("dada.txt","r");fread(&k,sizeof(int),1,fp);dd.count=k;for(i=0;i<k;i++){fread(&st,sizeof(struct student),1,fp); strcpy(dd.stu[i].no,st.no);strcpy(dd.stu[i].name,);strcpy(dd.stu[i].clas,st.clas);dd.stu[i].score[4]=st.score[4];dd.stu[i].score[3]=st.score[3];dd.stu[i].score[2]=st.score[2];dd.stu[i].score[1]=st.score[1];dd.stu[i].score[0]=st.score[0];fclose(fp);}void delete_data()// 删除学生记录{int i,k,j;char no[10];printf("\n请输入要删除学生的学号:");scanf("%s",no);k=-1;for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].no,no)==0){k=i;break;}}if(k==-1){printf("\n\n没有找到该学生(学号-%s)!",no);else{for(j=k;j<dd.count-1;j++){dd.stu[j]=dd.stu[j+1];}save_data();printf("\n\n删除学生(学号-%s)记录成功!",no);dd.count--;}}void edit_data()// 修改学生记录{struct student st;int i,k,a,b,select;char no[10];printf("\n请输入要编辑学生的学号:");scanf("%s",no);k=-1;for(i=0;i<dd.count;i++)if(strcmp(dd.stu[i].no,no)==0){k=i;break;}}if(k==-1){printf("\n\n没有找到该学生(学号-%s)!",no);}else{printf("\n\t班级\n");printf("\n----------------------------------\n");scanf("%s%s",,st.clas);strcpy(dd.stu[k].name,);strcpy(dd.stu[k].clas,st.clas);printf("1基础课***2专业课***3选修课***4人文类课***5实验课"); printf("请选择你要修改的课程");scanf("%d",&select);switch(select){case 1:printf("\n请输入基础课学分(0-50):"); scanf("%d",&a);if(a>50) dd.stu[k].score[0]=50;else dd.stu[k].score[0]=a;break;case 2:printf("\n请输入专业课学分(0-50):"); scanf("%d",&a);if(a>50) dd.stu[k].score[1]=50;else dd.stu[k].score[1]=a;break;case 3:printf("\n请输入选修课学分(0-24):"); scanf("%d",&a);if(a>24) dd.stu[k].score[2]=24;else dd.stu[k].score[2]=a;break;case 4:printf("\n请输入人文课学分(0-8):"); scanf("%d",&a);if(a>8) dd.stu[k].score[3]=8;else dd.stu[k].score[3]=a;break;case 5:printf("\n请输入实验课学分(0-20):"); scanf("%d",&a);if(a>20) dd.stu[k].score[4]=20;else dd.stu[k].score[4]=a;break;}printf("\n\n继续修改学生信息[1-yes 0-no]:");scanf("%d",&b);if(b==1)edit_data();elsesave_data();printf("\n\n编辑学生记录(学号-%s)成功!",no);}}void query_data_no()// 查询(学号){int i,k;char no[10];printf("\n请输入要查询学生的学号:");scanf("%s",no);k=-1;for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].no,no)==0){if(k==-1){printf("\n\n学号\t\t班级\t基础课\t专业课\t选修课\t人文类课\t实验课");printf("\n-----------------------------------------------------------------\n");}k=i;printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n",dd.stu[i].no,dd.stu[i].nam e,dd.stu[i].clas,dd.stu[i].score[0],dd.stu[i].score[1],dd.stu[i].score[2],dd.s tu[i].score[3],dd.stu[i].score[4]);}}if(k==-1){printf("\n\n没有找到该学生(学号-%s)!",no);}}void query_data_clas()// 查询(班级){int i,k;char clas[10];printf("\n请输入要查询学生的班级:");scanf("%s",clas);k=-1;for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].clas,clas)==0){if(k==-1){printf("\n\n学号\t\t班级\t基础课\t专业课\t选修课\t人文类课\t实验课");printf("\n-----------------------------------------------------------------\n");}k=i;printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\n",dd.stu[i].no,dd.stu[i].nam e,dd.stu[i].clas,dd.stu[i].score[0],dd.stu[i].score[1],dd.stu[i].score[2],dd.s tu[i].score[3],dd.stu[i].score[4]);}}if(k==-1){printf("\n\n没有找到该班级-%s!",clas);}}void sort_data_no()// 排序(学号){int i,k;struct student tmp;k=dd.count-1;while(k>0){for(i=0;i<k;i++){if(strcmp(dd.stu[i].no,dd.stu[i+1].no)>0)//最大的放末尾{strcpy(tmp.no,dd.stu[i].no);strcpy(,dd.stu[i].name);strcpy(tmp.clas,dd.stu[i].clas);tmp.score[4]=dd.stu[i].score[4];tmp.score[3]=dd.stu[i].score[3];tmp.score[2]=dd.stu[i].score[2];tmp.score[1]=dd.stu[i].score[1];tmp.score[0]=dd.stu[i].score[0];strcpy(dd.stu[i].no,dd.stu[i+1].no);strcpy(dd.stu[i].name,dd.stu[i+1].name);strcpy(dd.stu[i].clas,dd.stu[i+1].clas);dd.stu[i].score[4]=dd.stu[i+1].score[4];dd.stu[i].score[3]=dd.stu[i+1].score[3];dd.stu[i].score[2]=dd.stu[i+1].score[2];dd.stu[i].score[1]=dd.stu[i+1].score[1];dd.stu[i].score[0]=dd.stu[i+1].score[0];strcpy(dd.stu[i+1].no,tmp.no);strcpy(dd.stu[i+1].name,);strcpy(dd.stu[i+1].clas,tmp.clas);dd.stu[i+1].score[4]=tmp.score[4];dd.stu[i+1].score[3]=tmp.score[3];dd.stu[i+1].score[2]=tmp.score[2];dd.stu[i+1].score[1]=tmp.score[1];dd.stu[i+1].score[0]=tmp.score[0];}}k--;}save_data();printf("\n\n排序成功!");}void tongji() /*统计某班学生学分完成情况*/{ char clas[5]; int i,j=0,k=0;printf("\n请输入要统计的班级:");scanf("%s",clas);for(i=0;i<dd.count;i++){ if(strcmp(clas,dd.stu[i].clas)==0)j++;}for(i=0;i<dd.count;i++){ if(strcmp(clas,dd.stu[i].clas)==0&&dd.stu[i].score[0]>=50&&dd.stu[i].score[1]>=50&&dd.stu[i].score[2]>=24&&dd.stu[i].score[3]>=8&&dd.stu[i].score[4]>=20)k++; }printf("\n %s 班中有%d 个学生完成学分\n有%d 个学生未完成",clas,k,j-k);scanf("%*c"); /*******用于吸收上面所按下的字符************/ printf("\n\n按回车键回主菜单!");getchar();menu();}。

相关文档
最新文档