9299.net
大学生考试网 让学习变简单
当前位置:首页 >> >>

VC++学生成绩管理系统实验报告

VC++学生成绩管理系统实验报告

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

学院:通信工程学院 专业:通信工程系 班级:09 级 21 班 姓名:王曼曼 学号:52092129 日期:2011、08、27 期《学生成绩管理系统》
课程设计实验报告

学院:通信工程学院曼曼

学号:52092129

课程设计报告

一、课程设计题目 学生成绩管理系统

二、题目目的 利用 TURB 学生成绩管理系统 OC2.0 实现学生成绩管理系统的录入、查询、删除、统计等基本操作。进一步巩 固 C 语言的学习,以提高学生对开发环境的进一步认识和综合编程能力。

三、需要处理的基础数据 ◇学生基本信:学生基本信息:学号(例如 2003 级 12 班 6 号写作 20031206) 、 姓名、性别、年龄、考试成绩等。

◇学生成绩的基本信息:课程名称(高数、英语、c 语言、马哲) 、考试成绩、 总分和平均分。

四、系统的功能 1.学生基本情况录入。 2.允许对已经录入的数据进行显示。 3.允许进行数据的插入。 4.删除基本数据的相关信息。 5.基于姓名的查询。如:姓张的所有同学。 6.基于各种基本数据的统计计算。如:

① 统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输 出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各 门功课的考试成绩) 。 ② 列出 90 分以上(包括 90) 、80 分以上(包括 80) 、70 分以上(包括 70) 、 60 分以上(包括 60) 、不及格学生清单(学号、姓名、不及格的课程和成绩) 。 ③ 统计并输出各门功课的平均成绩和总平均成绩。

五、数据结构说明 数据结构可参考下面定义 typedef struct S1 { char no[9];/*学号*/ char name[15]; /*姓名*/ char sex; /*性别*/ int age; /*年龄*/ int score[4]; /*成绩*/ float sum; /*总分*/ float average; /*平均分*/ int order; /*排名*/ struct S1 *next; }STUDENT;

调 用

退



程 函 数

search_score1



调 用







s e e





openl

函 数

) 函

调 用

函 数

调 用

o r d e r

save

n ( 主 函 数





调 用

函 数

save

调 用

search_name

函 数

调 用

M

a i

search_number





六、系统流程图





L o o k





调 用





T y p e





save

函 数



s a v e





函 数





d e l





函 数



开始

Fileopen()

清屏

n=1

判断 n>0?

N

Y
pr()

输入选择 ch

ch

case 1 调用 writeinfo()

case 2 调用 viewinfo()

case 3 调用 pr2()

case 4

N=0

Filesave()

结束

学生信息录入

学生信息删除

主 菜 单

学生信息插入 学分查询 信息编辑

信息添加 信息删除

学生信息 查询 信息添加 姓名查询 信息删除 信息保存

信息读入

成绩统计

六、源程序及分析#include "stdio.h"

#include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> void look(); void save(); /*声明查看函数*/ /*声明保存函数*/ /*声明按姓名查看函数*/ /*声明按学号查看函数*/

void search_name(); void search_number(); void order(); void del(); int openl(); void type(); void see(); struct student { char num[15]; char name[20]; char sex[4]; int english; int math; int mazhe; int cyuyan; float aver; float sum; }stu[100]; int n; void main() {

/*声明排序函数*/ /*声明删除函数*/ /*声明打开函数*/ /*声明输入函数*/ /*声明打开并查看文件函数*/ /*定义学生信息的结构体类型*/

/*学号*/ /*姓名*/ /*性别*/ /*英语成绩*/ /*数学成绩*/

/*马哲成绩*/ /*c 语言成绩*/ /*平均成绩*/ /*总成绩*/

/*声明一个全局变量*/ /*主函数即用户的操作界面*/

int b,flag=0; while(1) {

/*声明局部变量*/ /*循环输出以下信息*/

printf("\n\t\t\t 欢迎来到学生成绩管理系统!\n"); printf("\n\t\t\t\t 王曼曼制作\n"); printf("\t\t\t-------------------------------\n"); printf("\t\t\t1.键入学生的信息\n\n"); /*键入学生的信息*/ /*查看录入的学生信息*/ /*按姓名查看学生的信

printf("\t\t\t2.查看录入的学生信息\n\n"); printf("\t\t\t3.按姓名查看学生的信息\n\n"); 息*/ printf("\t\t\t4.按学号查看学生的信息\n\n"); 息*/

/*按学号查看学生的信

printf("\t\t\t5.按平均成绩排序\n\n"); /*排序*/ printf("\t\t\t6.删除学生信息\n\n"); /*删除学生信息*/ printf("\t\t\t7.保存学生信息\n\n"); /*保存*/

printf("\t\t\t8.打开文件\n\n"); /*打开文件*/ printf("\t\t\t0.退出\n\n"); /*退出*/

printf("\t\t\t 请输入你的选择:"); scanf("%d",&b); switch(b) { case 1:type();break; /*调用键入学生信息函数*/ case 2:look();break; /*调用查看函数*/ case 3:search_name();break; case 4:search_number();break; /*调用姓名查看函数*/ /*调用学号查看函数*/

case 5:order();break; /*调用排序函数*/ case 6:del();break;/*调用删除函数*/ case 7:save();break;/*调用保存函数*/ case 8:see();break;/*调用打开文件函数*/

case 0:flag=1;break;/*退出 SWITCH 语句*/ default :printf("错误!"); } if(flag) break; } } /*如果选择 0 就退出循环*/

void type() /*定义键入学生信息函数*/ { system("CLS"); int i; /*定义局部变量*/

printf("\t\t 输出你想输入的学生信息个数:"); scanf("%d",&n); for(i=0;i<n;i++) { printf("\n\t\t\t----------------\n"); printf("\t\t\t 学号:"); scanf("%s",&stu[i].num); /*输入学号*/ printf("\t\t\t 姓名:"); scanf("%s",&stu[i].name); /*输入姓名*/ printf("\t\t\t 性别:"); scanf("%S",&stu[i].sex); /*输入性别*/ printf("\t\t\t 英语:"); scanf("%d",&stu[i].english); /*输入英语成绩*/ printf("\t\t\t 数学:"); scanf("%d",&stu[i].math); /*输入每个学生的信息*/

/*输入数学成绩*/ printf("\t\t\t 马哲:"); scanf("%d",&stu[i].mazhe); /*输入马哲成绩*/ printf("\t\t\tc 语言:"); scanf("%d",&stu[i].cyuyan); /*输入 c 语言成绩*/ stu[i].aver=((float)stu[i].english+(float)stu[i].math+(float)stu[i].mazhe+(float)stu[i].cy uyan)/4; /*计算平均成绩*/ stu[i].sum=(float)stu[i].english+(float)stu[i].math+(float)stu[i].mazhe+(float)stu[i].cy uyan; /*计算总成绩*/ printf("\t\t\t 平均成绩=%4.1f\n",stu[i].aver); /*输出平均成绩*/ printf("\t\t\t 总成绩=%4.1f\n",stu[i].sum); /*输出总成绩*/ } printf("\n\n\t\t\t 按任意键返回菜单!!"); getch(); save(); } void save() /*建立保存文件函数*/ { system("CLS"); FILE *fp; /*定义文件型指针*/ int i; if((fp=fopen("student.txt","wb"))==NULL)

/*打开输出文件*/ { printf("不能打开文件!\n"); return; /*终止程序*/ } for(i=0;i<n;i++) /*向 student 文件中写入信息*/

if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) printf("文件写入错误\n"); fclose(fp); /*关闭文件*/ printf("\n\n\n\n\t\t\t 学生信息保存成功!\n"); printf("\n\n\n\n\t\t\t 按任意键返回菜单!!"); getch(); } void look() { system("CLS"); int i; //n=openl(); /*调用 openl 函数*/ printf("\t 学号\t 姓名\t 性别\t 英语\t 数学\t 马哲\tc 语言\t 平均成绩\t 总成 绩\n"); for(i=0;i<n;i++) /*输出所有的学生信息*/ { /*定义查看函数*/

printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].na me,

stu[i].sex,stu[i].english,stu[i].math,stu[i].mazhe,stu[i].cyuyan,stu[i].aver,stu[i].su m); } printf("\n\n\n\t\t\t 按任意键返回菜单"); getch(); } void search_name() /*按姓名查看函数*/ { system("CLS"); int i; char name[20]; /*声明字符数组*/ printf("\t\t\t 请输入学生姓名:\n"); scanf("%s",name); printf("\t 学号\t 姓名\t 性别\t 英语\t 数学\t 马哲\tc 语言\t 平均成绩\t 总成 绩\n"); for(i=0;i<n;i++) if(strcmp(stu[i].name,name)==0) /*将输入的姓名与结构体中的姓名进行比较*/ {

printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].na me,

stu[i].sex,stu[i].english,stu[i].math,stu[i].mazhe,stu[i].cyuyan,stu[i].aver,stu[i].su m); printf("\n\n\n\t\t\t 按任意键返回菜单"); } getch(); }

void search_number() /*定义按学号查看函数*/ { system("CLS"); int i; char number[15]; /*声明字符数组*/ printf("\t\t\t 请输入学号:\n"); scanf("%s",number); printf("\t 学号\t 姓名\t 性别\t 英语\t 数学\t 马哲\tc 语言\t 平均成绩\t 总成 绩\n"); for(i=0;i<n;i++) if(strcmp(stu[i].num,number)==0) /*将输入的学号与结构体中的学号进行比较*/

printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].na me,

stu[i].sex,stu[i].english,stu[i].math,stu[i].mazhe,stu[i].cyuyan,stu[i].aver,stu[i].su m); printf("\n\n\n\t\t\t 按任意键返回菜单"); getch(); } void order() /*定义排序函数*/ { system("CLS"); int i,j; char a; struct student temp; /*声明结构体变量*/

printf("\t 学号\t 姓名\t 性别\t 英语\t 数学\t 马哲\tc 语言\t 平均成绩\t 总成 绩\n"); for(i=0;i<n;i++) /*对数据进行排序*/ { for(j=i+1;j<n;j++) if(stu[i].sum<stu[j].sum) { temp=stu[i]; stu[i]= stu[j]; stu[j]=temp; }

printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].na me,

stu[i].sex,stu[i].english,stu[i].math,stu[i].mazhe,stu[i].cyuyan,stu[i].aver,stu[i].su m); } getch(); printf("是否保存?(y or n)"); getchar(); scanf("%c",&a); if(a=='y') /*是否保存排序后的文件*/ save(); else printf("退出"); getch(); }

void del() /*定义删除学生信息函数*/ { int i; char a; char name[20]; system("CLS"); printf("\t\t\t 输入学生名字:\n"); scanf("%s",name); system("CLS"); printf("\t 学号\t 姓名\t 性别\t 英语\t 数学\t 马哲\tc 语言\t 平均成绩\t 总成 绩\n"); for(i=0;i<n;i++) if(strcmp(stu[i].name,name)==0) {

printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].na me,

stu[i].sex,stu[i].english,stu[i].math,stu[i].mazhe,stu[i].cyuyan,stu[i].aver,stu[i].su m); getch(); printf("真的删除?(y or n)"); getchar(); scanf("%c",&a); if(a=='y') /*是否删除该信息*/ { for(;i<n;i++) stu[i]=stu[i+1]; n=n-1;

printf("你已经删除信息"); } else printf("退出"); getch(); } save(); } int openl() /*定义打开文件函数*/ { system("CLS"); int i; FILE *fp; if((fp=fopen("student.txt","rb"))==NULL) { printf("Cannot open file.\n"); exit(0); } for(i=0;!feof(fp);i++) fread(&stu[i],sizeof(struct student),1,fp); fclose(fp); return(i-1); } void see() { system("CLS"); int i; n=openl(); printf("文件打开成功!\n"); /*打开并查看文件*/

printf("按任意键查看!\n"); getch(); printf("\t 学号\t 姓名\t 性别\t 英语\t 数学\t 马哲\tc 语言\t 平均成绩\t 总成 绩\n"); for(i=0;i<n;i++) /*输出所有的学生信息*/ {

printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].na me,

stu[i].sex,stu[i].english,stu[i].math,stu[i].mazhe,stu[i].cyuyan,stu[i].aver,stu[i].su m);

} printf("\n\n\n\t\t\t 按任意键返回菜单"); getch(); }

九、心得

经过这一周的 c 语言课程设计,我的收获很多! 记得刚开始学习 c 语言的时候,我对它充满了好奇,因为一直以来我就对编 程人员带着一种崇敬的心态。我始终感觉到这是一种神圣的、稀奇的课程,所以 就这样我开始学习了 c 语言。就这样经过了一个学期的学习,我已经初步了解了 程序设计的基本内容。 虽然期末考试的成绩并不是特别的理想,可是这也给了我 一个肯定。 没想到,这个小学期,我们还有机会再次接触编程的练习。刚开始做课程设 计前,我有很多胆怯和懵懂,可是后来,发现对程序也慢慢的熟练了。 刚接触 c 语言时,觉得挺难挺的懂。刚开始做课程设计前,带着很多胆怯, 可是后来,发现做程序慢慢的熟练了。按照老师的规定一步一步的做下来。在做 程序的过程中也发现了很多的不懂的地方,跟同学一起讨论,一起研究,弄懂了 问题,发现自己也开心很多。

第一天的时候,当老师布置完任务时,我完全傻眼了。感觉真的好难啊!第 一天我就是熟悉了一下 vc6.0 的操作环境,并且简单的输了几个小程序,并且运 行了一下。当程序能正常运行时,我心里高兴极了。然后在图书管借了几本编程 的书和上机模拟。 晚上我和同学又查询了一下要用到的函数,可是发现这些函数 都是页面的函数,在接下来编程中没有太多的用途。 接下来,我们开始进入了真正的编程,首先我们先讨论了用什么方法编程? 我最终决定用数组的方法。然后我定义了数组,输入了头函数和各个函数,开始 编程了。边编程边差错,编程真的是一个细心的活,错一个小小的标点、括号就 有可能使整个程序处于错误状态。还有当我们编程时候,顺便把 c 语言教材上的 保存、删除等函数的标准模版拷贝下来了。 (嘿嘿)编完后查错误是一个巨大的 任务啊。我和同学还多拿出半天来排查错误,终于编好后,看着在 6.0 的系统中 运行时,我太激动了。 在做课设的过程中,发现了平时很多没有注意到得问题,例如:返回值函数 和不返回值函数两者在主函数中的调用是不同的。更重要的是,正是这次课设让 我重新认识了 c 语言的重要性。 通过这次课设,让我受益匪浅。我也相信以后会越做越好!


网站首页 | 网站地图 | 学霸百科 | 新词新语
All rights reserved Powered by 大学生考试网
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com