学生成绩管理系统C++程序设计课程设计.docx
《学生成绩管理系统C++程序设计课程设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C++程序设计课程设计.docx(29页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统C++程序设计课程设计
1学生成绩管理系统的内容概述1
1.1设计内容1
1.2设计的要求1
1.3开发环境要求1
1.4技术文档要求1
2学生成绩管理系统的设计目标要求2
2.1各项要求1
3设计过程论述3
3.1系统总体框架3
4学生成绩的各种处理4
4.1学生成绩信息的录入过程4
4.2学生成绩信息的显示过程4
4.3学生成绩信息的插入过程5
4.4学生成绩信息的查找过程6
4.5学生成绩信息的修改过程6
4.6学生成绩信息的删除过程7
4.7学生成绩信息的保存过程7
4.8从文件中读入数据8
4.9结束处理8
5系统测试10
5.1测试目的10
5.2测试的方法10
5.3测试内容10
5.4测试结果10
设计体会及今后的改进意见11
参考文献12
附录13
1、学生成绩管理系统的内容概述
1.1、设计内容
制作学生成绩管理系统,实现数据录入、数据删除、数据浏览以及数据查询等功能。
1.2、设计的要求
包括系统设计要求,开发环境要求,技术文档要求三部分。
1.3、开发环境要求
软件环境:
windows98/windowsXP/windows2000,VisualC++
硬件环境:
计算机(Pen4CPU,256MRAM,60G以上硬盘,输入输出设备)
1.4、技术文档要求
按照软件工程技术文档编写要求进行。
要求流程图绘制规范,模块功能描述清晰,
数据字典齐全。
2、学生成绩管理系统的设计目标要求
2.1、各项要求
(a)学生成绩管理系统中不同使用单位(用户)的学生人数事先无法确定。
(b)该学生成绩管理系统要求有学生成绩录入,查询,修改,删除,保存文件。
(c)系统使用文字菜单,用户通过选择菜单项的编号,实现系统对子模块的调用。
也可用windows界面下的菜单栏、弹出式菜单、下拉菜单。
(d)每个班级每门课程的成绩可以从学生的成绩总表提取出子表并存储成一个文本文件。
该文本文件名由班级号和课程名拼音字符串构成。
输入班级号和课程名字符串后自动生成文件名。
如1班,语文,则文件名为:
c1yuwen.txt.
(e)每个学生学习的课程有语文,英语,数学,物理,化学,生物。
学生的成绩总表结构约定为(学号,姓名,课程名,平时成绩,期末成绩,总评成绩).总评成绩由程序自动计算,总评成绩=平时成绩﹡30%+期末成绩﹡70%。
(f)学号是一个9位整数构成的字符串,学号的编码规则:
入学年份+在读年级+在读班级+班内编号;入学年份用4位整数构成字符串,如2003年入学则表示为:
”2003”;在读年级用1位整数构成字符串,如正在1年级读书则表示为:
”1”;在读班级用2位整数构成字符串,如正在1班读书则表示为:
”01”;班内编号用2位整数构成字符串,如在班内编号为23号则表示为:
”23”
3、设计过程论述
3.1、系统总体框
系统总框架如图3-1所示:
图3-1框架图
4、学生成绩的各种处理
4.1、学生成绩信息的录入过程
学生成绩的录入如图4-1所示:
图4-1成绩录入
4.2、学生成绩信息的显示过程
学生成绩信息的显示如图4-2所示:
图4-2学生成绩的显示
4.3、学生成绩信息的插入过程
学生成绩信息的插入如图4-3所示:
图4-3成绩信息的插入
4.4、学生成绩信息的查找过程
学生成绩信息的查找如图4-4所示:
图4-4学生成绩信息查找
4.5、学生成绩信息的修改过程
学生成绩信息的修改如图4-5所示:
图4-5成绩信息修改
4.6、学生成绩信息的删除过程
学生成绩信息的删除如图4-6所示:
图4-6成绩信息删除
4.7、学生成绩信息的保存过程
学生成绩信息的保存如同4-7所示:
图4-7成绩信息的保存
学生成绩信息的txt生成文件如同4-8所示:
图4-8信息112班成绩txt文件
4.8、从文件中读入数据
从文件中读入数据如图4-8所示:
图4-8数据读入
4.9、结束处理
结束处理如图4-9所示:
图4-9结束处理
5、系统测试
5.1、测试目的
测试的目的是避免系统出现的一些错误,如:
程序中的错误,提前找出这些问题,这可以使该系统在应用实际中时尽可能避免一些不必要的麻烦。
5.2、测试的方法
利用黑盒子法设计基本的测试方案
5.3、测试内容
学生成绩信息的输入、显示、插入、查找、删除、修改、保存等过程
5.4、测试结果
经过测试发现在各个操作中不存在这些系统上出现的错误现象,这说明该程序满足了系统要求达到的各类要求。
设计总结及体会
这次C++课程设计的课题老师在很早很早以前已经告诉我们了,经常用它来点小幽默,我以为这是很简单的一件事,但是当我真正做的时候才发现这太难了,我在仔细阅读了课本上的相关内容、和有关文件后,我感觉比刚刚拿到课题时简单多了,在收获的同时我也发现自己的一些不足之处,比如:
考虑问题不系统、不周全,编写程序缺少层次感、最主要的是思维比较混乱。
做程序员是需要耐心的,编写程序更是需要静下心来,我们在今后的编程学习中更要注重算法的设计,而不是拿到编程要求后就开始编写代码,这样会浪费我们更多的时间,今后应该首先在纸上将算法流程写下来,然后再写代码,进行代码的运行调试,以后不仅要学会编程序,而且要试着找到其间的乐趣,找到编程美,这样才能使我们在以后的工作学习中能够更加快乐。
参考文献
[1]谭浩强.C++程序设计[M].北京:
清华大学出版社.2004
[2]钱能.C++程序设计[M].北京:
清华大学出版社.2009
[3]谭浩强.C程序设计[M].北京:
清华大学出版社.2005
附录
#include
#include
#include
#include
#include
#include
#include
usingnamespacestd;
typedefclass
{public:
charnum[9];
charcla[10];
charname[20];
charyuwen[10];
charshuxue[20];
charyingyu[10];
charwuli[20];
charhuaxue[20];
charshengwu[20];
charpsyuwen[10];
charpsshuxue[20];
charpsyingyu[10];
charpswuli[20];
charpshuaxue[20];
charpsshengwu[20];
charzpyuwen[10];
charzpshuxue[20];
charzpyingyu[10];
charzpwuli[20];
charzphuaxue[20];
charzpshengwu[20];
}Student;
Studentstu[80];
intmenu()
{
charc;
for(;c<'0'||c>'8';)
{
system("cls");
cout<<"欢迎使用本学生成绩管理系统!
!
"<cout<<"编程人员:
mm";
cout<cout<<"******************************学生成绩管理系统******************************"<cout<cout<cout<cout<cout<cout<cout<cout<cout<cout<cout<cout<<"请选择(0-8):
";
c=getchar();
}
return(c-'0');
}
intInput(Studentstud[],intn)//输入数据。
{
inti=0;
charsign,x[10];
for(;sign!
='n'&&sign!
='N';)
{cout<";
cin>>stud[n+i].cla;
cout<";
cin>>stud[n+i].num;
cout<";
cin>>stud[n+i].name;
cout<";
cin>>stud[n+i].yuwen;
cout<";
cin>>stud[n+i].shuxue;
cout<";
cin>>stud[n+i].wuli;
cout<";
cin>>stud[n+i].yingyu;
cout<";
cin>>stud[n+i].huaxue;
cout<";
cin>>stud[n+i].shengwu;
cout<";
cin>>stud[n+i].psyuwen;
cout<";
cin>>stud[n+i].psshuxue;
cout<";
cin>>stud[n+i].pswuli;
cout<";
cin>>stud[n+i].psyingyu;
cout<";
cin>>stud[n+i].pshuaxue;
cout<";
cin>>stud[n+i].psshengwu;
gets(x);
cout<cout<<"还有要输入的信息吗?
(y/n)";
cin>>&sign;
i++;
}
return(n+i);
}
voidDisplay(Studentstud[],intn)//输出数据。
{
inti;
cout<cout<cout<cout<for(i=1;i{
printf("\t\t%-9s%-9s%-9s%-9s%-9s%-9s%-9s%-9s%-9s%-9s%-9s%-9s%-9s%-9s%-9s\n",stud[i-1].cla,stud[i-1].num,stud[i-1].name,stud[i-1].yuwen,stud[i-1].shuxue,stud[i-1].wuli,stud[i-1].yingyu,stud[i-1].huaxue,stud[i-1].shengwu,stud[i-1].psyuwen,stud[i-1].psshuxue,stud[i-1].pswuli,stud[i-1].psyingyu,stud[i-1].pshuaxue,stud[i-1].psshengwu);
if(i>1&&i%10==0)
{
cout<cout<system("pause");
cout<}
}
cout<system("pause");
}
voidSort(Studentstud[],intn)//按名字排序。
{
inti,j;
chart[20];
for(i=0;ifor(j=0;jif(strcmp(stud[j].num,stud[j+1].num)>0)
{
strcpy(t,stud[j+1].cla);
strcpy(stud[j+1].cla,stud[j].cla);
strcpy(stud[j].cla,t);
strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
strcpy(t,stud[j+1].yuwen);
strcpy(stud[j+1].name,stud[j].yuwen);
strcpy(stud[j].yuwen,t);
strcpy(t,stud[j+1].shuxue);
strcpy(stud[j+1].name,stud[j].shuxue);
strcpy(stud[j].shuxue,t);
strcpy(t,stud[j+1].wuli);
strcpy(stud[j+1].name,stud[j].wuli);
strcpy(stud[j].wuli,t);
strcpy(t,stud[j+1].yingyu);
strcpy(stud[j+1].name,stud[j].yingyu);
strcpy(stud[j].yingyu,t);
strcpy(t,stud[j+1].huaxue);
strcpy(stud[j+1].name,stud[j].huaxue);
strcpy(stud[j].huaxue,t);
strcpy(t,stud[j+1].shengwu);
strcpy(stud[j+1].name,stud[j].shengwu);
strcpy(stud[j].shengwu,t);
strcpy(t,stud[j+1].psyuwen);
strcpy(stud[j+1].name,stud[j].psyuwen);
strcpy(stud[j].psyuwen,t);
strcpy(t,stud[j+1].psshuxue);
strcpy(stud[j+1].name,stud[j].psshuxue);
strcpy(stud[j].psshuxue,t);
strcpy(t,stud[j+1].pswuli);
strcpy(stud[j+1].name,stud[j].pswuli);
strcpy(stud[j].pswuli,t);
strcpy(t,stud[j+1].psyingyu);
strcpy(stud[j+1].name,stud[j].psyingyu);
strcpy(stud[j].psyingyu,t);
strcpy(t,stud[j+1].pshuaxue);
strcpy(stud[j+1].name,stud[j].pshuaxue);
strcpy(stud[j].pshuaxue,t);
strcpy(t,stud[j+1].psshengwu);
strcpy(stud[j+1].name,stud[j].psshengwu);
strcpy(stud[j].psshengwu,t);
}
cout<"<}
intInsert(Studentstud[],intn)//插入一条学生信息。
{
charx[10];
cout<";
cin>>stud[n].cla;
cout<";
cin>>stud[n].num;
cout<";
cin>>stud[n].name;
cout<";
cin>>stud[n].yuwen;
cout<";
cin>>stud[n].shuxue;
cout<";
cin>>stud[n].wuli;
cout<";
cin>>stud[n].yingyu;
cout<";
cin>>stud[n].huaxue;
cout<";
cin>>stud[n].shengwu;
cout<";
cin>>stud[n].psyuwen;
cout<";
cin>>stud[n].psshuxue;
cout<";
cin>>stud[n].pswuli;
cout<";
cin>>stud[n].psyingyu;
cout<";
cin>>stud[n].pshuaxue;
cout<";
cin>>stud[n].psshengwu;
gets(x);
n++;
cout<"<return(n);
}
intDelete(Studentstud[],intn)//按名字查找信息,删除信息。
{
chars[20];
inti=0,j;
cin>>s;
while(strcmp(stud[i].name,s)!
=0&&iif(i==n)
{
printf("\t\t\t没有发现该学生资料!
\n");/*返回失败信息*/
return(n);
}
for(j=i;j{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
strcpy(stud[j].cla,stud[j+1].cla);
strcpy(stud[j].yuwen,stud[j+1].yuwen);
strcpy(stud[j].shuxue,stud[j+1].shuxue);
strcpy(stud[j].wuli,stud[j+1].wuli);
strcpy(stud[j].yingyu,stud[j+1].yingyu);
strcpy(stud[j].huaxue,stud[j+1].huaxue);
strcpy(stud[j].shengwu,stud[j+1].shengwu);
strcpy(stud[j].psyuwen,stud[j+1].psyuwen);
strcpy(stud[j].psshuxue,stud[j+1].psshuxue);
strcpy(stud[j].pswuli,stud[j+1].pswuli);
strcpy(stud[j].psyingyu,stud[j+1].psyingyu);
strcpy(stud[j].pshuaxue,stud[j+1].pshuaxue);
strcpy(stud[j].psshengwu,stud[j+1].psshengwu);
}
cout<"<return(n-1);
}
voidQuery(Studentstud[],intn)//按名字查找信息
{
chars[20];
inti=0;
cout<";
cin>>s;
while(strcmp(stud[i].name,s)!
=0&&ii++;/*查找判断*/
if(i==n)
{
printf("\t\t\t没有发现该学生资料!
\n");/*输入失败信息*/
return;
}
cout<"<cout<"<cout<"<cout<"<cout<"<