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

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语言学生信息管理系统实验报告 -
C语言学生信息管理系统实验报告 -_计算机软件及应用_IT/计算机_专业资料。c语言...设计相结合的方法,锻炼学生综合分析解决实际问题的编程能力; 2、 通过 C 语言...
C语言学生成绩管理系统实验报告
C语言学生成绩管理系统实验报告_其它_高等教育_教育专区。《程序设计基础》课程...1 2 3 4 4 1 2 3 Show 函数和各函数的连 接 主函数 Save 函数 Show ...
C语言 学生成绩管理系统实验报告
C语言 学生成绩管理系统实验报告_工学_高等教育_教育专区。C 学生成绩管理系统实验...(2)按数学、程序设计、总分查询(以数学为例) S1:输入最低分数线 m S2:0-...
学生成绩管理系统实验报告(附C语言源码)
学生成绩管理系统实验报告(附C语言源码)_电脑基础知识_IT/计算机_专业资料。本学生...设计功能简介本程序针对登录系统的不同身份 (有管理员、 学生两个身份) ...
c语言学生成绩管理系统实训报告(含源代码)
[130254]C 语言程序设计实训 姓 名: 徐博 软件学院 院 (系) : 专业班级:...网页设计 02 徐博 62141310250 一 设计项目:学生成绩管理系统 总体设计: 1...
C语言实验报告--学生成绩管理系统
C语言实验报告--学生成绩管理系统_IT/计算机_专业资料。C语言编写,为计算机大一的学生提供一个参考 X X 大学 C S U C 语言程序设计实践报告 题 目 学生成绩...
C语言程序设计学生成绩管理系统报告文档
C语言程序设计学生成绩管理系统报告文档_工学_高等教育_教育专区。课程设计报告 ...目录 第一章 绪论 第一节 课程背景 第二节 本文所做工作 第二章 需求分析...
C语言学生信息管理系统实验报告
C语言学生信息管理系统实验报告_工学_高等教育_教育专区。实验四:结构体实验目的... 总体设计 框架结构图(系统的功能结构图)学生成绩管理系统 输入 增加 程序...
学生信息管理系统c语言程序设计报告(完美)
学生信息管理系统c语言程序设计报告(完美)_实习总结_总结/汇报_实用文档。学生...第3页 学生信息管理系统 2、设计一个管理系统,上机编程、调试并通过该管理系统...
C语言学生成绩管理系统实验报告
实验内容:程序一:学生成绩管理系统 某班期末考试科目为数学(MT) 、英语(EN)和物理(PH) ,有最多不超过 30 人参加考试。 (1)计算每个学生的总分; (2)按总分...
更多相关标签: