C语言程序设计报告学生成绩记录簿

合集下载

C语言编一个成绩记录簿

C语言编一个成绩记录簿

1. 设计要求:成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分。

在程序中可以输入新的成绩记录,可以按学号或姓名查询一个学生的所有成绩,和已完成的总学分。

也可以按课程编号查出一个班的成绩表,班成绩表后面要统计平均分,和及格率。

2. 提高水平在程序中增加将数据写入文本文件和从文件中读入数据的功能,文件名由用户输入。

3. 提示在没有使用文件时,数据可以保存在一个大的数组中,要注意的数据项的类型。

知识范围;C程序设计第三版谭浩强答案一// 包含必须的头文件#include<stdio.h>#include<stdlib.h>#include<string.h>// 定义课程的结构体struct course{int num; //课程编号char name[20]; // 课程名字int result; // 学生的成绩float credit; // 学分};// 定义成绩记录簿的结构体,每个学生修了4门课struct scorelist{int num; //学号char name[10]; //学生姓名struct course subject[4]; //课程相关的数据。

意思是一个学生修了4门课};int n=0; // n用来存储一共有多少个学生struct scorelist score[200]; //初始化成绩记录簿,上限为200条学生成绩// 查询课程的函数void queryclass(){int number,i,j,max=0,count=0;float average;//平均分float pass=0; //及格人数printf("*********请输入要查询的课程编号:");scanf("%d",&number);// 遍历所有的学生,打印每个学生修的课程成绩for(i=0;i<n;i++) // 遍历所有学生{ for(j=0;j<4;j++) // 遍历当前学生所修的4门课{if(score[i].subject[j].num==number) // 如果符合此条件,说明当前条目即为用户查询的课程{printf("学号:%d 姓名:%s %s:%d\n",score[i].num,score[i].name,score[i].subject[j].name,score[i].subject[j].res ult);if(score[i].subject[j].result>=60)pass++;max+=score[i].subject[j].result;count++;}}}if(count!=0){average=(float)max/count;pass=pass/count;printf("平均分:%f\n",average);printf("及格率:%.2f%c\n\n",pass*100,37);}}// 查询学生信息void querystudent(){ char xm[10];int i,flag=0,j,a,xh;printf("*********请输入要查询的项目: 1.学号 2.姓名;");scanf("%d",&a);if(a==1) scanf("%d",&xh);else scanf("%s",xm);// 根据用户输入判定用户是根据学号还是姓名查询switch(a){// 根据学号查询case 1:// 遍历查找用户所输入的学号for(i=0;i<n;i++)if(score[i].num==xh){j=i;flag=1;}if(flag==0) printf("*****抱歉没有找到.******"); // 没有找到,跳出else //找到了用户输入的学号,打印{ printf("学号:%d 姓名: %s\n",score[j].num,score[j].name);printf("**课程编号课程名称课程成绩课程学分**\n");for(i=0;i<4;i++){printf("%d %s %d %5.2f\n",score[j].subject[i].num,score[j].subject[i].name,score[j].subject[i].result,score[j].subject[i].credit);}}break;// 根据姓名查询case 2:// 遍历查找用户输入的姓名for(i=0;i<n;i++)if(strcmp(score[i].name,xm)==0){j=i;flag=1;}if(!flag) printf("*****抱歉没有找到.******");else // 找到了用户输入的学生姓名,打印{ printf("学号:%d 姓名: %s\n",score[j].num,score[j].name);printf("课程编号课程名称课程成绩课程学分\n");for(i=0;i<4;i++){printf("%d %s %d %f\n",score[j].subject[i].num,score[j].subject[i].name,score[j].subject[i].result,score[j].subject[i].credit);}}break;default:printf("****输入错误!!****");}}// 删除一条学生记录void del(){ char xm[10];int i,flag=0,j,a,xh;printf("****请输入要删除的项目: 1.学号 2.姓名:");scanf("%d",&a);// 根据用户输入进行不同的查找switch(a){// 接收用户输入为学号case 1:scanf("%d",&xh);// 查找此学号的记录for(i=0;i<n;i++)if(score[i].num==xh) // 找到{for(j=i;j<n-1;j++) //进行删除,策略是用后一项覆盖前一项,达到删除目的score[j]=score[j+1];n=n-1;flag=1;}if(!flag)printf("*****抱歉没有找到.******\n");break;// 接收用户输入为姓名。

C语言程序设计报告-学生成绩记录簿

C语言程序设计报告-学生成绩记录簿
2.1程序系统的结构
2.2结构流程图
2.3功能
2.4性能
2.5输入输出项信息
3功能模块说明
3.1流程逻辑
3.2算法
4程序测试,运行结果及说明
5课程设计总结
6附录(参考文献,原代码解析,限制条件,程序测试)
6.1参考文献
6.2原代码解析
6.3限制条件
1.概述
1.1 题目
成绩记录簿
1.2程序描述
本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。
(2)按学号查询
4.查询班级成绩
5.写入文本文件
6.读取文本文件
4课程设计总结
短短的俩周已经过去了,在此我将交出我一周的成果,我真是百感交错
1.原先写程序直接编,条理性太差。如果先做一个流程图就条理很多。
2.学会了将文件存入和读取,并学会在文件中加入信息和删除信息。
3.我在查找学生姓名时遇到困难,从课本上找到了一个函数strcmp,解决了问题
1.建立一个主界面
2.用switch语句进行分类讨论
3.分别进入录入,查询,删除,求平均值等子函数。
4.将子函数与主函数相连即可。
1.3程序性能
该程序可以建立学生的成绩记录。可以方便老师和同学方便的查阅成绩;
这个程序有录入和删除的功能;
还可以求出平均成绩,并排序
2课题分析
2.1程序系统的结构
2.2程序流程图
按平均值排序只要加一个排序函数即可。

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

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

移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",&num;switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。

成绩记录簿

成绩记录簿

// 成绩记录簿(★★★)//编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。

具体功能:// (1)创建信息链表并以磁盘文件保存;// (2)读取磁盘文件并显示输出所有学生的成绩;// (3)按学号或姓名查询成绩;// (4)添加成绩记录;// (5)修改指定姓名或学号的学生的成绩并可存盘;// (6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息。

#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<ctype.h>/*定义学生的类型*/struct cj{int cjnum; //定义学号为整型char cjname[20]; //定义姓名为字符数组float cjcreat,cjnew; //定义成绩,新成绩为浮点型}cj[1000];//////////////////////////////////查询成绩模块///////////////////////////////////////////////////////////////////////////按学号查询/////////////////////////////////////////////findcj(){FILE *fp; //定义文件fpint cjnum;//定义学号int i; //定义变量i用来控制学生的个数fp=fopen("cj.txt","r"); //用只读的形式打开文件cj.txtprintf("\n请输入您要查找的学生学号:");scanf("%d",&cjnum); //输入学号for(i=0;fread(&cj[i],sizeof(struct cj),1,fp)!=0;i++){if(cjnum==cj[i].cjnum) //判断有没有你要查找的学号{printf("\n您要查找的成绩详细信息为:\n");printf("学号姓名成绩\n%d %8s %f\n",cj[i].cjnum,cj[i].cjname,cj[i].cjcreat);printf("\n查询成功,请按任意键返回.");fclose(fp);return 0; //结束此操作}}printf("没有您要查询的信息!\n");fclose(fp);//关闭文件return 0;}/////////////////////////////////////按姓名查询///////////////////////////findcj1(){FILE *fp;char cjname[20];int i;fp=fopen("cj.txt","r"); //打开文件printf("\n请输入您要查找的学生姓名:\n"); //查找的学生姓名scanf("%s",cjname); //输入姓名for(i=0;fread(&cj[i],sizeof(struct cj),1,fp)!=0;i++) //在文件中查找{if(strcmp(cjname,cj[i].cjname)==0) //判断有没有你要查找的姓名{printf("\n您要查找的成绩的详细信息为:\n");printf("学号姓名成绩\n%d %8s %f\n",cj[i].cjnum,cj[i].cjname,cj[i].cjcreat);printf("\n查询成功,请按任意键返回.");fclose(fp); //关闭文件return 0;}}printf("没有您要查询的信息\n");fclose(fp);return 0;}////////////////////////////////////查询成绩信息///////////////////////////////////chacj(){char ch5;do //不选择返回则进行{system("cls");//将屏幕清空printf("\n ◎◎◎欢迎进入成绩查询系统◎◎◎\n");printf(" 1: 按学号查询\n");printf(" 2: 按姓名查询\n");printf(" 0: 返回\n");printf(" 请输入您的选择:(0━2):");ch5=getch();switch(ch5){case '1':findcj();getch();break; //调用findcj(),按学号查询case '2':findcj1();getch();break; //调用findcj1(),按姓名查询case '0':break; //退出,返回上一操作default:printf("无此操作!\n");getch();break; //没输入任何数字时则输出无此操作}}while(ch5!='0');return 0;}////////////////////////////成绩管理模块//////////////////////////////////////////////////////////////////增加成绩信息///////////////////////////////////////addcj(){FILE *fp;int i=0;char choice='y';fp=fopen("cj.txt","a+");//用追加的形式打开文件cj.txtwhile(choice=='y'||choice=='Y') //选择y或Y{system("color 3f");//设置背景颜色system("cls"); //清屏printf("\n ◎◎◎欢迎进入成绩添加系统◎◎◎\n");printf("\n请输入您要添加的学号:");scanf("%d",&cj[i].cjnum);printf("\n请输入您要添加的姓名:");scanf("%s",cj[i].cjname);printf("\n请输入您要添加的c的成绩:");scanf("%f",&cj[i].cjcreat);fwrite(&cj[i],sizeof(struct cj),1,fp); //将添加的内容写入文件中printf("\n是否要输入下一名学生的信息(y/n):");scanf("%s",&choice);}fclose(fp);}///////////////////////////////删除学生信息////////////////////////////////////delcj(){FILE *fp,*fp2;int i;char cjname[20],choice;system("cls"); //清屏fp=fopen("cj.txt","r"); //只读形式打开文件cj.txtfp2=fopen("cj1.txt","w"); //只写形式打开文件cj1.txtprintf("\n请输入您要删除的姓名:\n");scanf("%s",cjname);for(i=0;fread(&cj[i],sizeof(struct cj),1,fp)!=0;i++) //使用for控制在文件fp中要查找信息{if(strcmp(cjname,cj[i].cjname)!=0) //看删除的姓名中有没要删除的姓名{fwrite(&cj[i],sizeof(struct cj),1,fp2); //将信息写入文件fp2中}}fclose(fp);//关闭文件fpfclose(fp2); //关闭文件fp2printf("确认删除(y/n)?");scanf("%s",&choice); //输入选择y或nif(choice=='y'||choice=='Y'){fp=fopen("cj.txt","w");fp2=fopen("cj1.txt","r");for(i=0;fread(&cj[i],sizeof(struct cj),1,fp2)!=0;i++) //使用for控制在文件fp2中要查找信息{fwrite(&cj[i],sizeof(struct cj),1,fp); //将信息写入文件fp中}fclose(fp);fclose(fp2);fp2=fopen("cj1.txt","w");fclose(fp2);printf("\n删除成功,按任意键返回...\n");getch();return 0;}else{printf("\n按任意键返回...\n");getch();return 0;}}//////////////////////////////////////修改成绩信息/////////////////////////////////////////changecj(){FILE *fp,*fp2;char cjname[20],choice;int i,cjnum;float cjcreat,cjnew;system("cls");fp=fopen("cj.txt","r");for(i=0;fread(&cj[i],sizeof(struct cj),1,fp)!=0;i++){printf("\n ◎◎◎欢迎进入成绩修改系统◎◎◎\n");printf("\n 1: 按学号修改成绩信息:");printf("\n 2: 按姓名修改成绩信息:");printf("\n 0: 返回\n");printf(" 请输入您的选择(0━2):");choice=getch();switch(choice){case '1': //按学号修改成绩信息{printf("\n\n请输入您要修改的学生的学号:");scanf("%d",&cjnum);fclose(fp);fp=fopen("cj.txt","r");for(i=0;fread(&cj[i],sizeof(struct cj),1,fp)!=0;i++){if(cjnum==cj[i].cjnum) //判断有没有你要查找的学号{fwrite(&cj[i],sizeof(struct cj),1,fp);//将学号写入cj.txt中printf("\n\n你所要修改的成绩的资料如下:\n");printf("学号姓名成绩\n");printf("%d %8s %f\n",cj[i].cjnum,cj[i].cjname,cj[i].cjcreat);fclose(fp);fp=fopen("cj.txt","r+");printf("\n新的成绩:");scanf("%f",&cj[i].cjnew);cj[i].cjcreat=cj[i].cjnew; //将新的成绩覆盖原来的成绩fseek(fp,i*sizeof(struct cj),1);//将光标定位到当前位置fwrite(&cj[i],sizeof(struct cj),1,fp);fclose(fp);printf("\n修改成功,请按任意键返回.");getch();return 0;}}printf("\n没有您要修改的成绩的学号!");return 0;break;}case '2': //按姓名修改成绩信息{printf("\n\n请输入您要修改的学生的姓名:");scanf("%s",cjname);fp=fopen("cj.txt","r");fp2=fopen("cj1.txt","w");for(i=0;fread(&cj[i],sizeof(struct cj),1,fp)!=0;i++){if(strcmp(cjname,cj[i].cjname)==0) //判断有没有你要查找的姓名{fwrite(&cj[i],sizeof(struct cj),1,fp2);printf("\n你所要修改的成绩的资料如下:\n");printf("学号姓名成绩\n");printf("%d %8s %f\n",cj[i].cjnum,cj[i].cjname,cj[i].cjcreat);fp=fopen("cj.txt","r+");fp2=fopen("cj1.txt","r");printf("\n新的成绩:");scanf("%f",&cj[i].cjnew);cj[i].cjcreat=cj[i].cjnew;fseek(fp,i*sizeof(struct cj),1);fwrite(&cj[i],sizeof(struct cj),1,fp);fclose(fp);fclose(fp2);printf("\n修改成功,请按任意键返回.");getch();return 0;}}printf("\n没有您要修改的成绩的姓名!");return 0;break;}case '0':break;default:printf("无此操作!");getch();break;}return 0;}fclose(fp);return 0;}////////////////////////////////////输出各段成绩////////////////////////////////////shuchucj(){FILE *fp;int i=0;float cjcreat;fp=fopen("cj.txt","r");system("cls");///////////////////////////////////////输出60~79分以上的//////////////////////////////printf("输出60~79之间的:\n");for(i=0;fread(&cj[i],sizeof(struct cj),1,fp)!=0;i++)if(cj[i].cjcreat>=60 && cj[i].cjcreat<=79) //判断此段的成绩是否有{printf(" 学号姓名成绩\n");printf("%d %8s %f\n",cj[i].cjnum,cj[i].cjname,cj[i].cjcreat);}fclose(fp);/////////////////////////////////////输出80~89分之间的/////////////////////////////////fp=fopen("cj.txt","r");printf("输出80~89之间的:\n");for(i=0;fread(&cj[i],sizeof(struct cj),1,fp)!=0;i++)//判断此段的成绩是否有if(cj[i].cjcreat>=80 && cj[i].cjcreat<=89){printf("学号姓名成绩\n");printf("%d %8s %f\n",cj[i].cjnum,cj[i].cjname,cj[i].cjcreat);}fclose(fp);/////////////////////////////////////输出90分以上的///////////////////////////////fp=fopen("cj.txt","r");printf("输出90以上的:\n");for(i=0;fread(&cj[i],sizeof(struct cj),1,fp)!=0;i++) //判断此段的成绩是否有if(cj[i].cjcreat>=90 && cj[i].cjcreat<=100){printf("学号姓名成绩\n");printf("%d %8s %f\n",cj[i].cjnum,cj[i].cjname,cj[i].cjcreat);}fclose(fp);////////////////////////////////////输出60分以下的///////////////////////////////fp=fopen("cj.txt","r");printf("输出60以下的:\n");for(i=0;fread(&cj[i],sizeof(struct cj),1,fp)!=0;i++)if(cj[i].cjcreat>=0 && cj[i].cjcreat<=59)//判断此段的成绩是否有{printf("学号姓名成绩\n");printf("%d %8s %f\n",cj[i].cjnum,cj[i].cjname,cj[i].cjcreat);}fclose(fp);}/////////////////////////////////成绩浏览信息////////////////////////////////////////cjcount(){FILE *fp;int i,n=0;fp=fopen("cj.txt","r");system("cls");printf("\n*********************************************************************** ********\n");printf("\n*********************************成绩信息浏览**********************************\n");printf("\n*********************************************************************** ********\n");for(i=0;fread(&cj[i],sizeof(struct cj),1,fp)!=0;i++){if(cj[i].cjnum!=0&&strlen(cj[i].cjname)!=0&&cj[i].cjcreat!=0) //当学号、姓名和成绩都存在{printf("\n第%d名\n学号姓名成绩\n",i+1);printf("%d %8s %f\n",cj[i].cjnum,cj[i].cjname,cj[i].cjcreat);n=n+1;}}fclose(fp);printf("\n目前共有%d名.",n);printf("\n按任意键返回.");}/////////////////////////////结束界面函数///////////////////////////////////end(){system("cls");printf(" *************************************************\n");printf(" -------------------------------------------------\n");printf(" |*** 谢谢使用,再见***|\n");printf(" -------------------------------------------------\n");printf(" *************************************************\n");}//////////////////////////////////主函数///////////////////////////main(){char ch1;system("color 3f");do//不退出系统则进行{system("cls");printf(" *************************************************\n");printf(" -------------------------------------------------\n");printf(" |*** 成绩管理系统***|\n");printf(" -------------------------------------------------\n");printf(" *************************************************\n");printf(" 1:添加成绩信息\n");printf(" 2:查询成绩信息\n");printf(" 3:删除成绩信息\n");printf(" 4:浏览所有的成绩\n");printf(" 5:修改成绩的信息\n");printf(" 6:输出各段的成绩\n");printf(" 0:退出\n");printf(" 请输入您的选择:(0-6):");ch1=getch();switch(ch1){case '1':addcj();break; //添加成绩信息case '2':chacj();;break;//查询成绩信息case '3':delcj();break;//删除成绩信息case '4':cjcount();getch();break;//浏览所有的成绩信息case '5':changecj();getch();break;//修改成绩信息case '6':shuchucj();getch();break;//输出各段的成绩信息case '0':end();break; //退出本系统default:printf("\n无此操作!");getch();break;}}while(ch1!='0');return 0;}。

学生成绩信息表(c语言程序)

学生成绩信息表(c语言程序)

# include<stdio.h># include<stdlib.h># include<string.h>typedef struct student{int ij;char no[10];char name[10];float score[2];float average;}student;typedef struct link{student ia;struct link*next;}List;List *input0() //录入数据{List *p;student x;p=NULL;x.average=0;int i=0;float y=0;fflush(stdin);puts("\t请输入学生学号:(输0结束)");gets(x.no);if(strcmp(x.no,"0")!=0){puts("\t请输入学生姓名:");gets();puts("\t请输入数学成绩:");scanf("%f",&x.score[0]);y=y+x.score[0];puts("\t请输入英语成绩:");scanf("%f",&x.score[1]);y=y+x.score[1];x.average=y/2.0;p=(List *)malloc(sizeof(List));strcpy(p->ia.no,x.no);strcpy(p->,);for(i=0;i<2;i++)p->ia.score[i]=x.score[i];p->ia.average=x.average;p->next=NULL;}return p;}List *creat_List() //创建链表{int ix;List *head,*p,*tail;head=(List*)malloc(sizeof(List));head->next=NULL;tail=head;p=input0();while(p!=NULL){tail->next=p;tail=p;tail->next=NULL;p=input0();}return head;}void output_List(List *head) //遍历链表{int i;int ii=1;List *p=head->next;puts("\t序号\t学号\t姓名\t数学\t英语\t平均成绩");while(p!=NULL){printf("\t%d",ii);ii++;printf("\t%s",p->ia.no);printf("\t%s",p->);for(i=0;i<2;i++)printf("\t%-4.1f",p->ia.score[i]);printf("\t%-4.1f\n",p->ia.average);p=p->next;}}List *input1() //插入数据的学生信息{List *p;char ix[10];int i=0;float y=0;fflush(stdin);puts("请输入学生学号:");gets(ix);p=(List *)malloc(sizeof(List));strcpy(p->ia.no,ix);puts("\t请输入学生姓名:");gets(p->);puts("\t请输入数学成绩:");scanf("%f",&p->ia.score[0]);y=y+p->ia.score[0];puts("\t请输入英语成绩:");scanf("%f",&p->ia.score[1]);y=y+p->ia.score[1];p->ia.average=y/2.0;p->next=NULL;return p;}void insert_List(List *head,List *p) //链表的插入{List *q,*s;s=(List *)malloc(sizeof(List));s=p;q=head;while(strcmp(q->next->ia.no,s->ia.no)<=0){q=q->next;if(q->next==NULL)break;}s->next=q->next;q->next=s;}List *output0(List *p) //输出某位学生的信息{int i;puts("\t学号\t姓名\t数学\t英语\t平均成绩");printf("\t%s",p->ia.no);printf("\t%s",p->);for(i=0;i<2;i++)printf("\t%-4.1f",p->ia.score[i]);printf("\t%-4.1f\n",p->ia.average);return p;}void find1_List(List *head) // 查找学生信息{List *p;char ix[10];int ii=0;fflush(stdin);p=head->next;puts("请输入学生学号:");gets(ix);while(1){if(p==NULL){if(ii==0){puts("不存在此学号的学生信息");break;}break;}while(strcmp(ix,p->ia.no)==0){output0(p);if(p->next==NULL)break;p=p->next;ii++;}p=p->next;}}List *find2(List *head) //查找指定节点{List *p;char ix[10];fflush(stdin);p=head->next;puts("输入查找学生的学号:");gets(ix);while(p!=NULL&&strcmp(ix,p->ia.no)!=0)p=p->next;return p;}List *delete_List(List *head,List *p) //链表的删除{List *q=head,*s=head->next;while(s!=NULL&&strcmp(p->ia.no,s->ia.no)!=0){q=s;s=s->next;}q->next=s->next;free(s);return head;}int length_List(List *head) //链表长度{List *p=head;int ii=0;while(p->next!=NULL){p=p->next;ii++;}return ii;}List *find3(List *head,int ij) //查找指定节点{List *p;int ii;fflush(stdin);p=head->next;while(p!=NULL&&ii!=ij){ii++;p=p->next;}return p;}List *paixu(List *head) /*排序*/ {List *p,*q,*large;float itemp;int i;char ctemp[10];for(p=head->next;p->next!=NULL;p=p->next)for(q=p->next;q!=NULL;q=q->next){large=p;if(p->ia.average<q->ia.average)large=q;if(large==q){strcpy(ctemp,p->ia.no);strcpy(p->ia.no,q->ia.no);strcpy(q->ia.no,ctemp);strcpy(ctemp,p->);strcpy(p->,q->);strcpy(q->,ctemp);for(i=0;i<2;i++){itemp=p->ia.score[i];p->ia.score[i]=q->ia.score[i];q->ia.score[i]=itemp;}itemp=p->ia.average;p->ia.average=q->ia.average;q->ia.average=itemp;}}return(head);}int menu() //链表菜单{int ii=0;puts("\t\t 欢迎进入链表系统");puts("========================================================="); /*界面设计*/puts("|\t\t 请选择下列某一项 \t\t\t|");puts("|\t\t\t(1)创建 \t\t\t|");puts("|\t\t\t(2)序号输出\t\t\t|");puts("|\t\t\t(3)查找 \t\t\t|");puts("|\t\t\t(4)插入 \t\t\t|");puts("|\t\t\t(5)删除 \t\t\t|");puts("|\t\t\t(6)成绩输出\t\t\t|");puts("|\t\t\t(7)退出 \t\t\t|");puts("=========================================================");do{fflush(stdin);puts("请输入你的选择:");scanf("%d",&ii);}while(ii<1||ii>7);return ii;}void main(){int ii,I,ij,ix,in;List *head,*p;do{system("cls"); /*清屏函数*/fflush(stdin); /*清除键盘缓冲区*/ii=menu();switch(ii){case 1: head=creat_List(); puts("录入成功");break;case 2: output_List(head);break;case 3: find1_List(head);break;case 4: p=input1();insert_List(head,p);puts("插入成功");break;case 5: p=find2(head);if(p==NULL)puts("该学生不存在");else{delete_List(head,p);puts("删除成功");}break;case 6: paixu(head);output_List(head);break;case 7: puts("谢谢使用!再见");getch();exit(0);}puts("输入任意键返回:");getch();}while(ii!=0);}。

C语言程序设计报告材料-学生成绩记录簿簿

C语言程序设计报告材料-学生成绩记录簿簿

应用技术学院课程设计2011 ~ 2012学年第 2 学期设计题目成绩记录簿院(系)计算机科学与信息工程专业网络工程班级 11104301 学号 1110430115学生 xx设计时间 2012.06.25~2012.07.06指导教师 xxx提交日期 2012.07.06目录1. 概述1.1 题目1.2程序简述1.3程序性能2 课题分析2.1程序系统的结构2.2 结构流程图2.3功能2.4 性能2.5 输入输出项信息3 功能模块说明3.1 流程逻辑3.2 算法4 程序测试,运行结果及说明5课程设计总结6 附录(参考文献,原代码解析,限制条件,程序测试)6.1参考文献6.2原代码解析6.3限制条件1.概述1.1 题目成绩记录簿1.2程序描述本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。

本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。

我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。

1.建立一个主界面2.用switch语句进行分类讨论3.分别进入录入,查询,删除,求平均值等子函数。

4.将子函数与主函数相连即可。

1.3程序性能该程序可以建立学生的成绩记录。

可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;还可以求出平均成绩,并排序2课题分析2.1程序系统的结构2.2程序流程图课程编号2.3功能成绩记录簿中记录以下数据:学号、、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分;输入信息时要检查数据项学号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号:5位数字;成绩:0 ~ 100 之间的整数,学分:1~ 5之间的实型数。

添加成绩:需要输入学生的学号或、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:查询个人成绩:以学号或作为关键字,可查询一个学生的所有成绩,和已完成的总学分。

成绩记录薄的C语言设计程序

成绩记录薄的C语言设计程序

#include<stdio.h>#include<string.h>#include<stdlib.h>#define MAX 100typedef struct{char num[100];//char name[100];int grade;}Student;Student stu[MAX];int n;main(){void Input();void Display();void Readfile();void Find();void Modify();void Save();void Dis();int choose;do{printf("1输入学生信息并存档\n");printf("2读取学生信息并显示\n");printf("3按学号或姓名查询成绩\n");printf("4修改(删除)指定姓名或学号的学生的成绩并可存盘\n"); printf("5显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息\n");printf("退出(其他数字)\n");scanf("%d",&choose);if(choose==1) {Input();Save();}else if(choose ==2) {Readfile();Display();}else if(choose ==3) {Readfile();Find(1);}else if(choose==4) {Readfile();Find(0);}else if(choose==5) {Readfile();Dis();}}while(1);}void Dis(){int i;printf("60分以下的:\n");for(i=0;i<n;i++){if(stu[i].grade<60)printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}printf("60~79分的:\n");for(i=0;i<n;i++){if(stu[i].grade<80&&stu[i].grade>=60) printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}printf("80~89分的:\n");for(i=0;i<n;i++){if(stu[i].grade<90&&stu[i].grade>=80) printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}printf("90分的:\n");for(i=0;i<n;i++){if(stu[i].grade>=90)printf("%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}}void Modify(int t){int choose;int i;printf("1.删除\n");printf("other.修改\n");scanf("%d",&choose);if(choose==1){for(i=t;i<n-1;i++){stu[i]=stu[i+1];}n--;}else{printf("请重新输入该学生的信息:\n");scanf("%s %s %d",stu[t].num,stu[t].name,stu[t].grade);}Save();}void Find(int p){int i;int choose,t;char ans[100];do{printf("1.按学号查找\n");printf("2.按姓名查找\n");printf("返回主菜单(其他数字)\n");scanf("%d",&choose);if(choose==1||choose==2){scanf("%s",ans);t=-1;if(choose==1){for(i=0;i<n;i++)if(strcmp(ans,stu[i].num)==0) {t=i;break;}}else{for(i=0;i<n;i++)if(strcmp(ans,stu[i].name)==0) {t=i;break;}}if(t==-1) printf("不存在该学生信息\n");else{if(p==1)printf("%s %s %d\n",stu[t].num,stu[t].name,stu[t].grade);elseModify(t);}}else return;}while(1);}void Display(){int i;printf("学号姓名成绩:\n");for(i=0;i<n;i++){printf("%s %s %d\n",stu[i].num ,stu[i].name ,stu[i].grade);}}void Readfile(){FILE *fp;if((fp=fopen("student.dat","r"))==NULL) return ;n=0;while(!feof(fp)){fscanf(fp,"%s%s%d",stu[n].num,stu[n].name,&stu[n].grade);n++;}fclose(fp);}void Input(){n=0;do{printf("请输入第%d个学生信息,输入exit结束输入(输入格式:学号姓名成绩)\n",n+1);scanf("%s",stu[n].num);if(strcmp(stu[n].num,"exit")==0) break;scanf("%s%d",stu[n].name,&stu[n].grade);n++;}while(1);}void Save(){int i;FILE* fp;if((fp=fopen("student.dat","a"))==NULL)fp=fopen("student.dat","w");for(i=0;i<n;i++){fprintf(fp,"%s %s %d\n",stu[i].num,stu[i].name,stu[i].grade);}fclose(fp);}。

C语言程序的设计学生成绩记录簿

C语言程序的设计学生成绩记录簿

课程实验报告本程序是非数值计算型算法设计,我设计出了学生成绩记录簿系统的基本功能,并设计了简单的界面。

本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。

我设计的这个成绩记录簿系统也初步实现了学生成绩信息的显示、输入、删除、查找等必要的功能。

1.建立一个主界面2.用switch语句进行分类讨论3.分别进入录入,查询,删除,等子函数。

4.将子函数与主函数相连即可。

该程序可以建立学生的成绩记录。

可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;还可以求出平均成绩,并排序成绩记录簿中记录以下数据:学号、、课程编号、课程名称、成绩、学分 添加成绩:需要输入学生的学号或、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:查询个人成绩:以学号或作为关键字,可查询一个学生的所有成绩,和已完成的总学分。

查询班级成绩:以课程编号为关键字,成绩表后面要统计平均分、及格率及全班同学不同课程在不同分数段分布的人数及百分比。

拓展功能:a) 程序启动时先从文件读入数据,如果文件中没有数据则给出提示;实验界面截图2、添加3、查询4、查询成绩5、写文本6、读取算主程序提供一个界面,允许用户选择。

使用switch语句,用时直接输入数字即可。

增加函数,功能是插入学生成绩。

使用一个无穷循环,直到录入”n”时结束。

删除函数,功能是删除,分为两步,先找后删。

找,用strcmp函数来。

C语言程序设计报告-学生成绩记录簿.docx

C语言程序设计报告-学生成绩记录簿.docx

上海应用技术学院课程设计2011 ~ 2012 学年第 2学期设计题目成绩记录簿院(系)计算机科学与信息工程专业网络工程班级学号 15学生姓名xx设计时间指导教师xxx提交日期目录1.概述题目程序简述程序性能2课题分析程序系统的结构结构流程图功能性能输入输出项信息3功能模块说明流程逻辑算法4程序测试,运行结果及说明5课程设计总结6附录(参考文献,原代码解析,限制条件,程序测试)6.1参考文献6.2原代码解析限制条件1.概述题目成绩记录簿程序描述本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。

本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。

我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。

1.建立一个主界面2.用 switch 语句进行分类讨论3.分别进入录入,查询,删除,求平均值等子函数。

4.将子函数与主函数相连即可。

程序性能该程序可以建立学生的成绩记录。

可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;还可以求出平均成绩,并排序课题分析程序系统的结构主函数添加成绩求平均值删除成绩查询按平均值排序退出程序流程图课程编号添加成绩查询成绩添添添添查查加加加加询询学学课学学班生生程生生级学姓编成成成号名号绩绩绩查询学生成绩查询班级成绩课程功能学姓编号名号查查询询成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分;输入信息时要检查数据项学号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号: 5 位数字;成绩: 0 ~ 100 之间的整数,学分:1~ 5 之间的实型数。

添加成绩:需要输入学生的学号或姓名、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:查询个人成绩:以学号或姓名作为关键字,可查询一个学生的所有成绩,和已完成的总学分。

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

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

成绩管理系统c语言程序设计报告成绩管理系统C语言程序设计报告一、引言本报告旨在介绍一个基于C语言的成绩管理系统的设计与实现。

该系统能够实现学生成绩的录入、查询和统计等功能,提供便捷的成绩管理方案。

二、设计目标1.实现学生成绩的录入、查询和统计功能2.提供简洁易用的用户界面3.支持多种成绩查询方式,如按学号、姓名、科目等4.具备数据安全性和可靠性三、系统结构1.主函数模块–初始化系统–显示主菜单–根据用户选择执行相应功能2.学生管理模块–录入学生信息–查询学生信息–统计学生信息–删除学生信息3.成绩管理模块–录入学生成绩–查询学生成绩–统计学生成绩–修改学生成绩4.文件管理模块–将学生信息和成绩存储到文件–从文件读取学生信息和成绩四、系统设计与实现1.数据结构设计–学生信息结构体:包括学号、姓名、性别等字段–成绩信息结构体:包括学号、科目、分数等字段2.界面设计–使用菜单方式展示功能选项–引导用户输入相应指令执行功能3.功能实现–使用循环结构保持程序运行,直到用户选择退出–调用相应函数实现各项功能4.文件操作–使用文件指针保存学生信息和成绩–通过文件读写函数实现数据的存储和读取五、系统测试对系统进行全面的测试,包括录入学生信息、查询学生成绩、统计学生成绩等功能。

验证系统是否满足设计要求,并考虑可能出现的异常情况进行测试。

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

该系统具备了录入、查询和统计学生成绩的功能,以及数据的持久化存储。

然而,本系统仍有改进空间,如增加用户权限管理、优化界面交互等。

未来可进一步完善系统功能,提升用户体验。

以上是对成绩管理系统C语言程序设计的报告,旨在介绍系统的设计目标、结构、实现以及测试情况,并展望未来的发展方向。

该系统为学生成绩管理提供了便利,有望为教育行业带来积极影响。

C语言程序设计学生成绩记录簿

C语言程序设计学生成绩记录簿
gets(a);
for (i = 0; i < StudentCount; i++)
{
if (0==strcmp(S[i].Name,a))
{
printf("\n学号:%s\t姓名:%s\n", S[i].Number, S[i].Name);
printf("\n课程编号\t课程名称\t课程成绩\t课程学分\n");
C语言程序设计学生成绩记录簿
课程实验报告
课程名称
C语言程序设计
班级
13新能源2班
实验日期
2013年8月1号
姓名
许鑫
学号
6
实验成绩
实验名称
学生成绩记录簿系统






本程序是非数值计算型算法设计,我设计出了学生成绩记录簿系统的基本功能,并设计了简单的界面。本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。我设计的这个成绩记录簿系统也初步实现了学生成绩信息的显示、输入、删除、查找等必要的功能。
增加函数,功能是插入学生成绩。使用一个无穷循环,直到录入”n”时结束。
删除函数,功能是删除,分为两步,先找后删。找,用strcmp函数 来做如果找到记录i值,反之记为-1;删除可以从i项开始将数组的后一项赋值给前一项。前一项自动被删掉。这样完成删除。
查询函数与之类似,将删除改为输出即可;
求平均值函数与查询类似只是输出时只输出平均值而已。
printf("\n| 6、读取文本文件 |\n");
printf("\n| 0、退出 |\n");

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

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

C语言程序设计学生成绩管理系统报告引言随着计算机技术的发展,C语言作为一种高级程序设计语言,被广泛应用于各个领域。

在教育领域中,C语言的学习也越来越重要。

为了提高学生在C语言程序设计方面的能力,快速准确地管理学生成绩,我们设计了一个C语言程序设计学生成绩管理系统。

设计目标•实现学生成绩的录入、查询、修改和删除功能。

•提供直观、友好的用户界面,操作简便明了。

•保证系统的安全性,仅授权用户可进行操作。

•能够生成学生成绩报告和统计信息,方便教师和学生进行分析和参考。

系统设计与实现数据结构为了实现学生成绩的管理,我们采用了以下的数据结构:1.学生信息结构体–学号–姓名–年龄–性别–成绩typedef struct {int student_id;char name[20];int age;char gender[10];float score;} Student;2.学生信息链表–指向学生信息的指针–指向下一个学生信息的指针typedef struct Node {Student* student_info;struct Node* next;} StudentNode;功能实现录入学生信息1.输入学生信息,并验证合法性(如学号是否已存在)。

2.将学生信息加入学生信息链表中。

查询学生信息1.输入学号或姓名进行查询。

2.在学生信息链表中查找匹配的学生信息。

3.显示查找到的学生信息。

修改学生信息1.输入学号或姓名进行查询。

2.在学生信息链表中查找匹配的学生信息。

3.若找到匹配的学生信息,则修改其中的字段内容。

删除学生信息1.输入学号或姓名进行查询。

2.在学生信息链表中查找匹配的学生信息。

3.若找到匹配的学生信息,则删除该节点。

生成报告和统计信息1.遍历学生信息链表,计算平均分、最高分和最低分。

2.根据指定条件(如按性别、按年龄段)进行筛选和排序。

3.根据筛选结果生成学生成绩报告和统计信息。

用户界面设计为了提供友好的用户界面,我们采用了命令行界面(CLI)的设计,用户可通过键盘输入命令进行操作。

C语言程序设计学生成绩记录簿

C语言程序设计学生成绩记录簿

课程实验报告以自己的电脑为主要的实验平台,运用Visual C++ 6.0 这个软件进行反复的编写实验。

实验环境1、开始时实验界面截图2、添加精品文档5、写文本6、读取主程序提供一个界面,允许用户选择。

使用 switch 语句,用时直接输 入数字即可。

增加函数,功能是插入学生成绩。

使用一个无穷循环,直到录入”n ”时结束。

删除函数,功能是删除,分为两步,先找后删。

找,用strcmp 函数 来 做如果找到记录i 值,反之记为-1 ;删除可以从i 项开始将数组的后一项赋 值给前一项。

前一项自动被删掉。

这样完成删除。

查询函数与之类似,将删除改为输出即可; 求平均值函数与查询类似只是输出时只输出平均值而已。

按平均值排序只要加一个排序函数即可。

退出函数什么都不写,即可。

程序流程图法 描 述 及 实 验步骤添添添 加加加学学课 生生程查询成绩添加成绩生查 询查 询 级调试过程及实验结果经过一个多星期的编译原理课程设计, 总设计。

结通过该课程设计,掌握了编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程及其相关的技术,对课本上的知识也有了更深的理解。

老师常说,课本上的知识是机械的, 表面的,要学会去运用,要举一反三。

现在终于深刻的了解了这句话。

经过这次的课程设计,发现书本上很深奥的知识变的在我的努力下,顺利完成该课程更为简单,同样,对实验原理也了有更深的理解。

知道和理解了该理论在计算机中是怎样执行的,对该理论在实践中的应用有深刻的理解。

通过该课程设计,把死板的课本知识变得生动有趣,激发了学习的积极性。

能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。

课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。

除了课堂外,课程设计是最能学到东西的,最考验人精品文档11欢迎下载}void Printin terface() { int n;while (1){ prin tf("\n ---欢迎使用学生成绩记录簿系统 --- prin tf("\n| 1、添加 |\n"); prin tf("\n| 2、删除 |\n"); prin tf("\n| 3、查学生成绩 |\n"); prin tf("\n| 4、查班成绩表 |\n"); prin tf("\n| 5、与入文本文件 |\n"); prin tf("\n| 6 、读取文本文件|\n"); prin tf("\n| 0 、退出 |\n");prin tf("\n -------- ---------------- ");prin tf("\n选择操作:"); scanf("%d",&n); switch( n){case 1:if (Stude nt_In sert())printf("\n添加成功...回车继续\n");elseprintf("\n添加失败...回车继续\n"); break;case 2:Stude nt_Delete(); break; case 3:Stude nt_Select(); break; case 4:Class_Select();break;case 5:WriteFile();break;case 6:ReadFile();。

学生成绩簿设计实验报告

学生成绩簿设计实验报告

学生成绩簿设计目录一、实训的目的与要求 (1)二、题目说明 (1)三、总体设计 (2)3.1.主函数流程图 (2)3.2.子函数流程图及其他 (3)四、详细设计和实施 (4)4.1 模块1 (4)五、遇到的问题和解决方法 (5)六、实训总结 (6)七、参考文献 (6)附录(源程序代码) (6)一、实训的目的与要求1. C语言课程设计的主要目的是培养学生综合运用C语言程序设计课程所学到的知识,编写C程序解决实际问题的能力,以及严谨的工作态度和良好的程序设计习惯。

2.通过课程设计的训练,学生应该能够了解程序设计的基本开发过程,掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。

3. C语言程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C语言程序及编写设计报告。

二、题目说明编制一个C语言成绩记录簿,每个学生信息包括:学号、姓名、C语言成绩。

具体功能:(1)创建学生信息并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按学号或姓名查询成绩;(4)添加成绩记录;(5)修改指定姓名或学号的学生的成绩并可存盘;(6)显示输出60分以下、60~79、80~89、90分以上各分数段的学生信息(可选项)。

三、总体设计3.1.主函数流程图图1主函数流程图3.2.子函数流程图及其他流程图图2 子函数流程图图3 删除信息流程图图3查找信息流程图图4修改信息流程图四、详细设计和实施4.1 模块1步骤1:根据数字提示从1-5中选择要操作的功能,如图5所示:图5步骤2:按1键,会出现提示“插入信息”,按2,会出现“删除信息”,按3,“修改信息”,按4,会出现“查看信息”,按5,“保存”,按q 键即可退出,如图6所示:图6 步骤3:键入1回车,会出现提示“请输入要删除学生信息”,现在就可以删除学生信息,如图7所示:图7步骤4:键入2及Enter键,会出现提示“请输入要查找的学生信息”,然后根据提示将该学生的信息删除,如图8所示:图8五、遇到的问题和解决方法大多的语法错误在通过书本参考下能够修改。

c课程设计成绩记录薄总结

c课程设计成绩记录薄总结

c 课程设计成绩记录薄总结一、教学目标本章节的教学目标包括以下三个方面:1.知识目标:使学生掌握课本中的基本概念、原理和方法,能够理解和运用相关知识。

2.技能目标:培养学生运用所学知识解决实际问题的能力,提高他们的分析和解决问题的能力。

3.情感态度价值观目标:培养学生对学科的兴趣和热情,增强他们的自主学习意识和团队合作精神。

二、教学内容本章节的教学内容主要包括以下部分:1.教材章节:第1章至第5章,涵盖基本概念、原理和方法的学习。

2.重点内容:对每个章节中的重点知识点进行详细讲解,包括但不限于基本概念、原理、方法和案例分析。

3.难点内容:针对每个章节中的难点知识点进行深入解析,帮助学生理解和掌握。

三、教学方法本章节的教学方法将采用多种教学手段,以激发学生的学习兴趣和主动性:1.讲授法:对基本概念、原理和方法进行系统讲解,确保学生掌握。

2.讨论法:学生进行小组讨论,促进他们主动思考和交流。

3.案例分析法:通过分析实际案例,使学生能够将理论知识应用于实际问题。

4.实验法:学生进行实验,培养他们的实验操作能力和科学思维。

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

2.参考书:推荐适量的参考书目,帮助学生拓展知识面。

3.多媒体资料:制作精美的PPT、视频等多媒体资料,提高学生的学习兴趣。

4.实验设备:保障实验教学的需要,为学生提供充分的实践机会。

五、教学评估本章节的教学评估将采用多元化的评估方式,以全面反映学生的学习成果:1.平时表现:通过观察学生在课堂上的参与度、提问和回答问题的情况,评估他们的学习态度和理解程度。

2.作业:布置适量的作业,评估学生对知识点的掌握情况和应用能力。

3.考试:定期进行考试,全面测试学生对章节知识的掌握程度。

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

同时,注重评估学生的过程表现,鼓励他们在学习过程中不断进步。

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

上海应用技术学院课程设计2011 ~ 2012学年第 2 学期设计题目成绩记录簿院(系)计算机科学与信息工程专业网络工程班级 11104301 学号 1110430115学生姓名 xx设计时间 2012.06.25~2012.07.06指导教师 xxx提交日期 2012.07.06目录1. 概述1.1 题目1.2程序简述1.3程序性能2 课题分析2.1程序系统的结构2.2 结构流程图2.3功能2.4 性能2.5 输入输出项信息3 功能模块说明3.1 流程逻辑3.2 算法4 程序测试,运行结果及说明5课程设计总结6附录(参考文献,原代码解析,限制条件,程序测试)6.1参考文献6.2原代码解析6.3限制条件1.概述1.1 题目成绩记录簿1.2程序描述本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。

本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是链表的相关操作,包括结构体链表的创建、输入、输出、查找、删除等。

我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。

1.建立一个主界面2.用switch语句进行分类讨论3.分别进入录入,查询,删除,求平均值等子函数。

4.将子函数与主函数相连即可。

1.3程序性能该程序可以建立学生的成绩记录。

可以方便老师和同学方便的查阅成绩;这个程序有录入和删除的功能;还可以求出平均成绩,并排序2课题分析2.1程序系统的结构2.2程序流程图课程编号2.3功能成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分;输入信息时要检查数据项学号、课程编号、成绩、学分的合法性,学号:8位数字;课程编号:5位数字;成绩:0 ~ 100 之间的整数,学分:1~ 5之间的实型数。

添加成绩:需要输入学生的学号或姓名、课程编号及成绩,如已有该门课程成绩给出提示;查询(班级或个人)成绩:查询个人成绩:以学号或姓名作为关键字,可查询一个学生的所有成绩,和已完成的总学分。

查询班级成绩:以课程编号为关键字,成绩表后面要统计平均分、及格率及全班同学不同课程在不同分数段分布的人数及百分比。

拓展功能:a) 程序启动时先从文件读入数据,如果文件中没有数据则给出提示;b) 每次修改的数据写入文件2.4性能方便,灵活,直观,易用2.5 输入输出项信息输入项:char name[10] 设置学生名称long int id 定义学号为长整型float avg 平均分为实数输出项int m1,m2,m3,score,xf; 定义整型float avg; 以浮点型输出平均分3 功能模块说明3.1 ..................................................................... 流程逻辑主程序提供一个界面,允许用户选择。

使用switch语句,用时直接输入数字即可。

增加函数,功能是插入学生成绩。

使用一个无穷循环,直到录入”n”时结束。

删除函数,功能是删除,分为两步,先找后删。

找,用strcmp函数来做如果找到记录i值,反之记为-1;删除可以从i项开始将数组的后一项赋值给前一项。

前一项自动被删掉。

这样完成删除。

查询函数与之类似,将删除改为输出即可;求平均值函数与查询类似只是输出时只输出平均值而已。

按平均值排序只要加一个排序函数即可。

退出函数什么都不写,即可。

3.2 算法本程序参考了冒泡法其代码结构为:For(i=0;i<k;i++){For(j=i;j<k;j++){If(a>b){}}}其中也多次用到了循环和判断结构3运行结果及说明1.开始时2.添加3.删除4.查询学生成绩(1)按名字查询(2)按学号查询4.查询班级成绩5.写入文本文件6.读取文本文件4课程设计总结短短的俩周已经过去了,在此我将交出我一周的成果,我真是百感交错1.原先写程序直接编,条理性太差。

如果先做一个流程图就条理很多。

2.学会了将文件存入和读取,并学会在文件中加入信息和删除信息。

3.我在查找学生姓名时遇到困难,从课本上找到了一个函数strcmp,解决了问题困难:我在定义学生的学号时首先用整型%d。

发现输出与录入不同。

改用长整型%ld仍然不行。

但是字符型%s却可以做到。

!事实上,与过去相比,我认为这短短的一周给我的感悟更为强烈。

在此,首先我要感谢老师,是老师把我带进了这一门,俗话说的好“万丈高楼平地起”,所以说,基础很重要。

而老师讲课认真,讲也很透彻,使我们能较好的理解这门课,可以跟紧课堂进度,是我们有机会能打下结实良好的基础。

而且老师在平时也鼓励我们多提问,在我们遇到问题时,富有耐心地为我们解答。

在此再次感谢老师对我们不辞操劳的讲解!谢谢!一开始,当我第一眼看到这课程设计的时候,我感到十分的“痛苦”,老实说,在还未进行编程之前,我就感到这与我们之前的编程完全不一样,与这次相比,以前的上机实验就像是小孩子玩得,一点技术含量也没有。

以前的那些实验只要看看书,花上一二个小时,基本就可以完成了,而且以前的小程序最多也不过二三十行,不像这次要百来行。

从中可见它的难度,从而联想到那些专业编程员,我更深刻感到自己的不足。

由于之前从未进行过如此大的编程,所以一开始根本没头绪,后来只好用死办法,像写作文一样,首先先在纸上列出大致的提纲,然后再一个个慢慢延伸展开,最后再输入计算机,用它来运行。

可惜不运行还好,一运行只见一片的红色错误提示。

有些错误很简单,很好改,是由于自己的粗枝大叶引起的,比如:有些字符未定义,漏了一个“;”等。

但也有些高深莫测的问题,例如:当我好不容易把程序运行出来后,却发现当我选择删除这一项时,会发现不论我选择是按学号删除还是按姓名删除都不会出现我所要删除的内容,而是直接询问确定删除请按1~~。

又或者是当我添加时是添加了三个同学的成绩,但当我查询全班成绩时,却只有两位同学的成绩。

后来在百思不得其解之下,我只好向周围同学寻求帮助,最终在大家的帮助之下才解决的,诸如此类的问题还不少!有的已经解决,但有些还未,可惜时间不够,也只能如此。

经过这一周的课程设计,我发现我懂得了很多,它使我在编程时更仔细了,也使我学会了向周围人求教,培养了我自我学习,独立思考。

并且,使我更体会到了和高中的不一样,一切靠自觉,没有人会跟在你后面一直催你,告诉你该怎样怎样。

同时,我也更加了解到自己的不足,基础严重不扎实。

虽然这门课快结束了,但我会努力在假期中把自己的基础补好,期待在下次的课程设计时能够得心应手!6附录(参考文献,原代码解析,限制条件,程序测试)参考文献:[1]谭浩强. C程序设计(第三版) . 北京:清华大学出版社,2005[2]谭浩强. C程序设计题解与上机指导(第三版) . 北京:清华大学出版社,2005[3] Herbert Schildt. C语言大全(第四版). 北京:电子工业出版社, 2004[4]Samuel P.Harbison Ⅲ,Guy L.Steele. C语言参考手册(第5版). 北京:机械工业出版社,2003[5]张建勋. C语言程序设计教程. 北京:清华大学出版社,2008.2[6]崔武子. C程序设计教程(第2版). 北京:清华大学出版社,2007.6(第2版)[7]K.N.King.C语言程序设计:现代方法(第2版).北京:人民邮电出版社,2010原代码解析:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX 1000struct Lesson{char LessonName[100];char LessonNumber[100];int LessonMark;float LessonCredit;};struct Student{char Name[100];char Number[100];int LessonCount;struct Lesson L[100];};struct Student S[MAX];int StudentCount = 0;void PrintInterface();int Student_Insert();int Student_Delete();void Student_Select();void Class_Select();void WriteFile();void ReadFile();int main(){int n;{PrintInterface();scanf("%d", &n);}}void PrintInterface(){int n;while (1){printf("\n -------------------------- ");printf("\n| 1、添加|\n");printf("\n| 2、删除|\n");printf("\n| 3、查学生成绩|\n");printf("\n| 4、查班成绩表|\n");printf("\n| 5、写入文本文件|\n");printf("\n| 6、读取文本文件|\n");printf("\n| 0、退出|\n");printf("\n -------------------------- ");printf("\n选择操作:");scanf("%d",&n);switch(n){case 1:if (Student_Insert())printf("\n添加成功...回车继续\n");elseprintf("\n添加失败...回车继续\n");break;case 2:Student_Delete();break;case 3:Student_Select();break;case 4:Class_Select();break;case 5:WriteFile();break;case 6:ReadFile();break;case 0:exit(1);break;default:printf("无此功能,请重新选择,按回车确定\n");}}return 0;}int Student_Insert(){int i,j,n;printf("\n请输入所添加的学生人数:");scanf("%d", &n);if (StudentCount + n >= MAX)return 0;for (i = StudentCount; i < StudentCount + n; ++i){printf("\n\t第%d个学生:\n", i - StudentCount + 1);printf("\n\t学生学号:");scanf("%s", &S[i].Number);if(strlen(S[i].Number)!=8){printf("输入错误,请重新输入");return 0;}printf("\n\t学生姓名:");scanf("%s", S[i].Name);printf("\n\t该学生所修课程数:");scanf("%d", &S[i].LessonCount);for (j = 0; j < S[i].LessonCount; ++j){printf("\n\t第%d门课:\n", j + 1);printf("\n\t\t课程编号:");scanf("%s", S[i].L[j].LessonNumber);if(strlen(S[i].L[j].LessonNumber)!=5){printf("输入错误,请重新输入!");return 0;}printf("\n\t\t课程名称:");scanf("%s",S[i].L[j].LessonName);printf("\n\t\t课程成绩:");scanf("%d", &S[i].L[j].LessonMark);if(S[i].L[j].LessonMark<0 || S[i].L[j].LessonMark>100){printf("输入错误,请重新输入!");return 0;}printf("\n\t\t课程学分:");scanf("%f", &S[i].L[j].LessonCredit);if(S[i].L[j].LessonCredit<1 || S[i].L[j].LessonCredit>5){printf("输入错误,请重新输入!");return 0;}if (S[i].L[j].LessonMark < 60)S[i].L[j].LessonCredit = 0;}}StudentCount += n ;return 1;}int Student_Delete(){char a[100];char b[100];int i, j;printf("\n删除学生:\n");printf("\n学生姓名:");scanf("%s",a);printf("\n学生学号:");scanf("%s",b);if(strlen(b)!=8){printf("输入错误请重新输入");return 0;}for (i = 0; i < StudentCount; i++){if (0==strcmp(S[i].Name, a) && 0==strcmp(S[i].Number, b)){printf("\n找到,删除\n");for (j = i + 1; j < StudentCount; j++){S[j - 1] = S[j];}break;}}if (i == StudentCount || i > StudentCount){printf("\n未找到该学生\n\n");return 0;}else{StudentCount--;return 1;}}void Student_Select(){int x;char y[100];char a[100];int i, j;printf("\n输入所查学生信息(1.姓名 2.学号)选择:");scanf("%d", &x);if (x == 1 || x == 2){if (x == 1){printf("\n姓名:");fflush(stdin);gets(a);for (i = 0; i < StudentCount; i++){if (0==strcmp(S[i].Name,a)){printf("\n学号:%s\t姓名:%s\n", S[i].Number, S[i].Name);printf("\n课程编号\t课程名称\t课程成绩\t课程学分\n");printf("-----------------------------------------------------\n");for (j = 0; j < S[i].LessonCount; j++){printf("%s\t\t%s\t\t%d\t\t%f\n", S[i].L[j].LessonNumber,S[i].L[j].LessonName, S[i].L[j].LessonMark,S[i].L[j].LessonCredit);printf("-----------------------------------------------------\n");}printf("\n\n");}}}else{printf("\n学号:");fflush(stdin);gets(y);for (i = 0; i < StudentCount; i++){if (strcmp(S[i].Number,y)==0){printf("\n学号:%s\t姓名:%s\n", S[i].Number, S[i].Name);printf("\n课程编号\t课程名称\t课程成绩\t课程学分\n");printf("-----------------------------------------------------\n");for (j = 0; j < S[i].LessonCount; j++){printf("%s\t\t%s\t\t%d\t\t%f\n",S[i].L[j].LessonNumber,S[i].L[j].LessonName,S[i].L[j].LessonMark,S[i].L[j].LessonCredit);printf("-----------------------------------------------------\n");}printf("\n\n");break;}}}printf("查找完毕...回车继续\n");getchar();}else{printf("选择错误...回车继续\n");getchar();return;}}void Class_Select(){char a[100];double x=0,y=0,z=0;int i, j;printf("\n请输入课程编号:");fflush(stdin);scanf("%s",a);printf("学号\t姓名\t课程名称\t课程成绩\t课程学分\n");printf("----------------------------------------------------\n");for (i = 0; i < StudentCount; i++){for (j = 0; j < S[i].LessonCount; j++){if (strcmp(S[i].L[j].LessonNumber,a)==0){printf("%s\t%s\t%s\t\t%d\t\t%f\n",S[i].Number, S[i].Name, S[i].L[j].LessonName,S[i].L[j].LessonMark, S[i].L[j].LessonCredit);printf("----------------------------------------------------\n");z+=S[i].L[j].LessonMark;x++;if (S[i].L[j].LessonMark >= 60)y++;break;}}}printf("\n平均分:%f\t及格率:%f%%\n\n", z/x, y/x*100);printf("\n查找完毕...回车继续\n");getchar();}void WriteFile(){FILE *fp;int i, j;char a[100];printf("\n请输入写入的文件地址:\n\n地址输入格式:例如d:\\\\Student.txt:");scanf("%s",&a);printf("\n写入中......\n");if (fp = fopen(a,"w")){fprintf(fp,"%d\n",StudentCount);for (i = 0; i < StudentCount; i++){fprintf(fp,"%s\t%s\t%d\n",S[i].Number, S[i].Name,S[i].LessonCount);for (j = 0; j < S[i].LessonCount; j++){fprintf(fp,"%s\t%s\t%d\t%f\n",S[i].L[j].LessonNumber,S[i].L[j].LessonName,S[i].L[j].LessonMark,S[i].L[j].LessonCredit);}}printf("\n写入完成...回车继续\n");fclose(fp);}else{printf("\n写入失败...回车继续\n");}getchar();}void ReadFile(){FILE *fp;int i, j;char a[100];printf("\n请输入读取的文件地址:\n\n地址输入格式:例如d:\\\\student.txt:");scanf("%s",&a);printf("\n读取中......\n");if (fp = fopen(a,"r")){fscanf(fp,"%d",&StudentCount);for (i = 0; i < StudentCount; i++){fscanf(fp,"%s%s%d",&S[i].Number, &S[i].Name,&S[i].LessonCount);for (j = 0; j < S[i].LessonCount; j++){fscanf(fp,"%s%s%d%f",&S[i].L[j].LessonNumber,&S[i].L[j].LessonName,&S[i].L[j].LessonMark,&S[i].L[j].LessonCredit);}}printf("\n读取成功...回车继续\n");fclose(fp);}else{printf("\n读取失败...回车继续\n");}getchar();}6.3限制条件1.开始写程序时未使用链表,程序冗杂。

相关文档
最新文档