当前位置:首页 >> 信息与通信 >>

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


福建师范大学人民武装学院

C 语言程序设计报告书
设计名称:学生成绩管理系统
专业:软件工程 指导老师:陈琳 姓名: 黄强 学号: 119052012026

2013-415

一、实验目的 1.在编辑应用程序过程中, 逐步加深对 C 语言编程的理解; 2.加强实践的能力,动手能力,同时进一步对

所学的知识 进行巩固; 3.培养初步编程的能力,为以后的学习奠定基础。 二、实验内容 运用所学的 C 语言知识编辑一个应用程序: 学习成绩管理 系统 三.系统软件环境: 本程序主要运行在: Visual C++ 6.0 Turbo C/C++ 3.0 四.课程设计题目: 学生成绩管理系统 程序说明: N 个学生, 有 每个学生的数据包含学号 (不重复) 姓名,性别,课程号,课程名,学分和课程的三种得分。试 设计一学生成绩 管理系统,使之能提供以下功能: (1)主菜单

学生成绩管理系统 1. 录入 2. 查询 3. 删除 4. 排序 5. 保存退出 6. 退出 (2)各菜单项功能 ①录入:输入学生的学号、姓名性别,课程号,课程名,学分和
课程的三种得分

②成绩查询: A.基本信息查询 *按学号查询学生记录。 *按名字查询学生纪录。 B.成绩查询 *按学号查询学生记录。 *按名字查询学生纪录。

③纪录删除 *按输入的学号删除 ④排序

A.综合成绩升序。 B.综合成绩降序。 C.学分降序。 D.学分升序。

五.数据结构设计描述: 由主函数登陆


菜单函数


Input 函数 select 函数 del 函数 paixu 函数 保存函数 退出系统

六.结构体的定义和作用
struct student { int no; char name[20]; char sex[4]; int num; char scn[20]; int score; float score1; float score2; float score3; float ave; float sum; //定义学生信息 // 学号 //姓名 //性别 //课程号 //课程名 //学分 //成绩 1 //成绩 2 //成绩 3 //实得学分 //总分

七.系统各函数的功能,、相互调用关系

1.函数实现功能说明: (1)menu 函数 是定义一个菜单函数,其功能在于输出菜单界面供使用者选 择。 (2)input 函数 是定义用于输入学生信息。 (3)select 函数 是定义用于查询学生信息。包括学号、姓名及各科成绩。 (4)del 函数 按输入的学号删除
(5)paixu 函数 设置新菜单,并调用四个不同排序输出函数。 (6)保存函数 保存信息。

八.心得体会
C 语言是一种较为基础和普遍的编程语言,应用相当广泛,这 次课程设计的要求与 C 语言的广泛应用相比较还有很大的差距。 我们对于 C 语言的理解和使用还处在一个初级的阶段, 我们要想 掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都 是人们一步一步总结出来的,我想我们也要努力拓展自己的思 维,努力去寻求新的方法,以创造出更为完善的应用程序。

九.程序:

#include<stdio.h> #include<conio.h> #include <stdlib.h> #include<string.h> #define n 10 void zhjx(); void menu(); void input(); void check(); void fun(); void fun2(); void fun3(); void fun4(); void del(); void paixu(); void zhsx(); void zhjx(); void xfjx(); void xfsx(); void save(); struct student { int no; char name[20];

/*清屏*/ /*显示目录*/

//定义学生信息 // 学号 //姓名

char sex[4]; int num; char scn[20]; int score; float score1; float score2; float score3; float ave; float sum; }; struct student stu[n],*p,t; int now=0,i,j,k,l; char ch;

//性别 //课程号 //课程名 //学分 //成绩 1 //成绩 2 //成绩 3 //实得学分 //总分

void main() { int h,flag1,flag2; char name[20]="hq",password[10]="111"; char person[20],password1[10]; printf ("\t\t ******** 欢迎进入学生成绩管理系统!********\n\n"); printf ("\t\t\t 用 户 登 录\n\n"); for(h=0;h!=5;) { printf("\t\t\t\t 用户名:"); gets(person); flag1=strcmp(person,name); printf("\t\t\t\t 密码:"); gets(password1); flag2=strcmp(password,password1); if(flag1==0 && flag2==0) { printf("\t\t\t\t 登陆成功!\n\n"); menu(); break; } else { printf ("\t\t\t 用户名或密码错误!\n\n"); printf ("\t\t\t 请注意:您还剩%d 次机会!\n\n",4-h); h++; } }

if (h=5) printf ("对不起,您输入的用户名或密码有误,已被强制退出。\n"); } void menu() { int as; char ch; do{ printf("\n\n\n\n\t\t****&****&****&****&****&****&****&****&****&****"); start: printf("\n\n\n\n\t\t\t 欢迎使用学生成绩管理系统\n"); printf("\n\n\n\n\t\t******************按任意键继续********************"); ch=getch(); } while(!ch); system("cls"); /*以下为功能选择模块*/ do{printf("学生管理系统\n"); printf("\t\t"); printf("1------学生成绩录入\n\t\t"); printf("2------查询\n\t\t"); printf("3------删除学生记录\n\t\t"); printf("4------排序\n\t\t"); printf("5------保存退出\n\t\t"); printf("6------退出\n\t\t"); printf("\t\t\t\t 选择功能选项(输入所选功能前的数字):");

scanf("%d",&as); switch(as) {case 1:input();break; case 2:check();break; case 3:del();break; case 4:paixu();break; case 5:save();break; case 6:system("exit");exit(0);break; default:system("cls"); goto start; }}while(1);}

void input()

/*学生信息录入模块*/

{ int i=0; char ch; do { printf("\t\t\t\t1.录入学生信息\n 输入第%d 个学生的信息\n",i+1); printf("\n 输入 8 位的学生学号:"); scanf("%u",&stu[i].no); fflush(stdin); printf("\n 输入学生姓名:"); fflush(stdin); gets(stu[i].name); printf("\n 输入学生性别:"); fflush(stdin); gets(stu[i].sex); fflush(stdin); printf("\n 输入学生课程号:"); scanf("%d",&stu[i].num); fflush(stdin); printf("\n 输入学生课程名:"); gets(stu[l].scn); ;fflush(stdin); printf("\n 输入课程学分:"); scanf("%d",&stu[i].score); printf("\n 输入学生平时成绩:"); fflush(stdin); scanf("%f",&stu[i].score1); printf("\n 输入学生实验成绩:"); fflush(stdin); scanf("%f",&stu[i].score2); printf("\n 输入学生卷面成绩:"); fflush(stdin); scanf("%f",&stu[i].score3); printf("\n\n"); if(stu[i].score2>0) stu[i].sum=stu[i].score1*0.15+stu[i].score2*0.15+stu[i].score3*0.7; else stu[i].sum=stu[i].score1*0.3+stu[i].score3*0.7; k=stu[i].sum/10; switch(k) {case 10:(float)stu[i].ave=(float)stu[i].score;break; case 9:(float)stu[i].ave=(float)stu[i].score;break;

case 8:(float)stu[i].ave=(float)stu[i].score*0.8;break; case 7:(float)stu[i].ave=(float)stu[i].score*0.7;break; case 6:(float)stu[i].ave=(float)stu[i].score*0.6;break; default:(float)stu[i].ave=0.0;} i++; now=i; printf("是否继续输入?(Y/N)"); fflush(stdin); ch=getch(); system("cls"); } while(ch!='n'&&ch!='N'); system("cls"); }

void check() //查询 {printf("————查 询————\n"); printf("\t\t*学生基本信息查询*\n"); printf("\t\t"); printf("1--按学号查询\n\t\t"); printf("2--按姓名查询\n\t\t"); printf("*学生成绩查询*\n"); printf("\t\t"); printf("3--按学号查询\n\t\t"); printf("4--按姓名查询\n\t\t"); printf("0--返回主菜单\n\t\t"); printf("请选择:"); scanf("%d",&i); switch(i) { case 0:menu();break; //调用主菜单函数,表示返回主菜单 case 1:fun();break; //调用函数 fun1,表示按学号查询学生基本信息 case 2:fun2();break; //调用函数 fun2,表示按姓名查询学生基本信息 case 3:fun3();break; //调用函数 fun3,表示按学号查询学生成绩 case 4:fun4();break; //调用函数 fun4,表示按姓名查询学生成绩 };} void fun() //按学号查询 1 {int i,j; printf("请输入要查询同学的学号:");

scanf("%d",&j); for(i=0;i<now;i++) //从第一名学生开始 { if(stu[i].no==j) //查找与输入学号相同的学号并输出 { printf("学号:%d\n",stu[i].no); printf("姓名:%s\n",stu[i].name); printf("性别:%s\n",stu[i].sex); } } check(); }; void fun2() //按姓名查询 1 { char name[20]; printf("请输入要查询同学的姓名:"); scanf("%s",&name); for(i=0;i<now;i++) { if(strcmp(stu[i].name,name)==0) {printf("学号:%d\n",stu[i].no); printf("姓名:%s\n",stu[i].name); printf("性别:%s\n",stu[i].sex);

} } }; void fun3() //按学号查询 2 {int i; printf("请输入要查询同学的学号:"); scanf("%d",&j); for(i=0;i<now;i++) { if(stu[i].no==j) { printf("平时成绩%f\n",stu[i].score1); printf("实验成绩:%f\n",stu[i].score2); printf("卷面成绩:%f\n",stu[i].score3); printf("总分:%f\n",stu[i].sum); printf("学分:%f\n",stu[i].ave);}

} check(); } void fun4()//按姓名查询 2 {int i; char name[20]; printf("请输入要查询同学的姓名:"); scanf("%s",&name); for(i=0;i<now;i++) { if(strcmp(stu[i].name,name)==0) { printf("平时成绩%f\n",stu[i].score1); printf("实验成绩:%f\n",stu[i].score2); printf("卷面成绩:%f\n",stu[i].score3); printf("总分:%f\n",stu[i].sum); printf("学分:%f\n",stu[i].ave); } } check(); };void del() {unsigned long inum; int i; printf("输入要删除学生的学号:"); fflush(stdin); scanf("%u",&inum); for(i=0;i<now;i++) { if(stu[i].no=inum) { if(i==now)now-=1; else { stu[i]=stu[now-1]; now-=1; } break; } } system("cls"); menu(); };

/*删除数据函数*/

void paixu() { int i;

//排序

printf("————排 序————\n"); printf("\t\t"); printf("1--按综合成绩升序\n\t\t"); printf("2--按综合成绩降序\n\t\t"); printf("3--按实得学分升序\n\t\t"); printf("4--按实得学分降序\n\t\t"); printf("0--返回主菜单\n\t\t"); printf("请选择:"); scanf("%d",&i); switch(i) { case 0:menu();break; case 1:zhsx();break; case 2:zhjx();break; case 3:xfsx();break; case 4:xfjx();break; } }; void zhsx()//综合成绩升序 { int i,j; for(i=0;i<now;i++) for(j=now-1;j>i;j--) if(stu[j].sum<stu[j-1].sum) { t=stu[j]; stu[j]=stu[j-1]; stu[j-1]=t; } for(i=0;i<now;i++) {printf("学号:%d",stu[i].no); printf("姓名:%s",stu[i].name); printf("性别:%s",stu[i].sex); printf("平时成绩%f",stu[i].score1); printf("实验成绩:%f",stu[i].score2); printf("卷面成绩:%f",stu[i].score3); printf("总分:%f\n",stu[i].sum); }paixu(); };

void zhjx()//综合成绩降序 { int i,j; for(i=0;i<now;i++) for(j=now-1;j>i;j--) if(stu[j].sum>stu[j-1].sum) { t=stu[j]; stu[j]=stu[j-1]; stu[j-1]=t; } for(i=0;i<now;i++) {printf("学号:%d",stu[i].no); printf("姓名:%s",stu[i].name); printf("性别:%s",stu[i].sex); printf("平时成绩%f",stu[i].score1); printf("实验成绩:%f",stu[i].score2); printf("卷面成绩:%f",stu[i].score3); printf("总分:%f\n",stu[i].sum); }paixu(); }; void xfjx()//学分降序 { int i,j; for(i=0;i<now;i++) for(j=now-1;j>i;j--) if(stu[j].ave>stu[j-1].ave) { t=stu[j]; stu[j]=stu[j-1]; stu[j-1]=t; } for(i=0;i<now;i++) {printf("学号:%d\n",stu[i].no); printf("姓名:%s",stu[i].name); printf("性别:%s",stu[i].sex); printf("平时成绩%f",stu[i].score1); printf("实验成绩:%f",stu[i].score2); printf("卷面成绩:%f",stu[i].score3); printf("总分:%f\n",stu[i].sum);} paixu(); };

void xfsx()//学分升序 { int i,j; for(i=0;i<now;i++) for(j=now-1;j>i;j--) if(stu[j].ave<stu[j-1].ave) { t=stu[j]; stu[j]=stu[j-1]; stu[j-1]=t; } for(i=0;i<now;i++) {printf("学号:%d\n",stu[i].no); printf("姓名:%s",stu[i].name); printf("性别:%s",stu[i].sex); printf("平时成绩%f",stu[i].score1); printf("实验成绩:%f",stu[i].score2); printf("卷面成绩:%f",stu[i].score3); printf("总分:%f\n",stu[i].sum);} paixu(); }; void save() { FILE *fp; int i; char filepath[20]; printf("输入要保存的文件路径:"); fflush(stdin); gets(filepath); if((fp=fopen(filepath,"w"))==NULL) { printf("\n 保存失败!"); exit(0); } for(i=0;i<now;i++) {

/*保存数据函数*/

fprintf(fp,"\t%u%s\t%s\t%u\t%s\t%u\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", stu[i].no,stu[i].name,stu[i].sex,stu[i].num,stu[i].scn,stu[i].score,stu[i].score1,stu[i].score2, stu[i].score3,stu[i].ave,stu[i].sum);

} fclose(fp); printf("学生信息已保存在%s 中!\n",filepath); system("pause"); system("cls"); }


相关文章:
C语言程序设计学生成绩管理系统实验报告 2
C语言程序设计学生成绩管理系统实验报告 2_信息与通信_工程科技_专业资料。福建师范...退出 (2)各菜单项功能 ①录入:输入学生的学号、姓名性别,课程号,课程名,学...
c语言程序设计报告 学生成绩管理系统
c语言程序设计报告 学生成绩管理系统_工学_高等教育_教育专区。牛刀小试 学生成绩管理系统 课程设计报告书 学生成绩管理系统 单班学姓 位: 级: 号: 名: 分院 ...
C语言程序设计学生成绩管理系统实验报告
移通学院 C 语言程序设计报告书设计名称:学生成绩管理系统专业: 指导老师: 班级...实验目的 1.在编辑应用程序过程中, 逐步加深对 C 语言编程的理解; 2.加强...
c语言学生成绩管理系统实训报告(含源代码)
[130254]C 语言程序设计实训 姓 名: 徐博 软件学院 院 (系) : 专业班级:...网页设计 02 徐博 62141310250 一 设计项目:学生成绩管理系统 总体设计: 1...
c语言课程设计报告,成绩管理系统 (2)
本次课程设计学生可以根据喜好, 可以利用复杂的数据类型实现成绩管理系统等小型的 综合应用程序。 、题目(可从下面题目中任选一个) 1、C 语言的图形编程应用 ...
C语言学生成绩管理系统课程设计报告
C 语言课程设计报告一 .问题描述:题目七:学生成绩管理系统设计 学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计 算机)等。 主要功能:...
学生成绩管理系统实验报告(附C语言源码)
学生成绩管理系统实验报告(附C语言源码)_电脑基础知识_IT/计算机_专业资料。本学生...设计功能简介本程序针对登录系统的不同身份 (有管理员、 学生两个身份) ...
C语言程序设计学生成绩管理系统课程设计报告
C 语言中有关结构体数组及外部文件的内容, 独立设计学生成绩管理系统, 并编程实现以下功能: 1、整个系统均用C语言实现; 2、利用结构体数组来实现学生成绩的数据...
C语言学生学习成绩管理系统实验报告
C语言学生学习成绩管理系统实验报告_IT/计算机_专业资料。很强,很全,很给力的...2.掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的 方法。 ...
C语言——成绩管理系统实验报告
C语言——成绩管理系统实验报告_计算机软件及应用_IT/计算机_专业资料。目录 1....…. …. 2.输出数据文件(由程序自动生成) 学生综合成绩文件。 学号 姓名 ...
更多相关标签:
学生成绩系统c语言 | c语言写学生成绩系统 | c语言成绩管理系统 | c语言学生管理系统 | c语言成绩查询系统 | c语言的学生管理系统 | c语言写学生管理系统 | c语言学生选课系统 |