C语言程序设计学生成绩管理系统实验报告 .doc
福建师范大学人民武装学院 C语言程序设计报告书设计名称:学生成绩管理系统专业:软件工程指导老师:陈琳姓名: 黄强 学号: 6 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 name20; /姓名 char sex4; /性别 int num; /课程号 char scn20; /课程名 int score; /学分 float score1; /成绩1 float score2; /成绩2 float score3; /成绩3 float ave; /实得学分 float sum; /总分七系统各函数的功能,、相互调用关系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 10void 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 name20; /姓名 char sex4; /性别 int num; /课程号 char scn20; /课程名 int score; /学分 float score1; /成绩1 float score2; /成绩2 float score3; /成绩3 float ave; /实得学分 float sum; /总分; struct student stun,*p,t;int now=0,i,j,k,l; char ch;void main() int h,flag1,flag2; char name20="hq",password10="111" char person20,password110;printf ("tt * 欢迎进入学生成绩管理系统!*nn");printf ("ttt 用 户 登 录nn"); for(h=0;h!=5;) printf("tttt 用户名:"); gets(person); flag1=strcmp(person,name); printf("tttt 密码:"); gets(password1); flag2=strcmp(password,password1); if(flag1=0 && flag2=0) printf("tttt 登陆成功!nn"); menu(); break; else printf ("ttt 用户名或密码错误!nn");printf ("ttt 请注意:您还剩%d次机会!nn",4-h); h+;if (h=5) printf ("对不起,您输入的用户名或密码有误,已被强制退出。n"); void menu() int as; char ch; do printf("nnnntt*&*&*&*&*&*&*&*&*&*"); start: printf("nnnnttt 欢迎使用学生成绩管理系统n"); printf("nnnntt*按任意键继续*"); ch=getch(); while(!ch); system("cls"); /*以下为功能选择模块*/ doprintf("学生管理系统n");printf("tt");printf("1-学生成绩录入ntt");printf("2-查询ntt");printf("3-删除学生记录ntt");printf("4-排序ntt");printf("5-保存退出ntt");printf("6-退出ntt");printf("tttt选择功能选项(输入所选功能前的数字):"); 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("tttt1.录入学生信息n输入第%d个学生的信息n",i+1); printf("n输入8位的学生学号:"); scanf("%u",&stui.no); fflush(stdin); printf("n输入学生姓名:"); fflush(stdin); gets(stui.name); printf("n输入学生性别:"); fflush(stdin); gets(stui.sex); fflush(stdin); printf("n输入学生课程号:"); scanf("%d",&stui.num); fflush(stdin); printf("n输入学生课程名:"); gets(stul.scn); ;fflush(stdin); printf("n输入课程学分:"); scanf("%d",&stui.score); printf("n输入学生平时成绩:"); fflush(stdin); scanf("%f",&stui.score1); printf("n输入学生实验成绩:"); fflush(stdin); scanf("%f",&stui.score2); printf("n输入学生卷面成绩:"); fflush(stdin); scanf("%f",&stui.score3); printf("nn"); if(stui.score2>0) stui.sum=stui.score1*0.15+stui.score2*0.15+stui.score3*0.7; else stui.sum=stui.score1*0.3+stui.score3*0.7; k=stui.sum/10; switch(k) case 10:(float)stui.ave=(float)stui.score;break; case 9:(float)stui.ave=(float)stui.score;break; case 8:(float)stui.ave=(float)stui.score*0.8;break;case 7:(float)stui.ave=(float)stui.score*0.7;break;case 6:(float)stui.ave=(float)stui.score*0.6;break;default:(float)stui.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("tt*学生基本信息查询*n");printf("tt");printf("1-按学号查询ntt");printf("2-按姓名查询ntt");printf("*学生成绩查询*n");printf("tt");printf("3-按学号查询ntt");printf("4-按姓名查询ntt");printf("0-返回主菜单ntt");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() /按学号查询1int i,j;printf("请输入要查询同学的学号:");scanf("%d",&j);for(i=0;i<now;i+) /从第一名学生开始if(stui.no=j) /查找与输入学号相同的学号并输出printf("学号:%dn",stui.no);printf("姓名:%sn",stui.name);printf("性别:%sn",stui.sex); check(); ;void fun2() /按姓名查询1char name20;printf("请输入要查询同学的姓名:");scanf("%s",&name);for(i=0;i<now;i+)if(strcmp(stui.name,name)=0)printf("学号:%dn",stui.no);printf("姓名:%sn",stui.name);printf("性别:%sn",stui.sex); ;void fun3() /按学号查询2int i;printf("请输入要查询同学的学号:");scanf("%d",&j);for(i=0;i<now;i+)if(stui.no=j) printf("平时成绩%fn",stui.score1); printf("实验成绩:%fn",stui.score2); printf("卷面成绩:%fn",stui.score3); printf("总分:%fn",stui.sum);printf("学分:%fn",stui.ave); check();void fun4()/按姓名查询2int i;char name20;printf("请输入要查询同学的姓名:");scanf("%s",&name);for(i=0;i<now;i+)if(strcmp(stui.name,name)=0) printf("平时成绩%fn",stui.score1); printf("实验成绩:%fn",stui.score2); printf("卷面成绩:%fn",stui.score3); printf("总分:%fn",stui.sum);printf("学分:%fn",stui.ave); check();void del() /*删除数据函数*/ unsigned long inum; int i; printf("输入要删除学生的学号:"); fflush(stdin); scanf("%u",&inum); for(i=0;i<now;i+) if(stui.no=inum) if(i=now)now-=1; else stui=stunow-1; now-=1; break; system("cls"); menu();void paixu() /排序 int i;printf("排 序n");printf("tt");printf("1-按综合成绩升序ntt");printf("2-按综合成绩降序ntt");printf("3-按实得学分升序ntt");printf("4-按实得学分降序ntt");printf("0-返回主菜单ntt");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(stuj.sum<stuj-1.sum) t=stuj;stuj=stuj-1;stuj-1=t; for(i=0;i<now;i+)printf("学号:%d",stui.no);printf("姓名:%s",stui.name);printf("性别:%s",stui.sex); printf("平时成绩%f",stui.score1); printf("实验成绩:%f",stui.score2); printf("卷面成绩:%f",stui.score3); printf("总分:%fn",stui.sum);paixu();void zhjx()/综合成绩降序 int i,j;for(i=0;i<now;i+) for(j=now-1;j>i;j-) if(stuj.sum>stuj-1.sum) t=stuj;stuj=stuj-1;stuj-1=t; for(i=0;i<now;i+)printf("学号:%d",stui.no);printf("姓名:%s",stui.name);printf("性别:%s",stui.sex); printf("平时成绩%f",stui.score1); printf("实验成绩:%f",stui.score2); printf("卷面成绩:%f",stui.score3); printf("总分:%fn",stui.sum);paixu();void xfjx()/学分降序 int i,j;for(i=0;i<now;i+) for(j=now-1;j>i;j-) if(stuj.ave>stuj-1.ave) t=stuj;stuj=stuj-1;stuj-1=t; for(i=0;i<now;i+)printf("学号:%dn",stui.no);printf("姓名:%s",stui.name);printf("性别:%s",stui.sex); printf("平时成绩%f",stui.score1); printf("实验成绩:%f",stui.score2); printf("卷面成绩:%f",stui.score3); printf("总分:%fn",stui.sum);paixu();void xfsx()/学分升序 int i,j;for(i=0;i<now;i+) for(j=now-1;j>i;j-) if(stuj.ave<stuj-1.ave) t=stuj;stuj=stuj-1;stuj-1=t; for(i=0;i<now;i+)printf("学号:%dn",stui.no);printf("姓名:%s",stui.name);printf("性别:%s",stui.sex); printf("平时成绩%f",stui.score1); printf("实验成绩:%f",stui.score2); printf("卷面成绩:%f",stui.score3); printf("总分:%fn",stui.sum);paixu();void save() /*保存数据函数*/ FILE *fp; int i; char filepath20; 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%st%st%ut%st%ut%.2ft%.2ft%.2ft%.2ft%.2fn", stui.no,stui.name,stui.sex,stui.num,stui.scn,stui.score,stui.score1,stui.score2, stui.score3,stui.ave,stui.sum); fclose(fp); printf("学生信息已保存在%s中!n",filepath); system("pause"); system("cls");