C程序设计小型学生成绩信息管理系统方案有源代码.docx
- 文档编号:2440705
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:11
- 大小:18.87KB
C程序设计小型学生成绩信息管理系统方案有源代码.docx
《C程序设计小型学生成绩信息管理系统方案有源代码.docx》由会员分享,可在线阅读,更多相关《C程序设计小型学生成绩信息管理系统方案有源代码.docx(11页珍藏版)》请在冰豆网上搜索。
C程序设计小型学生成绩信息管理系统方案有源代码
计算机科学与工程学院
c语言程序设计方案
课程名称:
C程序设计
班级:
20121421
学号:
2012142128
姓名:
张宗超
任课教师:
付老师
二○一四年1月1日
1.题目
《小型学生成绩信息管理系统》
2.功能
(1)、录入功能:
能录入学生期末考试信息,信息的录入可能是多次录入,每次录入学生个数可能不同。
(2)、显示功能:
完成录入的全部学生成绩信息记录的显示。
(3)、查询功能:
完成按学号查询或按平均分数段查询,并显示查找到的信息记录。
(4)、排序功能:
按平均分排序模块,完成按平均分降序和升序排序,并输出排序结果。
(5)存储功能:
以文件的方式存储全部录入的班级学生考试成绩信息。
3.要求
(1)、每一条记录包括学号、姓名、数学成绩、语文成绩、英语成绩、总分共6个属性;
(2)利用结构体数组存放学生成绩信息;
(3)、系统具有录入信息、显示信息、存储信息、查询信息、排序的功能;
(4、)系统的各个功能模块都用函数的形式来实现;
4.设计内容
整个程序除了主函数外,另外还有6个函数,实现3大主要功能:
录入信息功能、查询信息功能、排序功能,以及存储信息和显示信息等两个功能。
各个函数的详细设计说明分别如下:
录入信息功能:
添加学生成绩的信息
查询信息功能:
查询根据学号或者成绩平均分数段所需要的同学成绩详细信息
排序功能:
按平均分排序,可以完成按平均分降序和升序排序
存储信息功能:
将所有录入学生成绩信息以文件的方式存储
显示信息功能:
显示录入的全部学生成绩详细信息
4.1主函数main()
调用菜单选择函数,显示系统欢迎主界面,也是“功能选择”的界面,系统根据输入的数字选项来调用相应的函数模块。
4.2录入信息函数voidmyinput()
这是一个无参函数,其作用是往结构体数组中录入一个结构体(学生成绩信息)。
算法:
利用for语句进行信息的统计和记录。
4.3存储信息函数voidmysave()
定义一个指针文件来完成对录入信息的存储。
4.4读取文件信息函数voidReadFromFile()
用if条件语句来实现信息的读取。
4.5信息排序函数voidmysort()
定义变量,再利用冒泡法对学生信息进行排序。
4.6信息查询函数voidsearch()
这是一个无参函数,利用输入功能和for循环功能搜索一遍,如果没有找到当前记录则显示提示语句。
算法:
for语句循环查找数组中的记录。
4.7显示信息函数voidmyshow()
利用for语句从第一条记录开始显示算法:
for语句逐渐加1,显示每条记录。
5.调试分析
#include
#include
#include
#defineN70//指定用一个符号名称代表一个常量。
typedefstructstudent//构造一个结构体类型。
{
charnum[6];//定义学生的学号,字符长度为六。
charname[8];//定义学生的姓名,字符长度为八。
floatmath;//定义双精度类型的学生的数学成绩。
floatChinese;//定义双精度类型的学生的语文成绩。
floatEnglish;//定义双精度类型的学生的英语成绩
floatall;//定义双精度类型的学生的总成绩。
floataverage;//定义双精度类型的平均成绩。
}STU;//新的结构体变量。
//录入学生的信息模块
voidmyinput(STUstudent[],int*n)
{
charkey;//输入一个字符,用来判断是否停止录入信息。
inti;//定义一个变量。
intcount=0;//记录录入成绩信息的人数。
for(i=0;1;i++)
{
printf("请您输入第%d个学生的基本信息:
\n",count+1);
printf("该同学的学号:
\n");
scanf("%s",student[i].num);//输入学生的学号。
printf("该同学的姓名:
\n");
scanf("%s",student[i].name);//输入学生的姓名。
printf("该同学的数学成绩:
\n");
scanf("%f",&student[i].math);//输入学生的数学成绩。
printf("该同学的语文成绩:
\n");
scanf("%f",&student[i].Chinese);//输入学生的语文成绩。
printf("该同学的英语成绩:
\n");
scanf("%f",&student[i].English);//输入学生的英语成绩。
printf("该同学的总分:
\n");
student[i].all=student[i].Chinese+student[i].English+student[i].math;
printf("%.1f\n",student[i].all);//显示学生的总分,%.1f控制小数位,最后保留一位小数。
student[i].average=(student[i].Chinese+student[i].English+student[i].math)/3;//计算该同学的平均成绩
printf("平均分\n%.2f\n",student[i].average);//显示该学生的平均成绩,%.2f控制小数位,最后保留两位小数。
count++;
key=getchar();
printf("按T或者t停止录入,按两次回车继续录入或者按任意键+回车键继续录入");
scanf("%c",&key);
getchar();//处理回车符。
if(key=='T'||key=='t')
{
break;//终止循环。
}
}
*n=count;
}
//存储录入的学生信息模块
voidmysave(STUstudent[],intn)
{
FILE*fp;//定义一个文件指针。
inti;
if((fp=fopen("student.txt","ab"))==NULL)//wb为了输出数据,打开一个二进制文件,ab向二进制文件尾追加数据。
{
printf("对不起,打开此文件失败!
\n");
exit(0);//正常结束
}
for(i=0;i { fwrite(&student[i],sizeof(STU),1,fp);//sizeof判断数据类型或者表达式长度符。 } fclose(fp);//关闭fp所指向的文件,缓放文件缓冲区。 } //读取文件中学生信息模块 voidReadFromFile(STUstudent[],int*n) { FILE*fp; inti; *n=0;//初始化。 if((fp=fopen("student.txt","rb"))==NULL)//打开以保存的student.txt文件。 { printf("对不起,打开此文件失败! \n");//提示文件不能打开。 exit(0); } for(i=0;! feof(fp);i++)//feof检查文件是否结束。 { fread(&student[i],sizeof(STU),1,fp); (*n)++; } (*n)--; fclose(fp);//关闭fp所指向的文件,缓放文件缓冲区。 } //显示录入所有学生信息模块 voidmyshow(STUstudent[],intn) { inti;//定义一个变量。 for(i=0;i { printf("学号: %4s姓名: %4s数学成绩: %.1f语文成绩: %.1f英语成绩: %.1f总分: %.1f平均分: %.2f\n",student[i].num,student[i].name,student[i].math,student[i].Chinese,student[i].English,student[i].all,student[i].average); } } //此函数为查询学生某条信息记录模块 voiddisplay(STUstudent[],intm) { printf("学号: %4s姓名: %4s数学成绩: %.1f语文成绩: %.1f英语成绩: %.1f总分: %.1f平均分: %.2f\n",student[m].num,student[m].name,student[m].math,student[m].Chinese,student[m].English,student[m].all,student[m].average); } //查询学生的成绩信息模块 voidsearch(STUstudent[],intn,charj[]) { inti;//定义一个变量。 for(i=0;i { if(strcmp(j,student[i].num)==0)//定义的变量j,用于记录查询的学生学号,strcmp比较和判断两个字符串的大小,若str1=str2则返回0 { display(student,i); } else { printf("无此学生\n");//提示没有该学生信息。 } } } //使用冒泡法求出学生平均成绩升序的排序模块 intmysort(STUstudent[],intn) { inti,j;//定义两个变量i和j。 floata,b; STUx;//定义一个变量x用来实现排序时的交换。 for(i=0;i { for(j=i;j { a=(student[j].Chinese+student[j].English+student[j].math)/3; b=(student[j+1].Chinese+student[j+1].English+student[j+1].math)/3; if(a>b)//用if条件语句,比较字符串的大小,然后交换。 { x=student[j]; student[j]=student[j+1]; student[j+1]=x; } } } return0; } //按学生平均成绩的降序排序模块 intmysort2(STUstudent[],intn) { inti,j; floata,b; STUx; for(i=0;i { for(j=i;j { a=(student[j].Chinese+student[j].English+student[j].math)/3; b=(student[j+1].Chinese+student[j+1].English
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 小型 学生 成绩 信息管理 系统 方案 有源 代码