课程设计报告学生成绩管理系统C语言.docx
《课程设计报告学生成绩管理系统C语言.docx》由会员分享,可在线阅读,更多相关《课程设计报告学生成绩管理系统C语言.docx(27页珍藏版)》请在冰豆网上搜索。
课程设计报告学生成绩管理系统C语言
信息学院
课程设计Ⅰ报告
课程名称___C语言程序设计_
题目名称学生成绩管理系统
学生学院__
专业班级
学号
学生姓名
指导教师__________
2012年12月23日
1设计目的与要求3
1.1题目及设计要求3
1.2本程序设计的知识点3
2、功能设计3
2.1、总体设计3
2.3详细设计6
3、程序实现8
3.1程序实现时应考虑的问题8
3.2成绩排序、信息删除、信息保存、文件打开模块核心代码8
3.3程序源代码11
4、测试分析19
4.1测试结果及分析19
5、总结22
6、参考文献:
23
1设计目的与要求
1.1题目及设计要求
题目:
将学生基本信息、学生成绩基本信息要存入文件当中,并且具有文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。
设计要求:
程序具有信息录入、查看、查找、成绩排序、删除信息、保存信息、打开文件、退出系统等功能。
我负责的是成绩排序、信息的删除、信息的保存、文件的打开这四个模块。
1.2本程序设计的知识点
1程序涉及数组,字符串的定义;
2函数调用;
3结构体,指针;
4文件录入
2、功能设计
2.1、总体设计
(1)在此程序中,包括几个头文件:
#include:
将stdio.h内容放在这儿,此文件有printf、scanf等函数的定义;
#include:
定义字符串变量;
#include:
定义了五种类型变量、常用函数例如look()、save();
(2)系统中所包含的函数:
voidlook();/*声明查看函数*/
voidsave();/*声明保存函数*/
voidsearch_name();/*声明按姓名查看函数*/
voidsearch_number();/*声明按学号查看函数*/
voidorder();/*声明排序函数*/
voiddel();/*声明删除函数*/
intopenl();/*声明打开函数*/
voidwelcome();/*声明我的个人信息函数*/
voidtype();/*声明输入函数*/
voidsee();/*声明打开并查看文件函数*/
Main();/*主函数*/
(3)系统中定义的结构体
structstudent/*定义学生信息的结构体类型*/
charnum[15];/*学号*/
charname[20];/*姓名*/
charsex[4];/*性别*/
chardno[20];/*宿舍号*/
intenglish;/*英语成绩*/
intmath;/*数学成绩*/
intchinese;/*语文成绩*/
floataver;/*平均成绩*/
floatsum;/*总成绩*/
(4)系统中定义的全局变量
intn
(5)系统功能模块
2.3详细设计
(1)成绩排序模块
排序功能:
对数据进行排序,通过order函数对数据按平均分进行排序,排序结束后调用save函数保存。
(2)信息删除模块
删除功能:
删除信息,通过del函数实现,删除后调用save函数对数据保存。
(3)信息保存模块
保存功能:
对数据进行保存,用save函数向文件中写入数据实现该功能。
(4)文件打开模块
3、程序实现
3.1程序实现时应考虑的问题
程序代码问题输入时大小写问题、界面是否整洁大方。
在程序实现时,定义是否合理,函数调用语句是否达到要求,控制语句是否合理。
调试程序,运行程序,程序是否达到设计需求等。
3.2成绩排序、信息删除、信息保存、文件打开模块核心代码
voidorder()/*定义排序函数*/
{
system("CLS");
inti,j;
chara;
structstudenttemp;/*声明结构体变量*/
printf("学号\t姓名\t性别\t宿舍\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;i{
for(j=i+1;jif(stu[i].sum{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
printf("%s\t%s\t%s\t%s\t%d\t%d\t%d\t%.1f\t\t%.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].dno,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
getch();
printf("是否保存?
(yorn)");
getchar();
scanf("%c",&a);
if(a=='y')/*是否保存排序后的文件*/
save();
else
printf("退出");
getch();
}
voiddel()/*定义删除学生信息函数*/
{
inti;
chara;
charname[20];
system("CLS");
printf("\t\t\t输入学生名字:
\n");
scanf("%s",name);
system("CLS");
printf("学号\t姓名\t性别\t宿舍\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;iif(strcmp(stu[i].name,name)==0)
{
printf("%s\t%s\t%s\t%s\t%d\t%d\t%d\t%.1f\t\t%.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].dno,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
getch();
printf("真的删除?
(yorn)");
getchar();
scanf("%c",&a);
if(a=='y')/*是否删除该信息*/
{
for(;istu[i]=stu[i+1];
n=n-1;
printf("你已经删除信息");
}
else
printf("退出");
getch();
}
save();
}
voidsave()/*建立保存文件函数*/
{
system("CLS");
FILE*fp;/*定义文件型指针*/
inti;
if((fp=fopen("student.txt","wb"))==NULL)/*打开输出文件*/
{
printf("不能打开文件!
\n");
return;/*终止程序*/
}
for(i=0;iif(fwrite(&stu[i],sizeof(structstudent),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();
}
voidsee()/*打开并查看文件*/
{
system("CLS");
inti;
n=openl();
printf("文件打开成功!
\n");
printf("按任意键查看!
\n");
getch();
printf("学号\t姓名\t性别\t宿舍\t电话\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;i{
printf("%s\t%s\t%2s\t%s\t%d\t%d\t%d\t%3.1f\t\t%6.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].dno,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
printf("\n\n\n\t\t\t按任意键返回菜单");
getch();
}
3.3程序源代码
#include"stdio.h"
#include"conio.h"
#include"string.h"
#include"stdlib.h"
voidlook();/*声明查看函数*/
voidsave();/*声明保存函数*/
voidsearch_name();/*声明按姓名查看函数*/
voidsearch_number();/*声明按学号查看函数*/
voidorder();/*声明排序函数*/
voiddel();/*声明删除函数*/
intopenl();/*声明打开函数*/
voidwelcome();/*声明我的个人信息函数*/
voidtype();/*声明输入函数*/
voidsee();/*声明打开并查看文件函数*/
structstudent/*定义学生信息的结构体类型*/
{
charnum[15];/*学号*/
charname[20];/*姓名*/
charsex[4];/*性别*/
chardno[20];/*宿舍号*/
intenglish;/*英语成绩*/
intmath;/*数学成绩*/
intchinese;/*语文成绩*/
floataver;/*平均成绩*/
floatsum;/*总成绩*/
}stu[100];
intn;/*声明一个全局变量*/
voidmain()/*主函数即用户的操作界面*/
{
intn;
for(;;)
{
printf("\n");
printf("\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("\t※※\n");
printf("\t※欢迎来到学生信息管理系统※\n");
printf("\t※※\n");
printf("\t※系部:
计科系专业:
计算机科学与技术※\n");
printf("\t※姓名:
学号:
2011091124※\n");
printf("\t※姓名:
学号:
2011091152※\n");
printf("\t※※\n");
printf("\t※指导老师:
马瑜※\n");
printf("\t※※\n");
printf("\t※主菜单※\n");
printf("\t※※\n");
printf("\t※▲1.录入信息▲※\n");/*键入学生的信息*/
printf("\t※▲2.查看信息▲※\n");/*查看录入的学生信息*/
printf("\t※▲3.姓名查找▲※\n");/*按姓名查看学生的信息*/
printf("\t※▲4.学号查找▲※\n");/*按学号查看学生的信息*/
printf("\t※▲5.成绩排序▲※\n");/*排序*/
printf("\t※▲6.删除信息▲※\n");/*删除学生信息*/
printf("\t※▲7.保存信息▲※\n");/*保存*/
printf("\t※▲8.打开文件▲※\n");/*打开文件*/
printf("\t※▲9.退出系统▲※\n");/*退出*/
printf("\t※※\n");
printf("\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n");
printf("请输入选择项(1-9):
");
scanf("%d",&n);
printf("\n\n\n\n");
if(n>0&&n<10)
{
switch(n)
{
case1:
type();break;/*调用键入学生信息函数*/
case2:
look();break;/*调用查看函数*/
case3:
search_name();break;/*调用姓名查看函数*/
case4:
search_number();break;/*调用学号查看函数*/
case5:
order();break;/*调用排序函数*/
case6:
del();break;/*调用删除函数*/
case7:
save();break;/*调用保存函数*/
case8:
see();break;
case9:
printf("\t\t※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("\t\t※※\n");
printf("\t\t※谢谢使用!
※\n");
printf("\t\t※再见!
※\n");
printf("\t\t※※\n");
printf("\t\t※※※※※※※※※※※※※※※※※※※※※※※※\n");
exit(0);
}
}
else
{system("CLS");
printf("\t\t※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("\t\t※※\n");
printf("\t\t※输入错误!
※\n");
printf("\t\t※请退出!
※\n");
printf("\t\t※※\n");
printf("\t\t※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("\n\n\n\t\t\t按任意键返回菜单");
getch();
}
}
}
voidtype()/*定义录入学生信息函数*/
{
system("CLS");
inti;/*定义局部变量*/
printf("\t\t输出你想输入的学生信息个数:
");
scanf("%d",&n);
for(i=0;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("%s",&stu[i].dno);/*输入宿舍*/
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].chinese);/*输入语文成绩*/
stu[i].aver=((float)stu[i].english+(float)stu[i].math+(float)stu[i].chinese)/3;/*计算平均成绩*/
stu[i].sum=(float)stu[i].english+(float)stu[i].math+(float)stu[i].chinese;/*计算总成绩*/
printf("\t\t\t平均成绩=%4.1f\n",stu[i].aver);/*输出平均成绩*/
printf("\t\t\t总成绩=%4.1f\n",stu[i].sum);/*输出总成绩*/
}
printf("\n\t\t\t按任意键返回菜单!
!
");
getch();
save();
}
voidsave()/*建立保存文件函数*/
{
system("CLS");
FILE*fp;/*定义文件型指针*/
inti;
if((fp=fopen("student.txt","wb"))==NULL)/*打开输出文件*/
{
printf("不能打开文件!
\n");
return;/*终止程序*/
}
for(i=0;iif(fwrite(&stu[i],sizeof(structstudent),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();
}
voidlook()/*定义查看函数*/
{
system("CLS");
inti;
//n=openl();/*调用openl函数*/
printf("学号\t姓名\t性别\t宿舍\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;i{
printf("%s\t%s\t%s\t%s\t%d\t%d\t%d\t%.1f\t\t%.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].dno,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
printf("\n\n\n\t\t\t按任意键返回菜单");
getch();
}
voidsearch_name()/*按姓名查看函数*/
{
system("CLS");
inti;
charname[20];/*声明字符数组*/
printf("\t\t\t请输入学生姓名:
\n");
scanf("%s",name);
printf("学号\t姓名\t性别\t宿舍\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;iif(strcmp(stu[i].name,name)==0)/*将输入的姓名与结构体中的姓名进行比较*/
{
printf("%s\t%s\t%s\t%s\t%d\t%d\t%d\t%.1f\t\t%.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].dno,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
printf("\n\n\n\t\t\t按任意键返回菜单");
}
getch();
}
voidsearch_number()/*定义按学号查看函数*/
{
system("CLS");
inti;
charnumber[15];/*声明字符数组*/
printf("\t\t\t请输入学号:
\n");
scanf("%s",number);
printf("学号\t姓名\t性别\t宿舍\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;iif(strcmp(stu[i].num,number)==0)/*将输入的学号与结构体中的学号进行比较*/
printf("%s\t%s\t%s\t%s\t%d\t%d\t%d\t%.1f\t\t%.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].dno,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
printf("\n\n\n\t\t\t按任意键返回菜单");
getch();
}
voidorder()/*定义排序函数*/
{
system("CLS");
inti,j;
chara;
structstudenttemp;/*声明结构体变量*/
printf("学号\t姓名\t性别\t宿舍\t英语\t数学\t语文\t平均成绩\t总成绩\n");
for(i=0;i{
for(j=i+1;jif(stu[i].sum{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
printf("%s\t%s\t%s\t%s\t%d\t%d\t%d\t%.1f\t\t%.1f\n",stu[i].num,stu[i].name,
stu[i].sex,stu[i].dno,stu[i].english,stu[i].math,stu[i].chinese,stu[i].aver,stu[i].sum);
}
getch();
printf("是否保存?
(yorn)");
getchar();
scanf("%c",&a);
if(a=='y')/*是否保存排序后的文件*/
save();
else
printf("退出");
getch();
}
v