1、 福建师范大学人民武装学院 C语言程序设计报告书 设计名称:学生成绩管理系统 专业:软件工程 指导老师:陈琳 姓名: 黄强 学号: 6 2013-415 一、实验目的 1.在编辑应用程序过程中,逐步加深对C语言编程的理解; 2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固; 3.培养初步编程的能力,为以后的学习奠定基础。 二、实验内容 运用所学的C语言知识编辑一个应用程序:学习成绩管理系统 三.系统软件环境: 本程序主要运行在: Visual C++ 6
2、0 Turbo C/C++ 3.0 四.课程设计题目: 学生成绩管理系统 程序说明:有N个学生,每个学生的数据包含学号(不重复)姓名,性别,课程号,课程名,学分和课程的三种得分。试设计一学生成绩 管理系统,使之能提供以下功能: (1)主菜单 学生成绩管理系统 1. 录入 2. 查询 3. 删除 4. 排序 5. 保存退出 6. 退出 (2)各菜单项功能 ①录入:输入学生的学号、姓名性别,课程号,课程名,学分和课程的三种得分 ②成绩查询: A.基本信息查询 *按学号查询学生记录。 *按名字查询学生纪录。 B
3、成绩查询 *按学号查询学生记录。 *按名字查询学生纪录。 ③纪录删除 *按输入的学号删除 ④排序 A. 综合成绩升序。 B. 综合成绩降序。 C. 学分降序。 D. 学分升序。 由主函数登陆 五.数据结构设计描述: ↓ 菜单函数 ↓ Input函数 select函数 del函数 paixu函数 保存函数 退出系统 六.结构体的定义和作用 struct student //定义学生信息 { int no;
4、 // 学号 char name[20]; //姓名 char sex[4]; //性别 int num; //课程号 char scn[20]; //课程名 int
5、score; //学分 float score1; //成绩1 float score2; //成绩2 float score3; //成绩3 float ave; //
6、实得学分 float sum; //总分 七.系统各函数的功能,、相互调用关系 1.函数实现功能说明: (1)menu函数 是定义一个菜单函数,其功能在于输出菜单界面供使用者选择。 (2)input函数 是定义用于输入学生信息。 (3)select 函数 是定义用于查询学生信息。包括学号、姓名及各科成绩。 (4)del函数 按输入的学号删除 (5) paixu函数 设置新菜单,并调用四个不同排序输出函数。 (6) 保存函数 保存信息。 八.心得体会 C语言是一
7、种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距。我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序。
九.程序:
#include
8、 /*显示目录*/
#include
9、 //定义学生信息 { int no; // 学号 char name[20]; //姓名 char sex[4]; //性别 int num; //课程号 char
10、 scn[20]; //课程名 int score; //学分 float score1; //成绩1 float score2; //成绩2 float score3; /
11、/成绩3 float ave; //实得学分 float sum; //总分 }; struct student stu[n],*p,t; int now=0,i,j,k,l; char ch; void main() { int h,flag1,flag2; char name[20]="hq",password[10]="111"; char person[2
12、0],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);
13、 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);
14、 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***********
15、按任意键继续********************"); ch=getch(); } while(!ch); system("cls"); /*以下为功能选择模块*/ do{printf("学生管理系统\n"); printf("\t\t"); printf("1------学生成绩录入\n\t\t"); printf("2------查询\n\t\t"); printf("3------
16、删除学生记录\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
17、 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
18、{ 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(s
19、tdin); 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].scor
20、e); 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);
21、 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[
22、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;
23、 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--按学号查询\
24、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; //调用函数
25、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 26、 //从第一名学生开始
{
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);
fo 27、r(i=0;i 28、[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
{i 29、nt i;
char name[20];
printf("请输入要查询同学的姓名:");
scanf("%s",&name);
for(i=0;i 30、 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 31、 {
if(stu[i].no=inum)
{
if(i==now)now-=1;
else
{
stu[i]=stu[now-1];
now-=1;
}
break;
}
}
system("cls");
menu();
} 32、
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: 33、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 34、for(i=0;i 35、].sum);
}paixu();
};
void zhjx()//综合成绩降序
{ int i,j;
for(i=0;i 36、tf("性别:%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 37、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 38、 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 39、stu[j-1];
stu[j-1]=t;
}
for(i=0;i 40、
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 41、)
{
printf("\n保存失败!");
exit(0);
}
for(i=0;i






