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

合集下载

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

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

C语言课程设计学生成绩管理系统在当今数字化的时代,学生成绩管理系统对于学校和教育机构来说至关重要。

它不仅能够提高教学管理的效率,还能为教学决策提供有力的数据支持。

本次 C 语言课程设计的目标就是创建一个功能齐全、操作便捷的学生成绩管理系统。

一、系统需求分析首先,明确系统需要实现的基本功能。

包括学生信息的录入,如姓名、学号等;课程信息的设置,如课程名称、学分等;成绩的录入、修改和查询;以及成绩的统计分析,如计算平均分、排名等。

同时,系统应具备良好的用户界面,操作简单易懂,方便教师和管理人员使用。

对于数据的存储和管理,要保证数据的安全性和完整性,防止数据丢失或被篡改。

二、系统设计(一)数据结构设计选择合适的数据结构来存储学生、课程和成绩信息。

可以使用结构体来定义学生和课程的数据类型,使用数组或链表来存储多个学生和课程的信息。

例如,定义学生结构体如下:```ctypedef struct student {int id;char name50;float scores10; //假设最多 10 门课程} Student;```(二)功能模块设计将系统划分为多个功能模块,如录入模块、查询模块、修改模块、统计模块等。

每个模块负责完成特定的功能,模块之间相互独立,便于代码的维护和扩展。

录入模块负责接收用户输入的学生、课程和成绩信息,并进行合法性检查。

查询模块可以根据用户输入的条件,如学号、姓名、课程名称等,查询相应的学生成绩信息。

修改模块允许用户对已录入的成绩进行修改,但需要进行权限验证。

统计模块用于计算学生的平均分、总分,并进行排名。

(三)界面设计设计简洁明了的用户界面,使用菜单选项让用户选择不同的功能。

可以使用控制台输入输出的方式,也可以考虑使用图形界面库来实现更友好的界面。

三、系统实现(一)数据输入与存储使用文件来存储学生成绩数据,便于数据的持久化。

在程序启动时,读取文件中的数据;在程序结束时,将修改后的数据保存回文件。

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

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

C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。

二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息. 同时也可以全部把各科的平均成绩,最高和最低分输出。

三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来。

四、输出全部学生信息和全部学生成绩。

五、退出系统。

六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找.总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。

2、查询模块:可用stu *lookdata(stu *p1)来实现。

找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩.3、插入模块:可用insert( )函数来实现.其中通过学号的大小来比较的,并且以此来排序。

4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。

5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。

二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计. 主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h"#include"stddef。

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

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

C语言课程设计设计报告制作人:学号:指导老师:时间:一、设计容和设计要求1、设计容题目:学生成绩管理系统设计该系统包含20个学生和成绩信息,可对成绩进行排序,并实现由查找成绩及由成绩查找。

2、设计要求1)由键盘输入20个学生()的某门课程的学习成绩60~99分。

2)将分数由低到高排序(用直接排序法和冒泡法),并显示学生和对应的分数。

3) 用线性搜索法检索某个学生的成绩(输入,显示成绩)。

4 )*对分搜索法检索某个学生的成绩(输入成绩,显示)。

二、设计思路首先是要建立20个学生信息,即学生和学生成绩,使用子函数input输入,学生成绩使用一维数组,学生使用二维数组。

然后分别定义四个子函数,即直接排序法、冒泡排序法和线性查找法、对分查找法。

在两个排序法中,用字符串拷贝函数来实现的交换,另外,在用成绩查找时,可以用直接查找,也可以用对分查找法,在这里我两种方法都使用了。

最后在主函数中来设计人机界面,用switch函数来实现操作选择,对应的情况中就调用之前定义的子函数来完成排序或查找。

三、程序设计流程图1、程序总体流程2、直接排序法流程图3、冒泡排序法流程图四、程序设计中遇到的问题和解决方案最开始编程时,直接排序和冒泡排序法中都是通过swap函数来实现成绩交换和交换,以达到排序目的,但在主函数中调用时却调用不了,程序在排序时就不能正常运行,我的解决方案就是去掉swap函数,因为有可能有些函数的调用有限制条件,这样改变之后,就不存在限制问题,可以正常排序。

另外一个问题就是数组的交换问题,这个之前是用中间变量的方式实现交换,结果调试时显示非法,于是经过多次改变和尝试,发现用二维数组更不容易出现问题,于是就将设置为二维数组,然后用字符串拷贝函数来实现交换,以达到最终排序的目的。

这样解决之后,一方面可以使不至于限制在一个字符,另外一个好处就是解决了排序过程中交换的问题。

五、源程序(含注释)及运行界面1、源程序#include<stdio.h>#include<string.h>#include<stdlib.h>#define NUM 20void input(int a[],char b[][30]) /*子函数input输入20个学生*/{int i;for(i=0;i<NUM;i++){printf("请输入第%d个学生的:",i+1);scanf("%s",b[i]);printf("请输入第%d个学生的成绩:",i+1);scanf("%d",&a[i]);if(a[i]>99||a[i]<60){printf("error!\n"); /*成绩大于99或小于60则显示错误*/i=i-1;}}}void zhijie(int a[],char b[][30]) /*直接排序法*/{int i,j,min,temp;char temp1[30];for(i=0;i<NUM-1;i++){min=i;for(j=i+1;j<NUM;j++)if(a[j]<a[min]){temp=a[j];a[j]=a[min];a[min]=temp;strcpy(temp1,b[j]); /*字符串拷贝函数进行字符数组交换*/strcpy(b[j],b[min]);strcpy(b[min],temp1);}}printf("排序后的学生和成绩为:\n");for(i=0;i<NUM;i++)printf("%s,%d\n",b[i],a[i]);}void maopao(int a[],char b[][30]) /*冒泡排序法*/{int i,j,temp;char temp1[30];for(i=0;i<NUM-1;i++)for(j=0;j<NUM-i-1;j++)if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;strcpy(temp1,b[j]);strcpy(b[j],b[j+1]);strcpy(b[j+1],temp1);}printf("排序后的学生和成绩为:\n");for(i=0;i<=NUM-1;i++)printf("%s,%d\n",b[i],a[i]);}void xian1(int a[],char b[][30]) /*线性查找,由查找成绩*/ {char ch[30];int i,flag=0;scanf("%s",ch);for(i=0;i<NUM;i++)if(strcmp(ch,b[i])==0){printf("该学生成绩为%d\n",a[i]);flag=1;break;}if(flag==0){printf("No found!\n");}}void xian2(int a[],char b[][30]) /*由成绩查找*/{int i,flag=0;int k;printf("请输入成绩:");scanf("%d",&k);for(i=0;i<NUM;i++)if(k==a[i]){printf("该学生为%s,成绩为%d\n",b[i],a[i]);flag=1;break;}if(flag==0){printf("NO found!\n");}}void duifen(int a[],char b[][30]) /*对分查找,由成绩查找(排序后)*/ {int i,n,m,k;printf("对分查找,请输入成绩:");scanf("%d",&k);n=0;m=NUM-1;if((k<a[0])||(k>a[NUM-1]))printf("error!\n");while(n<=m){i=(n+m)/2;if(k==a[i]){ printf("学生为:%s,成绩为:%d\n",b[i],a[i]);break;}elseif(k>a[i])n=i+1;elsem=i-1;}if((a[i]!=k)||(n>m))printf("NO found!\n");}void main() /*主函数及界面*/{int x,t,score[NUM];char name[NUM][30];printf("***************************************************************\n");printf(" 欢迎来到学生成绩管理系统\n");printf("***************************************************************\n");printf("请输入20个学生的和成绩\n");input(score,name);printf("输入的学生和成绩分别为:\n");for(x=0;x<NUM;x++){printf("%s,%d\t",name[x],score[x]);}printf("\n");printf(" *****************学生成绩管理系统*************** \n");printf("*********成绩排序直接法请按0 成绩排序冒泡法请按1*******\n");printf("*********查找方法一请按2 成绩查找方法二请按3*******\n");printf("********* 退出系统请按4 *******\n");printf(" 请选择:\t");while(1){scanf("%d",&t);switch(t) /*操作选择*/{case 0: zhijie(score,name);duifen(score,name);break;case 1: maopao(score,name);duifen(score,name);break;case 2: printf("请输入学生:\n");xian1(score,name);break;case 3: xian2(score,name);break;case 4: exit(0); /*退出系统*/break;default: printf("请在0到4之间选择!\n");}}}2、运行界面输入学生信息主菜单直接排序冒泡排序线性查找对分查找六、体会及收获1、关于体会这次C语言课程设计给我最大的体会是充分调用了我们已有的C语言知识储备,我想,难度就在于这里,要求我们对每一个知识点,每一个容板块都了如指掌。

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

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

学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。

通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。

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

二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。

2. 成绩信息管理:包括成绩的录入、修改和删除。

3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。

4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。

三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。

通过菜单选择,可以实现学生信息的录入、修改和删除功能。

2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。

通过菜单选择,可以实现成绩信息的录入、修改和删除功能。

3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。

4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。

四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。

2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。

3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。

五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。

2. 根据测试结果优化程序代码,提高系统性能和用户体验。

3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。

六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。

该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。

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

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

《学生成绩管理系统》课程设计报告2010-7-9一、程序整体规划:1.系统的基本功能✧数据的录入:如录入学生的基本信息,以及该学生选修课程的基本信息;✧数据的修改:如修改指定学号、或者指定姓名的学生信息,或者修改其选修课程信息;✧数据的插入:插入某个学生信息;✧数据的查询:如按学号查询、按姓名查询等;✧数据的删除:如删除指定学号、或者指定姓名的学生及其选修课程信息;✧平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出学生信息;✧考虑用文件把数据保存起来2、首先是结构体的定义:typedef struct message_studentchar number[6];char name[20];char sex[4];float subject[numsubs];float score;float average;int index;}student;int numstus; 定义学生数目student *pointer; 指向结构体数组int lens; 次迟到时候分配内存3、部分重要函数声明:int menu_select(); 决定主界面的函数int openfile(student stu[]); 打开文件的函数int findrecord(student stud[]); 查找信息的函数int writetotext(student stud[]); 保存文件的函数void sort(student stu[]); 查找信息的函数void deleterecord(student stu[],int i); 删除信息的函数void addrecord(student stud[]); 增加学生信息的函数void display(student stud[],int n1,int n2); 数据的显示函数void sortnum(student stud[]); 以下几个均为排序函数void sortnum2(student stud[]);void sortname(student stud[]);void sortname2(student stud[]);void sortcount(student stud[]);void sortcount2(student stud[]);4、设计思路1、主函数以switch和case语句引出其他子函数。

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

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

#include〈stdio.h〉#include〈string。

h>#include<windows。

h>#include〈conio.h〉void homepage(); //主界面void display(); //显示全部成绩void input(); //录入插入void del();//删除记录void sort(); //排序void waiting(); //等待界面void quit(); //退出界面struct student{int num;char name[15];float score[3];float avg;};int count=0; //当前学生个数int sort_type=0; //当前排序类型struct student stu[10];void main(){int i,k=0;char username[15],pwd[6];system(”color 3f”);printf(”\n\n");printf(” \t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n”);printf(" \t┃**********************************************************┃\n");printf(” \t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\n”);printf(” \t┃***┃************************************************┃***┃\n");printf(” \t┃***┃*******┃***┃\n”);printf(” \t┃***┃*** 欢迎使用学生成绩管理系统****┃***┃\n”);printf(” \t┃***┃*******┃***┃\n”);printf(" \t┃***┃*******┃***┃\n”);printf(” \t┃***┃*** xxxxxxxxxxx ****┃***┃\n");printf(” \t┃***┃*** ****┃***┃\n”);printf(” \t┃***┃*** 2006。

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

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

部署步骤:安装 操作系统、安装 数据库、安装应 用软件等
维护方案:定期 备份数据、定期 检查系统、定期 更新软件等
系统维护方案
定期备份数据: 确保数据安全, 防止数据丢失
定期更新系统: 确保系统安全, 防止病毒和恶意 软件攻击
定期检查硬件: 确保硬件正常运 行,防止硬件故 障
定期培训员工: 确保员工熟悉系 统操作,提高工 作效率
06 系统测试与优化
单元测试
目的:验证单个模块或功能的正确 性
测试内容:功能测试、性能测试、 兼容性测试、安全性测试
添加标题
添加标题
添加标题
添加标题
测试方法:白盒测试、黑盒测试、 灰盒测试
测 试 工 具 : JU n it 、 Te s t NG 、 Selenium等
集成测试
目的:验证系统各模块间的接口和交互是否正常 测试方法:黑盒测试、白盒测试、灰盒测试 测试内容:功能测试、性能测试、安全测试、兼容性测试 测试工具:JMeter、Selenium、Appium等
系统性能优化
性能测试:使用自 动化工具进行性能 测试,如JMeter、 LoadRunner等
性能瓶颈分析:分 析性能测试结果, 找出性能瓶颈,如 数据库查询、网络 延迟等
性能优化:针对性 能瓶颈进行优化, 如优化数据库查询 、减少网络延迟等
性能监控:建立性 能监控体系,实时 监控系统性能,及 时发现和解决性能 问题
学生成绩管理系统是一个用 于管理学生成绩的软件系统
Байду номын сангаас
系统采用模块化设计,易于 维护和扩展
系统支持多种数据格式,如 Excel、CSV等,方便数据
导入和导出
系统目标
提高学生成绩管理效率 方便教师查询、统计和分析学生成绩 提供个性化学习建议和指导 促进家校沟通,提高家长对学生成绩的了解

C语言课程设计-学生成绩管理系统-完整版

C语言课程设计-学生成绩管理系统-完整版

#include<stdio.h> #include<stdlib.h>#include<io.h> #include<string.h> /* strcmp 函数原型包含 */#define N 100 /* 定义最大学生人数为 100*/ struct student /* 学生结构体定义 */ char no[11]; /* 学号 ,10 位 */ char name[10];/* 姓名, 3 个汉字 */ char grade[10];/* 班级 */ char pro[20];/* 专业 */float score[5];/* 储存 5 门功课的成绩 */ float ave;/* 储存平均分 */ int year;/* 入学年 *//* 通过 i 的值,判断信息要查找的信息是否存在 *//* 输出学生成绩函数(公共函数) */ /* 系统初始化函数 */ /* 建立新的数据文件 *//* 从数据文件中读取数据 */ /* 维护界面函数 */ /* 新增一个学生成绩函数 */ /* 修改学生成绩 */ /* 修改成绩 *//* 删除学生信息函数 */ /* 统计界面函数 */ /* 计算每个学生平均分 */ /* 计算每门课程的平均分 */ /* 排序函数 */ /* 按学号排序 */ /* 按平均分排序 */ /* 按单科成绩排序 *//* 交换结构体数组中的两个记录 *//* 选择输出单科成绩 */ /* 查找界面函数 */ /* 按学号查找 */ int findname(char cname[]);/* 按姓名查找 */ void findyear(int cyear); /* 按入学年查找 */ void save(); /* 保存文件 */ void stop(); /* 停顿函数 */void stop()/* 停顿函数 (公共函数) */{printf("Press Any Key To Continue...\n"); getchar();}}stu[N]; int num; void panduani(int); void output(); voidinit(); void newfile(); void read1(); void weihu(); void new1(); void xiugai(); void xgcj(int); void delete1(); void tongji(); void tongji1(); void tongji2(); void paixu1(); void paino(); void paiave(); void paidkcj(); voidchange(int,int); void outputx(int); void find1(); int find(char sno[]);void output() /* 输出学生成绩函数(公共函数) */{int i,j;printf("===================================================================\n");printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("===================================================================\n");for(i=0;i<num;i++){printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year) Jfor(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");}stop();}void init() /* 系统初始化函数*/{if(access("stu.dat",0)) /* 判断文件是否存在*/newfile(); /* 若不存在,新建数据文件*/elseread1(); /* 若存在,读取数据*/}void newfile() /* 建立新的数据文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL) /* 创建二进制文件*/{printf(" 创建文件失败,请重新运行程序.\n"); /* 显示" 创建文件失败,请重新运行程序"*/exit(0); /* 终止程序*/}printf(" 初次运行,进行数据初始化...\n");/* 显示" 初次运行,进行数据初始化..."*/ stop();printf(" 请输入学生人数:");/* 显示"请输入学生人数:"*/ scanf("%d",&num);for(i=0;i<num;i++){printf(" 请输入第%d 个学生的学号:",i+1); /* 显示"请输入第i+1 个学生的学号:"*/ getchar(); /* 吃回车*/gets(stu[i].no);printf(" 姓名:"); /* 显示"姓名:"*/gets(stu[i].name);printf(" 班级:"); /* 显示"班级:"*/gets(stu[i].grade);printf(" 专业:"); /* 显示"专业:"*/gets(stu[i].pro);printf(" 入学年n:");/* 显示" 入学年"*/scanf("%d",&stu[i].year);printf("C 语言成绩:");/* 显示"C 语言成绩"*/ scanf("%f",&stu[i].score[0]);printf(" 高数成绩:");/* 显示"高数成绩"*/ scanf("%f",&stu[i].score[1]);printf(" 大物成绩:");/* 显示" 大物成绩"*/ scanf("%f",&stu[i].score[2]);printf(" 电路成绩:");/* 显示" 电路成绩"*/ scanf("%f",&stu[i].score[3]);printf(" 模电成绩:");/* 显示" 模电成绩"*/scanf("%f",&stu[i].score[4]);fwrite(&stu[i],1,sizeof(struct student),fp); /* 把第i+1 名学生成绩写入文件*/ }fclose(fp);printf("========================\n");printf(" 刚才输入的%d 个数据为:\n",num); /*显示"刚才输入的num 个数据为:"*/ printf("========================\n\n");output();}void read1() /* 从数据文件中读取数据*/{FILE *fp;num=0; /*num 为数据文件中实际存储的学生人数*/fp=fopen("stu.dat","r");if(fp==NULL) /* 数据文件不存在*/{printf(" 文件打开失败!重新运行程序\n"); /* 显示"文件打开失败!重新运行程序"*/ exit(0);}while(!feof(fp)) /* 文件结束检测"*/{fread(&stu[num],1,sizeof(struct student),fp); num++;}num--; fclose(fp); printf("\t\t\t=======================================\n"); printf(" \t\t\t现有 %d 个学生的成绩: \n",num); /* 显示 "现有 NUM 个学生的成绩: "*/printf("\t\t\t=======================================\n\n"); output();}void weihu() /* 维护界面函数 */{char c1; while(1){getchar(); if(c1=='9') break; switch(c1) { case '1': new1(); break; case '2': delete1(); case '3': xiugai(); break; default:printf(" 选择有误,请重选! \n");/*" 选择有误,请重选! "*/} } }void new1() /* 新增一个学生成绩函数 */{printf(" 请输入学号 :"); /* 显示 "请输入学号 :"*/ gets(stu[num].no);printf("\t\t\t* 维护*\n");printf("\t\t\t* 1. 新增 *\n"); /*新增 */printf("\t\t\t* 2. 删除 *\n"); /* 删除(按学号)*/printf("\t\t\t* 3. 修改 *\n"); /* 修改 */ printf("\t\t\t*9. 返回*\n"); /* 返回 */printf("\t\t\t************************\n");printf("\t\t\t 请选\n");/* 请选*/printf("\n\n\n\t\t\t* ********************* **\n"); c1=getchar();printf(" 姓名:"); /* 显示"姓名:"*/ gets(stu[num].name);printf(" 班级:"); /* 显示" 班级:"*/ gets(stu[num].grade);printf(" 专业:"); /* 显示"专业:"*/ gets(stu[num].pro);printf(" 入学年:");/* 显示"入学年"*/ scanf("%d",&stu[num].year);printf("C 语言成绩:");/* 显示"C 语言成绩"*/ scanf("%f",&stu[num].score[0]); printf(" 高数成绩:");/* 显示"高数成绩"*/ scanf("%f",&stu[num].score[1]);printf(" 大物成绩:");/* 显示" 大物成绩"*/ scanf("%f",&stu[num].score[2]);printf(" 电路成绩:");/* 显示" 电路成绩"*/ scanf("%f",&stu[num].score[3]);printf(" 模电成绩:");/* 显示" 模电成绩"*/ scanf("%f",&stu[num].score[4]);num++; printf("\n======================================\n");"*/ printf(" 现有%d 个学生的成绩:\n",num); /* 显示"现有NUM 个学生的成绩:printf("======================================\n\n");output();}void xiugai() /* 修改学生成绩*/{char xg[11];int i;printf("\n 请输入要修改学生的学号 :\n\n"); gets(xg);for(i=0;i<num;i++)if(strcmp(stu[i].no,xg)==0)break; if(i==num){printf("\n 数据文件无该生信息 !\n\n 请重新输入学号 .\n\n"); stop(); return;}xgcj(i);} void xgcj(int x)/* 修改成绩 */{ char xueke[5][10]={"C 语言","高数 ","物理","电路","模电"}; char (*p)[10],c; int j,k; p=xueke; for(;;){**\n\n"); printf("\t\t\t 成绩 printf("\t\t\t 1.C 语言 printf("\t\t\t 2.高数printf("\t\t\t 3.物理 printf("\t\t\t 4.电路 printf("\t\t\t5.模电 printf("\t\t\t9.返回printf("\n");printf("\t\t\t** ******************************** printf("\t\t\t** ******************************** \n");\n"); /*C 语言 */ \n"); /*高数 */\n"); /* 大学物理 */ \n"); /*电路 */ \n"); /*模电 */ \n\n"); /* 返回上级 */**\n\n"); printf("\t 请选择要修改的成绩 (按 1.2.3.4.5.9):\n"); c=getchar(); getchar();if(c=='9')break; else if (c>='1'&&c<='5'){k=c-49;printf("\n 请输入 %s 成绩 :\n",p+k); scanf("%f",&stu[x].score[k]); printf("\n 修 息为 :\n");printf(" 学号 姓名 班级 专业 入学年 C 语言 高数 大物电路模电printf("===================================================================\n");printf("%s %s %s %s %d",stu[x].no,stu[x].name,stu[x].grade,stu[x].pro,stu[x].ye ar);for(j=0;j<5;j++)printf(" %.1f",stu[x].score[j]);printf("\n");}else printf("\n 选择有误,请重选!\n\n");stop();}}int find(char sno[]) /* 按学号查找*/{int i;for(i=0;i<num;i++)if(strcmp(stu[i].no,sno)==0) /* 判断两个字符串相等*/return i;/* 查找成功*/return -1;/* 查找失败*/}void delete1() /* 删除学生信息函数*/{char cno[11];int i,j;printf(" 请输入要删除的学生学号:"); /*" 请输入要删除的学生学号"*/gets(cno);i=find(cno);if(i!=-1){for(j=i;j<num;j++)stu[j]=stu[j+1];num--;printf(" 现有%d 个学生的成绩:\n",num); /* 显示" 现有NUM 个学生的成绩:"*/ output();}else {printf(" 请输入正确的学号. \n");stop();}}void tongji(){int i;char c2; while(1) {printf("\t\t\t 请选择 :\n");/* 请选择: */ c2=getchar(); getchar(); if(c2=='9') break; switch(c2){case '1': tongji1();printf("\n\n 学生平均分为 :\n");printf("===========================================\n"); printf(" 学号 姓名 入学年 平均分 \n");printf("===========================================\n"); for(i=0;i<num;i++)printf("%s %s %d %.2f\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave); stop(); break; case '2': tongji2(); break; default:printf(" 选择有误,请重选 \n");/*" 选择有误,请重选! "*/ }} }void tongji1() /* 计算每个学生平均分 */ { int i,j;for(i=0;i<num;i++){stu[i].ave=0; for(j=0;j<5;j++)stu[i].ave+=stu[i].score[j]; stu[i].ave=stu[i].ave/5;}}void tongji2()/* 计算每门课程的平均分 */{int i,j; float sum;printf("\t\t\t* 统计 *\n");printf("\t\t\t*1. 学生平均分 *\n"); /* 计算学生平均分 */ printf("\t\t\t*2. 课程平均分 *\n"); /* 计算每门课程平均分 */ printf("\t\t\t*9. 返回*\n"); /* 返回 */printf("\n\n\n\t\t\t ***************************** **\n"); printf("\t\t\t* **************************** **\n"); /* 统计界面函数 */float avec[5]; /* 储存每门课的平均分*/ for(j=0;j<5;j++){sum=0;for(i=0;i<num;i++)sum+=stu[i].score[j];avec[j]=sum/num;}printf("\n\n 各科平均分:\n");/*" 各科平均分:"*/printf("===================================\n"); printf("C 语言高数大物电路模电\n"); printf("===================================\n"); for(i=0;i<5;i++)printf("%-7.1f",avec[i]);printf("\n");stop();}void paixu1() /* 排序界面*/{char c3;for(;;){printf("\n\n\n");printf("\t\t\t***********************************\n");printf("\t\t\t* 排序* \n");printf("\t\t\t* 1. 按学号排序* \n"); /* 按学号排序*/printf("\t\t\t* 2. 按平均分排序* \n"); /* 按平均分排序*/printf("\t\t\t* 3. 按单科成绩排序* \n"); /* 按单科成绩排序*/printf("\t\t\t* 9. 返回* \n"); /* 返回*/printf("\t\t\t***********************************\n\n");printf("\t 请选(按 1.2.3.9):\n");/* 请选择:*/c3=getchar();getchar();if(c3=='9') break;switch(c3){case '1':paino();break;case '2':paiave();break;case '3':paidkcj();break; default:printf("\n 选择有误,请重选!\n\n");/* 选择有误,请重选!*/ stop();}}}void paino() /* 按学号排序*/{ /* 按学号从低到高冒泡法排序*/int i,j;for(i=0;i<num;i++)for(j=0;j<num-1-i;j++)if(strcmp(stu[j].no,stu[j+1].no)>0) change(j,j+1);printf("\n 排序后为:\n"); /*" 排序后为:"*/output();}void paiave() /* 按平均分排序*/{ /* 按平均分从高到低冒泡法排序*/int i,j;tongji1(); /* 计算平均成绩*/ for(i=0;i<num;i++) for(j=0;j<num-i-1;j++)if(stu[j].ave<stu[j+1].ave) change(j,j+1);printf("\n\t 排序后为:\n"); /*" 排序后为:"*/printf("\t===============================================\n"); printf("\t 学号姓名入学年平均分排名\n");printf("\t===============================================\n"); for(i=0;i<num;i++) printf("\t%s %s %d %.2f %4d\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave,i+1); stop();void paidkcj() /* 按单科成绩排序*/ {char c;int i,j,k;while(1){printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t 单科成绩\n");printf("\t\t\t 1.C 语言\n"); /*C 语言*/printf("\t\t\t 2.高数\n"); /*高数*/printf("\t\t\t 3.物理\n"); /* 大学物理*/printf("\t\t\t 4.电路\n"); /*电路*/printf("\t\t\t 5.模电\n"); /*模电*/printf("\t\t\t 9.返回\n\n"); /* 返回上级*/printf("\t\t\t************************************\n\n");( 按 1.2.3.4.5.9):\n");printf("\t 请选择:c=getchar();getchar();else if (c>='1'&&c<='5'){k=c-49;for(i=0;i<num;i++) for(j=0;j<num-1-i;j++) if(stu[j].score[k]<stu[j+1].score[k])change(j,j+1);outputx(k);}else printf("\n 选择有误,请重选!\n\n"); stop();}}void change(int i,int j)/* 交换结构体数组中的两个记录*/{struct student temp; temp=stu[i]; stu[i]=stu[j]; stu[j]=temp;}void outputx(int k) /* 选择输出单科成绩*/char xueke[5][10]={"C 语言","高数 ","物理","电路","模电"}; char (*p)[10]; /* 定义一个指向包含 10 个字符型元素的一维数组的指针变量 */int i;p=xueke;printf("\n\t 排序后为 :\n");printf("\t===============================================\n"); printf("\t 学号 姓名入学年 %s 排名 \n",p+k);printf("\t===============================================\n"); for(i=0;i<num;i++)printf("\t%-11s% -10s%-11d%-6.1f%5d\n",stu[i].no, stu[i].name,stu[i].year,stu[i].score[k],i+1);}void find1() /* 查找界面函数 */{char c4;char cno[11],cname[10]; int i,cyear; while(1){printf("\t\t\t* ************************************\n"); printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t请选择 :\n");/* 请选择:*/ c4=getchar();getchar(); if(c4==57) break; switch(c4){case '1':printf(" 输入学号 :\n");/*" 输入学号: "*/ gets(cno); i=find(cno); panduani(i); break; case '2':printf(" 输入姓名 :\n");/*" 输入姓名: "*/ gets(cname);i=findname(cname); panduani(i); break; case '3':printf(" 输入入学年 :\n");/*" 输入入学年 "*/ scanf("%d",&cyear);查找1. 按学号查找2. 按姓名查找3. 按入学年查找 9. 返回************************************\n");*\n");*\n"); /* 按学号查找 */ *\n"); /* 按姓名查找 */ *\n"); /* 按入学年查找 */findyear(cyear);stop();break;default:printf(" 选择有误,请重选!\n");/*" 选择有误,请重选!"*/}}} int findname(char cname[]) /* 按姓名查找*/{int i;for(i=0;i<num;i++)if(strcmp(stu[i].name,cname)==0) /* 判断两个字符串相等*/return i; /* 查找成功*/return -1; /* 查找失败*/}void findyear(int cyear){int i,j,flag=0;for(i=0;i<num;i++)if(stu[i].year==cyear){ flag=1;break;}if(flag==0){printf(" 要查找的学生不存在\n");stop(); }else{printf(" 查找到的学生信息为:\n");/*" 查找到的学生信息为:"*/printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("================================================================ ===\n");for(i=0;i<num;i++){if(stu[i].year==cyear) /* 判断两个数值相等*/{printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year); for(j=0;j<5;j++) printf(" %.1f",stu[i].score[j]); printf("\n");}}}}void panduani(int i) /* 通过i 的值,判断信息要查找的信息是否存在*/{int j;if(i==-1){printf(" 要查找的学生不存在\n");/* 要查找的学生不存在*/ stop();}else{printf(" 查找到的学生信息为:\n");/*" 查找到的学生信息为:"*/ printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("================================================================ ===\n");printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year)Jfor(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");stop();}}void save() /* 保存文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL) /* 创建二进制文件*/{printf(" 创建文件失败,请重新运行程序.\n"); /* 显示" 创建文件失败,请重新运行程序"*/exit(0); /* 终止程序*/}for(i=0;i<num;i++)fwrite(&stu[i],1,sizeof(struct student),fp); /* 将I+1 名学生成绩写入文件*/ fclose(fp);}void main() /* 主控菜单*/{char c;init();while(1){printf("\t\t 请选择 :\n");/* 请选择: */ c=getchar(); getchar(); switch(c){case '1': weihu(); break; case '2': tongji(); break; case '3': paixu1(); break; case '4': find1(); break; case '9': save(); exit(0); break; default:printf(" 选择有误,请重选 !\n");/*" 选择有误,请重选! "*/printf("\n\t\t***制作:王清珍,陈超,路梓裕,卢诚知,****\n"); printf("\n\t\t*************************************************\n");printf("\t\t* 、 t t • I 、/, 主菜单*\n");printf("\t\t* 1. 维护 *\n"); /* 维护 */ printf("\t\t* 2. 统计 *\n"); /* 统计 */ printf("\t\t* 3. 排序 *\n"); /* 排序 */ printf("\t\t*4. 查找*\n"); /* 排序 */ printf("\t\t*9. 存盘退出*\n"); /* 存盘退出printf("\t\t************* 欢迎登陆学生成绩管理系统 ************\n"); printf("\t\t** ********************************************* **\n");。

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

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

C语言程序设计课程设计报告设计题目:学生成绩管理系统学号班级姓名完成方式:(单选)自我评分:(单选)●独立完成●优秀○参考他人工作的基础上完成○良好○在他人的帮助下完成○中等○完整拷贝他人成果○及格○不及格2011年5月11日一、总体设计1.程序的总体设计程序总框架2. 数据结构结构体数组struct student /*定义结构体变量student*/{int num;char name[10];int gen;int ch,en,math,tot;};Struct student Stu[100];3. 函数原型声明的说明(功能,参数,返回值)1).输出不及格名单:void failsbj(int n,struct student stu[]) /*输出不及格的名单,只要有一科不及格即进入名单*/2).计算平均分void sumup(int *n,struct student (*stu)[]) /*计算每个人各科平均分的函数*/3).打印所有数据void display(int n,struct student stu[]) /*输出所有数据*/ 4).检索void search(int n,struct student stu[]) /*依照名字或者数字搜索条目*/5).排序void assort(int n,struct student (*stu)[]) /*排序模块*/ 6).增加条目void add(int *n,struct student (*stu)[]) /*加入条目模块*/ 7).删除条目void del(int *n,struct student (*stu)[]) /*删除条目模块*/ 8).编辑条目void edit(int *n,struct student (*stu)[]) /*编辑条目模块*/ 9).导出列表void save(int *n,struct student (*stu)[]) /*将结果另存为*/ 10).统计分析void anlz(int *n,struct student (*stu)[]) /*统计全班成绩,包括求出各分数段人数,各科班平均分*/ 4. 流程图二、详细设计1.主程序如上图。

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

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

课程设计报告课程设计名称:C程序设计系:学生姓名:班级:学号:成绩:指导教师:目录第一章菜单设计 (1)1.1 设计题目及要求 (1)1,2 设计思路 (2)1.3流程图 (2)1.4具体实现 (2)1.5 程序运行截图 (5)第二章使用数组和指针统计成绩 (6)2.1 设计题目及要求 (6)2.2 设计要求 (6)2.3 设计思路 (7)2.4 流程图 (7)2.5 具体实现 (7)2.6 程序运行截图 (8)第三章学生成绩管理系统 (9)3.1 设计题目及要求 (9)3.2 设计思路 (11)3.3流程图 (12)3.4 具体实现 (12)3.5 程序运行截图 (20)小结 (22)参考文献 (23)第一章菜单设计1.1 设计题目及要求一.菜单内容:程序运行后,给出5个菜单项的内容和输入提示:1.FindNum2.FindRoot3.Bear4.Diamond5.Goodbye二、设计要求使用数字1-5来选择菜单项,其它输入则不起作用。

三、设计实例:首先编写一个菜单程序,输入1-6以进入相应选择项,从程序测试结构可知,当选择相应选择项时候,其输出信息为:FindNum、FindRoot、Bear、Diamond、Goodbye!●使用switch语句实现功能选择●应该设计一个函数用来输出提示信息和处理输入,这个函数应该返回一个数值,以便提供给switch语句使用四、增加菜单项的处理功能●FindNum功能:一只老鼠咬坏了账本,公式中符号()代表是被老鼠咬掉的地方。

要想恢复下面的等式,应在()中填上哪个相同的数字●FindRoot这里要求编制一个求方程ax^2+bx+c=0的根程序●Bear本题是一个笑话,话说有一只狗熊到玉米地里掰玉米,一边掰一边吃,第一天吃了一半,又拿走了一个回去喂狗熊。

第二天又去吃了剩下的一半,走时仍然带一个回去喂狗熊。

以后每天都吃前一天的一半,拿走一个。

到第十天时,地里只剩下一个玉米。

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

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

c学生成绩管理系统课程设计报告一、教学目标本课程的教学目标是使学生掌握学生成绩管理系统的核心知识,包括系统的设计、实现和应用。

具体来说,知识目标要求学生了解成绩管理系统的原理、结构和常用技术;技能目标要求学生能够使用相关工具和语言进行成绩管理系统的开发和维护;情感态度价值观目标要求学生认识到成绩管理系统在教育领域的重要性,培养学生的责任感和使命感。

二、教学内容根据课程目标,教学内容主要包括成绩管理系统的原理、结构、设计和实现。

具体来说,教材的章节安排如下:1.第一章:成绩管理系统的概述,介绍成绩管理系统的定义、功能和应用场景。

2.第二章:成绩管理系统的结构与原理,讲解成绩管理系统的组成部分、工作原理和关键技术。

3.第三章:成绩管理系统的需求分析,引导学生学习如何进行需求分析,并编写需求说明书。

4.第四章:成绩管理系统的系统设计,教授系统设计的方法和技巧,包括数据库设计、界面设计和模块划分。

5.第五章:成绩管理系统的实现与测试,指导学生进行系统编码、调试和测试,确保系统功能的正确性和稳定性。

三、教学方法为了实现课程目标,我们将采用多种教学方法,如讲授法、讨论法、案例分析法和实验法。

具体来说:1.讲授法:用于讲解成绩管理系统的理论知识,帮助学生建立系统性的知识体系。

2.讨论法:鼓励学生就实际问题进行讨论,培养学生的思考能力和团队协作精神。

3.案例分析法:通过分析典型成绩管理系统案例,使学生更好地理解并应用所学知识。

4.实验法:让学生动手实践,亲身体验成绩管理系统的开发和应用过程,提高学生的实际操作能力。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统性的知识学习。

2.参考书:提供丰富的参考资料,帮助学生拓展视野,深入理解成绩管理系统。

3.多媒体资料:制作课件、教学视频等多媒体资料,增强课堂教学的趣味性和互动性。

4.实验设备:配置必要的实验设备,确保学生能够进行实际操作,提高实践能力。

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

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

《C语言程序设计》课程设计报告学院计算机科学与工程学号14060205132姓名徐欢日期2015年1月7日一、课程设计题目:学生成绩管理系统二、需求分析(一)功能模块此成绩管理系统主要利用单链表或者结构数组实现(最好用单链表实现),具有如下的四大功能模块。

学生成绩管理系统功能模块如下:1.输入记录模块从键盘逐个输入学生记录。

2.查询记录模块查找最高分和不及格的学生并把该学生信息显示出来。

3.更新记录模块修改某一个学生的信息,对学生按照学号和成绩就行排序(升序或者降序);求出每个学生的平均成绩。

插入一个学生信息;删除一个学生的信息。

4.输出记录模块显示所有学生的信息。

(二)要求1.程序运行时,应该有相应的提示词。

2.合理的设计学生的信息;3.程序运行时,通过键盘操作,运行系统的每一个模块。

例如:使用键盘,敲1——运行输入记录模块;敲2——运行查询记录模块;余下的依次类推。

三、概要设计程序要有的功能:1. 输入记录2. 查找最高分和不及格学生信息3. 修改记录4. 按照学号和成绩排序5. 求每人平均成绩6. 插入学生信息7. 根据姓名删除信息流程图:四、详细设计1、头文件#ifndef _STUDENT_H_#define _STUDENT_H_#define MAXNAME_SIZE 20struct Student{int ID;char name[MAXNAME_SIZE];float Cgrade;float Egrade;float Mgrade;struct Student *next;};struct Student * CreatStudentList();int InsertStudent(struct Student *head);struct Student * FinditemByname(struct Student *head,char *name);struct Student * deleteItemByname(struct Student *head,char *name); void printfStudent(struct Student *head);int changeStudent(struct Student *head,char *name);void swap(struct Student * p,struct Student * q);void sort(struct Student *head,int x);void average(struct Student *head);#endif2、student.c#include "student.h"#include <stdio.h>#include <stdlib.h>#include <string.h>struct Student * CreatStudentList()//输入记录模块{struct Student * head=NULL;struct Student *p=NULL;struct Student *q=NULL;int isFirst=1;int ch=1;while(ch!=0){if(isFirst==1){head=(struct Student *)malloc(sizeof(struct Student));puts("请输入ID");scanf("%d",&head->ID);puts("请输入名字");scanf("%s",head->name);puts("请输入C语言成绩");scanf("%f",&head->Cgrade);puts("请输入英语成绩");scanf("%f",&head->Egrade);puts("请输入数学成绩");scanf("%f",&head->Mgrade);p=head;p->next=NULL;isFirst=0;}else{q=(struct Student *)malloc(sizeof(struct Student));puts("请输入ID");scanf("%d",&q->ID);puts("请输入名字");scanf("%s",q->name);puts("请输入C语言成绩");scanf("%f",&q->Cgrade);puts("请输入英语成绩");scanf("%f",&q->Egrade);puts("请输入数学成绩");scanf("%f",&q->Mgrade);p->next=q;p=q;p->next=NULL;}puts("是否继续---1或者0(1为继续)");scanf("%d",&ch);while(ch!=1 && ch!=0){puts("是否继续---1或者0(1为继续)");scanf("%d",&ch);}}return head;//head 返回函数第一个结点的位置}int InsertStudent(struct Student *head)//插入一个学生信息{struct Student *p=head;struct Student *pa=p;if(head==NULL) return 0;while(p->next!=NULL){p=p->next;}pa=p;p=(struct Student *)malloc(sizeof(struct Student));puts("请输入ID");scanf("%d",&p->ID);puts("请输入名字");scanf("%s",p->name);puts("请输入C语言成绩");scanf("%f",&p->Cgrade);puts("请输入英语成绩");scanf("%f",&p->Egrade);puts("请输入数学成绩");scanf("%f",&p->Mgrade);pa->next=p;p->next=NULL;return 1;}struct Student * FinditemByname(struct Student *head,char *name)//查找学生信息的函数{struct Student *p=head;struct Student *pa=p;if(head==NULL) return NULL;while(p->next!=NULL){if(strstr(p->name,name))//strstr指name在p->name中第一次出现的位置break;p=p->next;}if(strstr(p->name,name)){printf("%s find\n",name);printf("ID:%d\tName:%s\nCgrade:%6.2f\tEgrade:%6.2f\tMgrade:%6.2f\n",p->ID,p->name,p->Cgrade,p ->Egrade,p->Mgrade);}else{printf("%s not find\n",name);}return p;}struct Student *deleteItemByname(struct Student *head,char *name)//删除一个学生信息{struct Student *p=head;struct Student *pa=p;if(head==NULL) return 0;while(p->next!=NULL){if(strstr(p->name,name))break;pa=p;p=p->next;}if(strstr(p->name,name)){printf("%s find\n",name);if(p==pa && head->next !=NULL)head=head->next;else if(p==pa && head->next ==NULL)head=NULL;else if(p->next==NULL)pa->next=NULL;elsepa->next=p->next;free(p);}else{printf("%s not find\n",name);}return head;}void printfStudent(struct Student *head)//输出学生信息{struct Student *p=head;while(p!=NULL){printf("ID:%d\tName:%20s\t\tCgrade:%0.1f\tEgrade%0.1f\tMgrade%0.1f\n ",p->ID,p->name,p->Cgrade,p->Egrade,p->Mgrade);p=p->next;}}int changeStudent(struct Student *head,char *name)//修改某一个学生的信息{struct Student *p=NULL;p=FinditemByname(head,name);if(p!=NULL){puts("请输入ID");scanf("%d",&p->ID);puts("请输入名字");scanf("%s",p->name);puts("请输入C语言成绩");scanf("%f",&p->Cgrade);puts("请输入英语成绩");scanf("%f",&head->Egrade);puts("请输入数学成绩");scanf("%f",&head->Mgrade);return 1;}return 0;}void swap(struct Student * p,struct Student * q)//交换{struct Student * temp=(struct Student *)malloc(sizeof(struct Student));temp->ID=p->ID;temp->Cgrade=p->Cgrade;temp->Egrade=p->Egrade;temp->Mgrade=p->Mgrade;strcpy(temp->name,p->name);p->ID=q->ID;p->Cgrade=q->Cgrade;p->Egrade=q->Egrade;p->Mgrade=q->Mgrade;strcpy(p->name,q->name);q->ID=temp->ID;q->Cgrade=temp->Cgrade;q->Egrade=temp->Egrade;q->Mgrade=temp->Mgrade;strcpy(q->name,temp->name);free(temp);}void sort(struct Student *head,int x)//对学生按照学号和成绩就行排序{struct Student *p=head;struct Student *q=head;if(x==1){for(p;p->next!=NULL;p=p->next)for(q=p->next;q!=NULL;q=q->next)if(q->ID<p->ID)swap(p,q);}else if(x==2){for(p;p->next!=NULL;p=p->next)for(q=p->next;q!=NULL;q=q->next)if(q->Cgrade>p->Cgrade)swap(p,q);}else if(x==3){for(p;p->next!=NULL;p=p->next)for(q=p->next;q!=NULL;q=q->next)if(q->Egrade>p->Egrade)swap(p,q);}else if(x==4){for(p;p->next!=NULL;p=p->next)for(q=p->next;q!=NULL;q=q->next)if(q->Mgrade>p->Mgrade)swap(p,q);}}void average(struct Student *head)//求每个学生的平均成绩{struct Student *p=head;float aver;while(p!=NULL){aver=(p->Cgrade+p->Egrade+p->Mgrade)/3;printf("%s 的平均分为%0.2f\n",p->name,aver);p=p->next;}}3、test.c#include <stdio.h>#include <stdlib.h>#include "student.h"int fuc2(struct Student *head)//查找最高分和不及格的学生并显示学生信息{struct Student *p=head;struct Student *maxC,*maxE,*maxM;if(head==NULL)return 0;maxC=head;maxE=head;maxM=head;while(p!=NULL){if(maxC->Cgrade<p->Cgrade)maxC=p;if(p->Cgrade<60.0)printf("%20sC语言不及格,分数为:%0.2f\n",p->name,p->Cgrade);if(maxE->Egrade<p->Egrade)maxE=p;if(p->Egrade<60.0)printf("%20s英语不及格,分数为:%0.2f\n",p->name,p->Egrade);if(maxM->Mgrade<p->Mgrade)maxM=p;if(p->Mgrade<60.0)printf("%20s数学不及格,分数为:%0.2f\n",p->name,p->Mgrade);p=p->next;}printf("C语言最高分%20s,分数为:%0.2f\n",maxC->name,maxC->Cgrade);printf("英语最高分%20s,分数为:%0.2f\n",maxE->name,maxE->Egrade);printf("数学最高分%20s,分数为:%0.2f\n",maxM->name,maxM->Mgrade);system("pause");return 0;struct Student * fuc3(struct Student *head)//更新记录模块{int fuc=0;char name[20];if(head==NULL)return head;BBB:printf("********************** 更新记录模块***********************\n");printf("**1.修改学生信息**\n");printf("**2.删除学生信息**\n");printf("**3.插入学生信息**\n");printf("**4.根据学号排序**\n");printf("**5.根据C语言成绩排序**\n");printf("**6.根据英语成绩排序**\n");printf("**7.根据数学成绩排序**\n");printf("**8.输出每个学生的平均成绩**\n");printf("**9.退出**\n");printf("**请输入需要操作的功能(1-9)**\n");scanf("%d",&fuc);while(fuc>9||fuc<1){printf("输入功能的编号错误(1-9)\n");scanf("%d",&fuc);}switch(fuc){case 1:{ system("cls");printf("**请输入要修改学生的名字**\n");scanf("%s",name);changeStudent(head,name);goto BBB;}case 2:{ system("cls");printf("**请输入要删除学生的名字**\n");scanf("%s",name);head=deleteItemByname(head,name);goto BBB;}case 3:system("cls");InsertStudent(head);goto BBB;case 4:system("cls");sort(head,1);printfStudent(head);goto BBB;case 5:system("cls");sort(head,2);printfStudent(head);goto BBB;case 6:system("cls");sort(head,3);printfStudent(head);goto BBB;case 7:system("cls");sort(head,4);printfStudent(head);goto BBB;case 8:system("cls");average(head);goto BBB;case 9:return head;}return head;}int main(){struct Student *head=NULL;int fuc=0;system("color 03");AAA:system("cls");printf("***************** 学生管理系统***********************\n");printf("** 1.输入记录模块**\n");printf("** 2.查询记录模块**\n");printf("** 3.更新记录模块**\n");printf("** 4.输出记录模块**\n");printf("** 5.退出**\n\n");printf("** 请输入需要操作的功能(1-5)**\n");scanf("%d",&fuc);while(fuc>5||fuc<1){printf("输入功能的编号错误(1-5)\n");scanf("%d",&fuc);}switch(fuc){case 1:system("cls");head=CreatStudentList();goto AAA;case 2:system("cls");fuc2(head);goto AAA;case 3:system("cls");head=fuc3(head);goto AAA;case 4:system("cls");printfStudent(head);system("pause");goto AAA;case 5:return 0;}return 0;}四、程序使用说明、测试分析及结果1.程序的主要功能:1. 输入记录2. 查找最高分和不及格学生信息3. 修改记录4. 按照学号和成绩排序5. 求每人平均成绩6. 插入学生信息7. 根据姓名删除信息输入程序对应功能的相应序号,选择相应功能,然后根据提示继续。

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

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

c语言课程设计报告学生成绩管理系统一、教学目标本课程旨在让学生掌握C语言的基本语法和编程技巧,通过实现一个学生成绩管理系统,培养学生运用C语言解决实际问题的能力。

具体目标如下:1.知识目标:–掌握C语言的数据类型、运算符、控制结构、函数等基本语法。

–理解结构体和文件操作等相关知识。

2.技能目标:–能够运用C语言编写简单的程序。

–学会使用C语言实现数据的输入、输出和处理。

–掌握使用结构体创建学生成绩数据结构,并实现对成绩的增删改查等操作。

3.情感态度价值观目标:–培养学生对编程的兴趣,增强自信心。

–培养学生的团队协作能力和解决问题的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、文件操作等。

具体安排如下:1.C语言基本语法:数据类型、变量、运算符、控制结构、函数等。

2.数据结构:结构体、数组、指针等。

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

4.学生成绩管理系统:实现一个学生成绩管理系统,包括学生的增删改查、成绩的排序、统计等功能。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

1.讲授法:用于讲解C语言的基本语法和概念。

2.案例分析法:通过分析实际案例,让学生学会运用C语言解决实际问题。

3.实验法:让学生动手实践,编写程序,培养实际编程能力。

四、教学资源1.教材:《C程序设计语言》或《C语言入门教程》。

2.参考书:《C Primer Plus》、《C语言编程思想》等。

3.多媒体资料:教学PPT、视频教程等。

4.实验设备:计算机、网络等。

五、教学评估本课程的评估方式包括平时表现、作业、考试等。

评估方式应客观、公正,能够全面反映学生的学习成果。

具体安排如下:1.平时表现:占课程总评的30%,包括课堂参与度、提问回答、小组讨论等。

2.作业:占课程总评的30%,包括课后练习、编程作业等。

3.考试:占课程总评的40%,包括期中考试和期末考试。

六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节进行教学,确保在有限的时间内完成教学任务。

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

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

C语言程序设计课程设计报告设计题目:学生成绩管理系统学号班级姓名完成方式:(单选)自我评分:(单选)●独立完成●优秀○参考他人工作的基础上完成○良好○在他人的帮助下完成○中等○完整拷贝他人成果○及格○不及格2011年5月11日一、总体设计1.程序的总体设计程序总框架2. 数据结构结构体数组struct student /*定义结构体变量student*/{int num;char name[10];int gen;int ch,en,math,tot;};Struct student Stu[100];3. 函数原型声明的说明(功能,参数,返回值)1).输出不及格名单:void failsbj(int n,struct student stu[]) /*输出不及格的名单,只要有一科不及格即进入名单*/2).计算平均分void sumup(int *n,struct student (*stu)[]) /*计算每个人各科平均分的函数*/3).打印所有数据void display(int n,struct student stu[]) /*输出所有数据*/ 4).检索void search(int n,struct student stu[]) /*依照名字或者数字搜索条目*/5).排序void assort(int n,struct student (*stu)[]) /*排序模块*/ 6).增加条目void add(int *n,struct student (*stu)[]) /*加入条目模块*/ 7).删除条目void del(int *n,struct student (*stu)[]) /*删除条目模块*/ 8).编辑条目void edit(int *n,struct student (*stu)[]) /*编辑条目模块*/ 9).导出列表void save(int *n,struct student (*stu)[]) /*将结果另存为*/ 10).统计分析void anlz(int *n,struct student (*stu)[]) /*统计全班成绩,包括求出各分数段人数,各科班平均分*/ 4. 流程图二、详细设计1.主程序如上图。

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

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

c语言课程设计学生成绩管理系统一、课程目标知识目标:1. 理解C语言编程的基本概念,掌握数据类型、变量、运算符、控制结构等基础知识。

2. 学习使用数组、函数和指针等C语言特性进行程序设计。

3. 掌握文件操作,实现对数据的保存和读取。

技能目标:1. 能够运用C语言编写学生成绩管理系统的各个功能模块,如录入、查询、修改和删除成绩。

2. 培养学生运用结构体处理复杂数据结构的能力。

3. 提高学生分析问题、设计程序、调试程序和解决问题的能力。

情感态度价值观目标:1. 培养学生认真负责、细心严谨的学习态度,养成良好的编程习惯。

2. 激发学生创新意识,鼓励合作交流,提高团队协作能力。

3. 培养学生面对挫折和困难时,保持积极心态,勇于克服问题。

本课程针对高年级学生,结合C语言课程知识,以学生成绩管理系统为实际案例,注重理论与实践相结合。

在教学过程中,充分考虑学生的认知特点,由浅入深,逐步引导学生掌握C语言编程技能,培养实际编程能力。

课程目标明确,分解为具体学习成果,便于教学设计和评估。

通过本课程的学习,使学生能够独立完成学生成绩管理系统的设计与实现,提高编程水平和实践能力。

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

相关教材章节:第一章至第三章。

2. 函数与数组:函数定义、调用、传参;一维数组、二维数组的应用。

相关教材章节:第四章、第六章。

3. 指针与结构体:指针的概念、操作;结构体的定义、初始化、使用。

相关教材章节:第七章、第八章。

4. 文件操作:文件打开、关闭、读写操作;文件存储结构。

相关教材章节:第十章。

5. 学生成绩管理系统设计与实现:a. 功能需求分析:录入、查询、修改、删除成绩。

b. 数据结构设计:学生信息结构体、成绩结构体、链表或数组实现。

c. 功能模块实现:各功能模块的详细设计与编程实现。

d. 系统测试与调试:单元测试、集成测试、性能优化。

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

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

c语言课程设计报告学生成绩管理系统一、课程目标知识目标:1. 学生能理解并掌握C语言基础,包括变量定义、数据类型、运算符、控制结构等。

2. 学生能运用C语言实现学生成绩管理系统的基本功能,如添加、删除、修改、查询学生成绩。

3. 学生了解并掌握文件操作在C语言中的应用,实现对数据的持久化存储。

技能目标:1. 学生能够运用结构体数组管理大量数据,培养数据组织和管理的实际操作能力。

2. 学生通过编程实践,掌握模块化编程方法,提高代码的复用性和可维护性。

3. 学生通过团队协作,培养沟通与协作能力,共同完成学生成绩管理系统的设计与实现。

情感态度价值观目标:1. 学生通过解决实际问题,培养对编程的兴趣,激发探究精神。

2. 学生在团队协作中,学会尊重他人意见,培养合作精神,提高解决问题的信心。

3. 学生认识到编程在生活中的实际应用,增强对计算机科学的认识和热爱。

课程性质:本课程为实践性较强的学科,结合C语言编程知识,以项目驱动的方式进行教学。

学生特点:学生为高中一年级学生,已具备一定的计算机操作能力,对编程有一定了解,但实际操作经验不足。

教学要求:教师需引导学生掌握C语言基础知识,注重实践操作,鼓励学生主动探究、团队协作,培养解决实际问题的能力。

在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。

二、教学内容根据课程目标,教学内容分为以下三个部分:1. C语言基础知识:- 变量定义、数据类型、常量与变量- 运算符、表达式、语句- 控制结构:顺序、选择、循环- 函数的定义与调用- 指针与数组2. 学生成绩管理系统功能实现:- 结构体的定义与使用- 结构体数组操作- 系统功能模块划分:添加、删除、修改、查询学生成绩- 函数调用关系分析,实现模块化编程3. 文件操作与数据持久化:- 文件打开、关闭、读写操作- 学生成绩数据的存储与读取- 文件错误处理与异常处理教学大纲安排:第一周:C语言基础知识复习,学习结构体和结构体数组第二周:学生成绩管理系统功能设计,编写添加、删除、修改、查询功能的代码第三周:文件操作学习,实现学生成绩数据的持久化存储,优化系统性能第四周:项目测试、调试与优化,总结交流教学内容与教材关联性:本教学内容与教材《C语言程序设计》相关章节紧密关联,涵盖第3章至第6章的知识点,以及第8章文件操作部分。

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

C语言课程设计报告题目:学生成绩管理系统设计者:张帅专业班级:计算机应用技术101班学号: 20101712101指导教师:高国红2011年 12 月 23 日学生成绩管理系统课程设计报告目录一.系统软件环境 (3)二.课程设计目的 (3)三.内容与要求 (3)四.程序主要功能 (4)五.系统功能设计 (4)六.函数实现功能说明 (6)七.调试分析 (9)八.心得与体会 (10)九.各功能模块的实现及其程序清单 (10)十、附页源程序清单 (11)学生成绩管理系统课程设计报告一.系统软件环境:本程序主要运行在:Visual C++ 6.0(主要)Turbo C/C++ 3.0Turbo C 2.0二.课程设计目的:本课程设计的系统是早已在很多领域均有应用,是一个很不错的教学管理系统,而且其功能更是相当强大、界面更加友好的应用型软件。

而现在我的设计并非是重走旧路,而我的设计主要目的在于学习并深刻地掌握对C语言的基础知识以及其实践经验,更好地在以后的学习中能够更好地运用学习。

特别是像这种比较多运用到一些课本上没有教的知识,比如说,像清屏函数CLRSCR、菜单函数MENU等。

许多都是一开始就没有涉及到的知识,在自已的设计中得到了提升,更加重要的一点就是增加了自已的实践操作能力。

三.内容与要求:内容:成绩信息,内容如下:姓名学号语文数学英语张明明 01 67 78 82李成友 02 78 91 88张辉灿 03 68 82 56王露 04 56 45 77陈东明 05 67 38 47请用C/C++编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面:要求:(一)功能要求:(1)信息维护:要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。

此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:要求:查询时可实现按姓名查询、按学号查询(3)成绩统计:要求:A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。

(二)其它要求:(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读Array(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档四.程序主要功能:本系统的主要功能有如下:(1)、新输入学生的详细信息(包括:学号、姓名、语文成绩、数学成绩、英语成绩)(2)、增加学生的信息(3)、删除学生的信息(4)、查询学生的信息(5)、统计学生的成绩注:由于本人能力有限,不能完全地将所有的功能模块做出来;但我相信我能够再接再Array厉,继续开发下去的,并向人性化发展。

五.系统功能设计:(一)、本系统的总体框架图:(二)、本系统的总体流程图:(1)、MENU函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择。

其运行结果如下图:(以下的皆是在Visual C++ 6.0 中的运行结果)(2)、CREAT函数是定义用于创建新的链表,并带回一个指向链表头的指针。

其功能是输入最初的学生信息。

其运行结果如下图:(3)、ADD函数是定义用于再次输入学生信息,并将所有的学生信息按学号排序。

其运行结果如图:(4)、DEL函数是定义用于删除学生信息。

其运行如下图:(5)、SEARCH函数是定义义用于查询学生信息,主要是学号的查询。

其运行结果如下图:(6)、TAXIS函数是定义用于统计学生的成绩信息,采用排序函数的方式对学号/数学等的排序。

其运行结果如下图:七.调试分析:因在不同的环境中运行是有不同的结果,以下分三个环境中说明:(1)、在Turbo C 2.0在这个环境下运行警告之处比较多,在调试时采用的图象处理函数在其它两个环境中不能运行。

例如:在原程序中加入#include “graphics.h”{ int gdtiver=DETECT,gmode;Initgraph(&gdriver,&gmode,“图象处理函数的路径”);Cleardevice();Setbkcolor(颜色值);}**在Turbo C/C++ 3.0 中的Error提示是:Undefined symboc _c closegraph in module ……原因在于:TC 3.0中对图象的处理函数有不足之处。

**在Visual C++ 6.0 中的Error提示是:BGI Error:Graghics not initialized (use’initgraph’)Cannot open includefile:”graphics.h”No such file or diretory原因在于:VC 6.0中对图象处量理的函数与TC中的不一样。

(2)、在Turbo C/C++ 3.0在这个环境中运行到输入学生姓名时就出错:Error:(在用户窗口中可以看到)Scanf:floating point formats not linkedAb mormal program termination**原因在于:连接浮点库错误。

**解决办法:在主函数中加入:fioat arg,*pointer=&arg;即可运行。

(3)、在Visual C++ 6.0在此环境下运行比较好,其界面十分友好并且能正常运行。

#include “process.h”{ system(“cls”);}八.心得与体会:(1)、通过本次对C功地运用各类函数、循环变量、结构化的程序设计,以及结构体、指针的使用。

(2)、但在学习中发现,编程确实不是很好做的,并非是你想要就能完成的,它需要的是认真、仔细地对待每一个程序块,特别是在对指针的使用时更加困难,那些指针指来指去,一不小心就会看错,编译不出来。

(3)、由于学生的我只是大一而已,没能够完完全全地把程序做出来,而且程序中有许多不足之处不能够正确地将它改正,但总体上是可以运行的。

九.各功能模块的实现及其程序清单:(1)、各功能模块的实现(请参照第六点:函数实现功能说明)(2)、程序清单(请见附页)参考文献[1] 谭浩强编著.C程序设计第三版.北京:清华大学出版社,2005[2] 林瑞仲等编著.C语言实例解析精粹.北京:人民邮电出版社,2005附页:学生成绩管理系统源程序清单#include "stdio.h"#include "stdlib.h"#include "malloc.h"#define ABC sizeof(struct scoreflie)#define ABCDE#include "string.h"struct scoreflie{int number;char name[10];float yuwen;float shuxue;float yingyu;struct scoreflie *next; };typedef struct scoreflie score;int n,k;功能(1):创建链表,输入学生成绩信息score *creat(void){score*head;score *p1,*p2,*p3,*max;int i,j;float fen;char t[10];n=0;p1=p2=p3=(score *)malloc(ABC);head=p3; /*开辟一个新单元*/printf("Please Input Students Message,Piess(0)is out!\n");repeat1: printf("Input the numder(N.>0):");/*输入学号,学号应大于0*/scanf("%d",&p1->number);while(p1->number<0){getchar();printf("Is wrong, Input again the numder:");scanf("%d",&p1->number);}/*输入学号为字符或小于0时程序报错,提示重新输入学号*/ if(p1->number==0)goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/else{ p3=head;if(n>0){for(i=0;i<n;i++){if(p1->number!=p3->number)p3=p3->next;else{ printf("The numder is Repetition,Input again!:\n");goto repeat1;/*当输入的学号已经存在,程序报错,返回前面重新输入*/} } } }printf("Input The Name:");scanf("%s",&p1->name);/*输入学生姓名*/printf("Input yuwen Score(0~100):");/*输入语文成绩,成绩应在0-100*/scanf("%f",&p1->yuwen);while(p1->yuwen<0||p1->yuwen>100){getchar();printf("Is wrong,Input again:");/*输入错误,重新输入语文成绩直到正确为止*/ scanf("%f",&p1->yuwen);}printf("Input shuxue Score(0~100):");/*输入数学成绩,成绩应在0-100*/scanf("%f",&p1->shuxue);while(p1->shuxue<0||p1->shuxue>100){getchar();printf("Is wrong,Input again:");/*输入错误,重新输入数学成绩直到正确为止*/ scanf("%f",&p1->shuxue);}printf("Input yingyu Score(0~100):");/*输入英语成绩,成绩应在0-100*/scanf("%f",&p1->yingyu);while(p1->yingyu<0||p1->yingyu>100){getchar();printf("Is wrong,Input again:");scanf("%f",&p1->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/head=NULL;while(p1->number!=0){ n=n+1;if(n==1)head=p1;elsep2->next=p1; p2=p1;p1=(score *)malloc(ABC);/*开辟一个新单元以下的注释内容同上*/printf("Please Input Students Message,Piess(0)is out!\n");repeat2:printf("Input the numder(N.>0):");scanf("%d",&p1->number);while(p1->number<0){getchar();printf("Is wrong, Input again the numder:");scanf("%d",&p1->number);}if(p1->number==0)goto end;else{p3=head;if(n>0){for(i=0;i<n;i++)- 11 -。

相关文档
最新文档