基于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语言课程设计—学生成绩管理系统

#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语言编写学分管理系统-成绩管理系统
printf("\t\t\t*** 1-按学号修改 ***\n");
printf("\t\t\t*** 2-按姓名修改 ***\n");
printf("\t\t\t*** 3-按班级修改 ***\n");
printf("\t\t\t*** 0-退出 ***\n");
printf("\t\t\t*****************************\n");
}
void modi1()
{ char sn[11];
int i;
printf("请输入要修改学分学生的学号:");
scanf("%s",sn);
for(i=0;i<n;i++)
printf("\按任意键继续");
break;
}else printf("\n对不起!没有该姓名,任意键继续");
getch();
}
void query3()
{ char sn[10];
int i;
printf("请输入要查询的班级:");
{ case 0:break;
case 1:input();break;
case 2:print();break;
case 3:query();break;
case 4:modi();break;
case 5:del();break;
scanf("%s%s%s%d%d%d%d%d",st[n].num,st[n].name,st[n].class,&st[n].jichu,&st[n].zhuanye,&st[n].xuanxiu,&st[n].renwen,&st[n].shiyan);

C语言实训报告 学分管理系统解析

C语言实训报告  学分管理系统解析

HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC语言程序设计实训报告实训题目:学分管理程序专业:计算机科学与技术班级: K1273-5 姓名:涂瑞成绩:完成日期: 2014年 7月8日指导教师: 张吴波目录1.实训题目与要求 (3)2.系统设计 (4)3.程序测试与运行结果 (7)4.实训总结 (10)5.程序源代码 (12)1.实训题目与要求学分管理程序问题描述:请设计一个学生的学分管理程序,以方便教务部门对学生已完成学分的管理。

假设每位学生必须完成基础课50学分、专业课50学分、选修课24学分、人文类课程8个学分、实验性课程20学分才能毕业。

因此在管理学分时,要考虑每个学分所属于的课程类别。

其中各类别的课程所完成的学分最多不会超过100分。

该程序应该具有以下功能:(1)能从键盘输入某位学生的信息(不包含学分)。

(2)给定学号,显示该学生的所完成的学分。

(3)给定学号,能修改该学生所完成的学分。

(4)给定学号,将学生从程序中删除。

(5)能显示已完成学分可以毕业的学生。

题目要求:(1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。

(2)学分信息应该包括学生信息(学号、姓名、班级、入学时间)、基础课学分、专业课学分、选修课学分、人文类课程学分、实验性课程学分。

(3)为程序设计windows窗口,在该窗口上以按钮的形式为用户提供“菜单”,通过点击各个功能项对应的按钮完成操作。

输入要求:(1)用户可以根据需求,选定相应的操作项目。

进入每个操作后,通过窗口的文本框,从键盘输入相应的信息。

程序根据用户输入的信息完成相应的处理,实现要求的功能。

(2)能对输入的数据进行简单的校验,例如,学生的学分是[0,100]范围内的数,入学时间必须是合法的日期,学号是唯一的(一个学号对应一个学生的学分信息)。

输出要求:(1)应用程序运行后,要在屏幕上显示一个按钮形式的“菜单”。

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

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

学生成绩管理系统c语言课程设计1. 介绍学生成绩管理系统是一种可以帮助学校或教育机构管理学生的成绩信息的软件系统。

它能够记录和管理学生的各门课程的成绩,提供成绩查询、统计分析以及生成报表的功能。

在这个项目中,我们将使用C语言来设计和实现一个简单的学生成绩管理系统。

2. 功能需求2.1 学生信息管理•添加学生信息:输入学生的学号、姓名、性别、年龄等基本信息,并将其保存到系统中。

•修改学生信息:根据学生的学号或姓名,找到对应的学生信息,并允许修改其基本信息。

•删除学生信息:根据学生的学号或姓名,找到对应的学生信息,并从系统中删除。

2.2 成绩管理•录入学生成绩:输入学生的学号或姓名,根据学号或姓名找到对应的学生信息,并记录其各门课程的成绩。

•查询学生成绩:根据学生的学号或姓名,找到对应的学生信息,并显示其各门课程的成绩。

•统计学生成绩:计算学生的总分、平均分等统计信息,并按照成绩排名进行排序并显示。

•生成成绩报表:将学生的成绩信息按照一定的格式输出到文件中,以方便查阅和打印。

2.3 界面设计•主菜单:显示系统的功能选项,包括学生信息管理、成绩管理、退出等选项。

•学生信息管理菜单:显示学生信息管理的功能选项,包括添加学生信息、修改学生信息、删除学生信息等选项。

•成绩管理菜单:显示成绩管理的功能选项,包括录入学生成绩、查询学生成绩、统计学生成绩、生成成绩报表等选项。

•输入提示:在功能选项中,根据需要给出相应的输入提示,以引导用户正确地操作系统。

3. 设计思路3.1 数据结构设计为了实现学生成绩管理系统,我们需要设计合适的数据结构来存储学生信息和成绩。

在这个项目中,我们可以使用结构体来表示学生信息,如下所示:struct Student {int id; // 学号char name[20]; // 姓名char gender[10]; // 性别int age; // 年龄float grades[5]; // 各门课程成绩};3.2 模块设计为了实现功能需求中的各项功能,我们需要设计相应的模块来实现。

学分管理程序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语言学生成绩管理系统课程设计

c语言学生成绩管理系统课程设计一、课程目标知识目标:1. 学生能理解C语言在开发学生成绩管理系统中的应用和重要性。

2. 学生掌握C语言中的基本数据类型、运算符、控制结构等基础知识,并能运用到成绩管理系统的设计与实现中。

3. 学生能掌握文件操作、数组、结构体等C语言高级特性,用以存储、查询和管理学生成绩。

技能目标:1. 学生能够运用所学知识,设计并编写一个简单的学生成绩管理系统。

2. 学生通过实际操作,培养解决问题的能力,包括分析需求、设计算法、编写程序和测试代码。

3. 学生通过小组合作,提升团队协作能力和项目管理的实践技能。

情感态度价值观目标:1. 学生在学习过程中培养对编程的兴趣和热情,增强对信息技术的认同感。

2. 学生通过解决实际问题,体会编程带来的成就感,激发进一步学习的动力。

3. 学生在团队合作中学会相互尊重、倾听和沟通,培养积极向上的情感态度。

课程性质:本课程是计算机科学与技术学科的一门实践性课程,强调理论与实践相结合,注重培养学生的实际操作能力和创新思维。

学生特点:高年级学生对C语言有一定的基础知识,具备一定的编程能力和问题解决能力。

教学要求:课程要求学生在理解基本概念的基础上,通过项目驱动的教学方式,动手实践,将理论知识转化为实际应用。

通过课程学习,学生应达到以上设定的知识、技能和情感态度价值观目标,为后续的深入学习打下坚实基础。

二、教学内容本课程教学内容主要包括以下几部分:1. C语言基础知识回顾:数据类型、变量、运算符、控制结构等,确保学生具备扎实的编程基础。

2. 文件操作:文件打开、关闭、读写等操作,为成绩管理系统中的数据持久化提供支持。

3. 数组与字符串:数组的使用、字符串处理,用于存储和管理学生成绩信息。

4. 结构体:自定义结构体类型,用于表示学生信息和成绩。

5. 函数:模块化编程,提高代码可读性和可维护性。

6. 项目实践:设计并实现一个学生成绩管理系统,涵盖以下功能:- 录入学生信息- 修改学生信息- 删除学生信息- 查询学生信息- 成绩排名- 成绩统计分析7. 教学大纲:- 第一周:C语言基础知识回顾,数组与字符串操作- 第二周:结构体、函数,文件操作- 第三周:项目需求分析,设计系统框架- 第四周:编写代码,实现各功能模块- 第五周:系统测试,优化代码,撰写项目报告教学内容与教材关联性:本课程教学内容紧密结合教材中的相关章节,如数据类型、控制结构、文件操作等,确保学生所学知识的系统性和科学性。

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

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

c语言学生成绩管理系统课程设计一、教学目标本课程的教学目标是使学生掌握C语言学生成绩管理系统的开发方法,培养学生的编程能力和实际应用能力。

具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据结构、函数、文件操作等编程知识,了解学生成绩管理系统的需求分析和系统设计方法。

2.技能目标:学生能够运用C语言独立完成一个学生成绩管理系统的设计和实现,具备一定的编程实践能力和问题解决能力。

3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生对技术改变生活的认识,培养学生的创新精神和团队合作意识。

二、教学内容教学内容以教材《C语言程序设计》为主线,结合实际应用需求,安排如下:1.C语言基础知识:数据类型、运算符、控制结构、数组、字符串等。

2.函数与模块化编程:函数定义与调用、局部变量与全局变量、递归、文件操作等。

3.数据结构:链表、栈、队列、树等。

4.学生成绩管理系统设计:需求分析、系统设计、模块划分、编程实现等。

5.调试与优化:调试方法、性能分析、代码优化等。

三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。

1.讲授法:用于传授C语言基本语法和编程原理,帮助学生建立扎实的理论基础。

2.案例分析法:通过分析实际案例,让学生了解学生成绩管理系统的需求分析和设计方法,提高学生的实际应用能力。

3.实验法:安排实验课,让学生动手编写代码,培养学生的编程实践能力和问题解决能力。

四、教学资源教学资源包括教材、多媒体资料、实验设备等,以支持教学内容和教学方法的实施,丰富学生的学习体验。

1.教材:《C语言程序设计》。

2.多媒体资料:教学PPT、视频教程、在线编程练习等。

3.实验设备:计算机、网络设备、编程环境等。

五、教学评估教学评估是检验学生学习成果的重要手段,主要包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。

C语言学生成绩管理系统方案

C语言学生成绩管理系统方案

学生成绩管理系统1 系统分析1.1 课程设计内容设计一学生成绩管理系统,功能包括:1.输入数据:可输入学生姓名、学号、及多门〔至少5门课程的成绩。

〔先将所有学生的姓名、学号输入完后,再逐科输入成绩2.编辑数据:可添加、删除、修改数据。

3.计算:计算出每个学生的总分及平均成绩;计算每门课程平均成绩。

4.查询:可按姓名、学号查询;可查询不及格的学生名单。

5.排序:可按姓名、学号、总分排序6.浏览:可浏览输入、查询或排序后的数据。

7.文件操作:可打开、保存、关闭数据文件。

1.2 系统功能需求分析本系统应具有以下功能:1、数据输入功能:可输入学生人数、姓名、学号、数学成绩、英语成绩,语文成绩、物理成绩、电脑成绩,输入后自动保存学生数据。

2、数据添加、修改、删除功能:可以添加多名学生信息,包括姓名、学号、各科成绩等待,可以修改某学生的全部信息,也可以删除某学生的全部信息。

3、计算功能:可以计算出每个学生的总分以及平均成绩,也可以计算出全部学生的各科的平均成绩。

4、查询功能:可按姓名、学号查询到某个学生的信息,可以输出不及格的学生名单。

5、排序功能:可以按学生姓名、学号、总分对全部学生排序。

6、浏览功能:可浏览输入、查询或排序后的数据。

7、文件功能:可以新建文件,打开文件。

8、关闭系统。

2 系统设计2.1总体设计按系统分析的功能要求将系统划分为以下几个主要功能模块:2.2详细设计1、主函数main<>利用While循环语句和switch<>实现各函数的调用,系统根据输入的数字选项来调用相应的函数。

2、菜单函数 menu<>通过菜单函数显示可选择的菜单,每次操作完后按任意键回到菜单函数。

3、新建文件函数 new_file<>通过该函数实现新建文件、输入学生数据功能。

4、编辑数据函数 edit_data<>该函数下还有3个函数,通过switch<>功能去选择其包含3个函数去实现不同的功能。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C语言课设报告——学分管理程序

C语言课设报告——学分管理程序

C程序课程设计报告(学分管理程序)学分管理程序一:【题目描述】请设计一个学生的学分管理程序。

假设每位学生必须完成基础课50学分、专业课50学分、选修课24学分、人文类课程8学分、实验性课程20学分才能够毕业。

因此在管理学分时,要考虑每个学分所属于的课程类别。

该程序应该具有下列功能:(1) 通过键盘输入某位学生的学分;(2) 给定学号,显示某位学生的学分完成情况;(3) 给定某个班级的班号,显示该班所有学生学分完成情况;(4) 给定某位学生的学号,修改该学生的学分信息;(5) 按照某类课程的学分高低进行排序;(6) 提供一些统计各类信息的功能。

【题目要求】(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 学分信息应该包括学号、姓名、课程类别、学分等;(3) 为各项操作功能设计一个菜单。

应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

【输入要求】应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示)。

用户可以根据需求,选定相应的操作项目。

进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。

【输出要求】(1) 应用程序运行后,要在屏幕上显示一个菜单;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。

二:软件的总体结构图。

开始显示主菜单建立两个班级结构,其中包括,班中每一名学生的学号,名字,基础科学分,专业课学分,选修课学分,人文课学分,实验课学分,分别以数组的形式存储。

在针对每个数族元素进行赋值,修改,运算。

三,程序主流程图fanhui ()目录函数caidan()输入学生学分shuru()输入学号,显示该学生各学科学分完成情况xianshi1()输入班号,显示班级所有学生的学分情况xianshi2()修改该学生的学分信息xiugai()按照单科成绩由高到底排序paixu()按学科统计各班总分,平均分tongji()学分高低排序调用copyfs(XF *a,XF *b)按照一类课程的学分高低进行排序paixu()主函数main()四.小组最终程序报告(1)内容描述。

C语言学生成绩学习管理系统课程设计报告总结计划

C语言学生成绩学习管理系统课程设计报告总结计划

C语言课程设计报告一.问题描述:题目七:学生成绩管理系统设计学生成绩信息包含:学期,学号,班别,姓名,xx课程成绩(语文、数学、英语和计算机)等。

主要功能:(1)能按学期、按班级完成对学生成绩的录入、更正(2)能按班级统计学生的成绩,修业生的总分及均匀分(3)能盘问学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式储存数据,系统以菜单方式工作学生成绩信息包含:学期,学号,班别,姓名,xx课程成绩(语文、数学、英语和计算机)等。

要求使用二进制文件方式储存数据,系统以菜单方式工作,实现对学生成绩的录入,更正,统计,排序,盘问,输出等功能。

二.设计目的设计“学生成绩管理系统”使其拥有以下功能:(1)能完成对学生成绩的录入(2)能按班级统计学生的成绩,修业生的总分及均匀分,排序(3)能按班级,学期输出学生的成绩单和不及格科目及学生名单(4)能盘问单个学生成绩(5)能更正单个学生信息三.要求系统以菜单方式工作四.功能1输入功能:可以一次完成无数条信息的输入。

2输出功能:能按班级输出学生的成绩单。

3更正功能:完成对单个学生成绩的更正。

4查找功能:完成对单个学生信息查找,并显示。

5排序功能:按学生成绩进行排序,并显示。

6有一个清楚雅观界面来调用各个功能五.模块图结构数组structstudent学期intterm班级intclasses姓名charname[10] 学号intnum成绩intscore[4]信息录入学号stu[i].num、班级stu[i].classes,姓名主流voidinputstu[i].name、四门课成绩stu[i].score程按班级统计学生的成绩,修业生的总成绩统计voidsort分及均匀分,排序成绩输出能按班级,学期输出学生成绩单和不及格voidprint盘问科目及学生名单voidsearch能按学号盘问单个学生成绩更正更正单个学生信息voidmonify六.详细内容整个系统除了主函数外,别的还有5个函数,实现六大功能:输入功能、输出功能、更正功能,查找并显示功能、排序并显示功能。

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

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

c语言学生成绩管理系统课程设计一、教学目标本课程旨在通过学习C语言学生成绩管理系统的设计与实现,使学生掌握C语言编程的基本技能,培养其软件开发和项目管理的能力。

具体目标如下:1.知识目标:学生需掌握C语言的基本语法、数据结构、函数、指针等核心概念,并理解学生成绩管理系统的需求分析和系统设计方法。

2.技能目标:学生能运用C语言独立编写简单的程序,并具备成绩管理系统的基本开发能力,包括数据库设计、界面实现和功能编程。

3.情感态度价值观目标:通过项目驱动的教学方式,培养学生团队协作的精神、创新意识和解决实际问题的能力。

二、教学内容本课程的教学内容围绕C语言学生成绩管理系统的开发展开,具体包括:1.C语言基础知识:C语言概述、数据类型、运算符、控制语句等。

2.数据结构:数组、链表、栈和队列等。

3.函数和指针:函数定义、调用、指针运算和应用。

4.文件操作:文件读写、文件管理等。

5.学生成绩管理系统设计:需求分析、数据库设计、界面实现、功能编程、测试与调试。

三、教学方法为提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:用于传授C语言基础知识和系统设计方法。

2.案例分析法:分析实际案例,引导学生学会解决实际问题。

3.实验法:学生动手编写代码,实现成绩管理系统各功能。

4.小组讨论法:分组完成项目,培养团队协作和沟通能力。

四、教学资源为实现课程目标,我们将提供以下教学资源:1.教材:《C程序设计语言》(K&R)、《C语言编程实践》等。

2.参考书:《C Primer Plus》、《C和指针》等。

3.多媒体资料:教学PPT、视频教程、在线代码示例等。

4.实验设备:计算机、网络环境、编程软件(如Visual Studio、Code::Blocks等)。

五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。

评估方式包括:1.平时表现:考察学生的课堂参与度、提问回答、小组讨论等,占总评的20%。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

c 设计学生成绩管理系统课程设计一、教学目标本课程旨在让学生掌握学生成绩管理系统的设计与实现方法,培养学生的编程能力、逻辑思维能力和问题解决能力。

具体目标如下:1.知识目标:使学生了解并掌握C语言的基本语法、数据结构、函数、文件操作等相关知识。

2.技能目标:培养学生能够运用C语言独立设计并实现一个学生成绩管理系统的能力。

3.情感态度价值观目标:培养学生对编程事业的热爱,增强其团队协作意识,提高其面对挑战的勇气和信心。

二、教学内容教学内容以教材《C程序设计》为主线,结合实际情况进行调整。

具体内容包括:1.C语言基本语法和数据类型。

2.控制结构:顺序结构、分支结构、循环结构。

3.函数:函数的定义、调用、参数传递、返回值。

4.数组和字符串:一维数组、多维数组、字符串的基本操作。

5.指针:指针的概念、指针的运算、指针与数组、指针与函数。

6.结构体和联合体:结构体的定义、使用、联合体的定义和使用。

7.文件操作:文件的打开、关闭、读写。

8.学生成绩管理系统的设计与实现:系统需求分析、系统设计、系统实现。

三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:通过讲解C语言的基本语法、数据结构、函数等内容,使学生掌握相关知识。

2.案例分析法:分析典型的学生成绩管理系统的案例,使学生了解实际应用中的问题解决方法。

3.实验法:引导学生动手实践,设计和实现一个学生成绩管理系统,提高学生的实际操作能力。

四、教学资源为支持教学内容和教学方法的实施,丰富学生的学习体验,我们将提供以下教学资源:1.教材:《C程序设计》。

2.参考书:提供相关的编程实践书籍,以供学生课后自主学习。

3.多媒体资料:制作精美的PPT,以便于讲解和展示。

4.实验设备:提供计算机实验室,让学生能够进行实际的编程练习。

五、教学评估为全面、客观、公正地评估学生的学习成果,本课程采用以下评估方式:1.平时表现:考察学生在课堂上的参与程度、提问回答、小组讨论等,占总评的20%。

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

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

学生成绩管理系统 c 课程设计一、课程目标知识目标:1. 学生能够理解学生成绩管理系统的基础知识,掌握系统的功能模块及其作用。

2. 学生能够掌握数据库的基本操作,如创建、查询、更新和删除数据。

3. 学生能够运用C语言编写简单的程序,实现学生成绩管理系统的基本功能。

技能目标:1. 学生能够运用结构体数组、文件操作等C语言知识,设计和实现一个简单的学生成绩管理系统。

2. 学生能够运用数据库知识,对系统中的数据进行有效管理。

3. 学生能够通过编程解决实际问题,提高分析问题和解决问题的能力。

情感态度价值观目标:1. 学生通过课程学习,培养对计算机编程的兴趣和热情,增强自信心。

2. 学生能够认识到团队合作的重要性,学会与他人协作共同完成任务。

3. 学生能够遵循编程规范,养成良好的编程习惯,培养认真负责的工作态度。

课程性质:本课程为实践性较强的课程,结合C语言和数据库知识,让学生在实际操作中掌握编程技巧。

学生特点:学生已具备一定的C语言基础和数据库知识,对编程有一定的了解,但实际操作能力有待提高。

教学要求:注重理论与实践相结合,强调动手实践,培养学生解决实际问题的能力。

在教学过程中,关注学生的个体差异,给予个性化指导,确保每位学生都能达到课程目标。

通过课程学习,使学生能够独立设计并实现一个简单的学生成绩管理系统。

二、教学内容1. C语言基础知识回顾:变量、数据类型、运算符、控制结构(条件语句、循环语句)。

教材章节:第1章至第4章2. 结构体和数组:结构体定义、结构体数组、结构体指针。

教材章节:第5章3. 文件操作:文件打开、读取、写入、关闭。

教材章节:第6章4. 数据库基础知识:数据库概念、数据表、SQL语句(增删改查)。

教材章节:第7章5. 学生成绩管理系统功能设计:需求分析、功能模块划分、界面设计。

教材章节:第8章6. 编程实现学生成绩管理系统:a. 数据结构设计(结构体数组、链表等)b. 功能模块实现(增加、删除、修改、查询等功能)c. 界面交互设计(命令行界面、菜单等)教材章节:第9章7. 测试与调试:编写测试用例、进行系统测试、调试程序。

学生成绩管理系统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.需求分析(本部分是此程序的需求分析,包括以下四个方面) (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语言编写一个学生学分计算系统。

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

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

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

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 来存储学生的信息。

  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统计学生学分完成情况该项是统计各班学生的学分完成情况,可以很方便了解该班学生的学习水平。

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

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

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

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

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

图1 系统结构图本系统采用主函数调用子函数的设计方法,先整体在逐步细化的过程,具体方法如下:在主函数前,进行子函数声明,如下: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 编辑学生信息窗口3.2.8查询学生记录函数设计查询学生记录分为,根据学生学号查询和根据班级查询该班所有学生的成绩,设计for 循环和调用ctrcmp()函数,把要查询的结果进行显示,如果没有找到与输入匹配的字符,则显示没有找到该班级或没有找到该学生。

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

3.2.9排序函数设计设计while 循环,用for 循环和库函数strcmp 将学号依次比较,然后用冒泡排序法将学号数据由小到大排列,并且各数据交换,完成排序。

排序结果如下图11所示。

图8 修改学生信息完成图9 根据学号查询学生信息 图10 根据班级查询学生信息图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 student{char 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,d d.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].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]);}}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].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]);}}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();}。

相关文档
最新文档