学生成绩管理系统分析.docx
- 文档编号:8041868
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:27
- 大小:1.08MB
学生成绩管理系统分析.docx
《学生成绩管理系统分析.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统分析.docx(27页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统分析
1系统概述
1.1功能简介
本软件是一个简单的学校学生信息管理系统,软件窗口为DOS页面。
学生信息管理系统的功能主要是实现学校学生的信息化管理。
通过学生信息管理系统,教学管理人员可以实现对学生信息的增加、删除、修改与查询等操作。
本系统最大的优点就是操作简便快捷等。
1.2设计思路
将学生信息定义为一个student类,在类中包含私有数据成员charstuNo[10];//学号
charname[20];//姓名
intage;//年龄
floatMath;//数学
floatEnglish;//英语
floatPhysics;//物理
floattotal;//总成绩
然后定义了一个main()菜单函数,使功能菜单显示在运行窗口以提示用户如何进行操作。
主函数是一个程序必不可少的,在主函数中,使用一个switch语句来选择调用主菜单中的各个功能函数。
1.3结构图
2系统功能的分析与设计
2.1初始录入功能
此函数实现的功能主要是,对学生信息的初始化录入功能,在初始时,文件中没有任何数据,可以通过此函数输入任意个学生的信息,输入信息之前需先输入学生的个数
在此函数中使用文件处理的方式,先建立一个文件输出流对象,以写的方式打开stu.txt文件,使输入的学生信息都写入文件。
2.2添加函数
此函数实现的功能主要是,添加学生的信息,调用一次这个函数可以选择添若干个学生的信息。
在此函数中也使用文件处理的方式,但使用的是以追加的方式打开文件,使输入的学生信息写在文件里原有信息的后面。
2.3删除函数
此函数实现的功能主要是,删除一个学生的信息。
在此函数中,先以读的方式打开文件,读出文件里的信息在显示在屏幕上,用户再根据提示信息输入想要删除第几个人的信息,关闭文件。
再以写的方式打开文件,以一个if条件语句控制,再重新将学生信息写入文件(除了打算删除的那个学生的信息),由于是以写的方式打开的文件,所以文件里原有的输入就都没有了,存入的新的数据。
2.4修改函数
此函数实现的功能主要是,修改一个学生的信息。
此函数的设计方法与删除函数的设计思想相类似,应用的思想都是将学生信息重新写入文件的方法,将原有数据覆盖。
2.5查询函数
在查询功能中,可以按多条件查询,本系统分为两个查询条件,即按学号查询与按姓名查询。
使用if语句来选择查询条件。
2.5.1按学号查询
根据提示信息输入学号后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的学号与输入的学号相等,则输出该学生的信息,由于学生的学号是唯一固定的,所以并使用break语句跳出循环。
当无查询结果时,会输出一条提示信息“无此人信息!
”。
2.5.2按姓名查询
根据提示信息输入姓名后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的姓名与输入的姓名一样,则输出该学生的信息,由于学生的姓名有可能重复出现,所以不能使用break语句跳出循环,应该从第一个学生开始检索直到最后一名学生。
当无查询结果时,会输出一条提示信息“无此人信息!
”。
2.6显示函数
此函数实现的功能主要是,显示所有学生的信息。
先是从文件中读取学生信息,然后在输出到显示窗口中。
用一个for循环语句,来把所有学生的信息都输出。
2.7退出系统
当输入“0”时,就能退出系统,这是通过while语句来控制实现的。
3 调试及运行结果
3.1主菜单
3.2创建或录入学生信息
3.3修改学生信息
3.4删除学生信息
3.5浏览学生信息
3.6查找学生信息
3.7登记成绩
3.8修改成绩
3.9查看成绩单
3.10查看某个学生成绩
4 总结
4.1遇到的问题及解决方法
首先,是对文件的处理不够熟练,通过看书与搜集一些资料解决了这个问题;其次,是在编写程序的过程中出现了一些语法错误,后通过调试逐一解决。
4.2 收获与体会
此次c++面向对象课程设计,在指导教师的精心教导下,我们学会了如何用C++编写一个简单的应用程序。
首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。
程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。
根据C++课程所学的概念、理论与方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解与掌握。
理论联系实际,加深与巩固所学的理论知识,提高实践能力与计算机的综合运用能力。
我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
参考文献
[1] 元芳,王亮编著《c++程序设计》,北京,清华大学出版社,2013年。
附录
#include"iostream"
#include"iomanip"//它是I/O流控制头文
#include"stdio.h"
#include"stdlib.h"//包含了C语言的一些函数
#include"string.h"
#defineSPACE""
usingnamespacestd;
structstudentRecord
{
charstuNo[20];//学号
charname[20];//姓名
intage;//年龄
floatMath;//数学
floatEnglish;//英语
floatPhysics;//物理
floattotal;//总成绩
}*p;
voidshujucharu();//数据插入
voidshujuxiugai();//数据修改
voidshujushanchu();//数据删除
voidshujuliulan();//数据浏览(按学号排序)
voidchengjidengji();//学生成绩登记
voidchengjixiugai();//学生成绩修改
voidviewTable();//学生成绩查看(按成绩排名)
voidinquiry();//成绩查询
voidwrite();//文件写入
voidread();//文件读取
intline();//文件中记录学生的数目
inti,n;
booly;
voidmain()
{
inta,b;
cout< cout<<"请选择功能模块: "< cout< cout<<"==================================<菜单>=============================="< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout<<"-----------------------------------------------------------------------"< cout<<"请输入您的选择: "; cin>>a; system("cls"); if(a==1||a==0)y=1; if(y==0){cout<<"请先录入学生信息,才能进行下面的操作! "< while(a) { switch(a) { case1: shujucharu();break; case2: shujuxiugai();break; case3: shujushanchu();break; case4: { cout<<"==============================<浏览学生信息>=============================="< cout< cout< cout< cout< cout<<"---------------------------------------------------------------------------"< cin>>b;system("cls"); while(b! =3) { switch(b) { case1: shujuliulan();break; case2: viewTable();break; default: cout<<"请输入1-3之内的数! "< } cout< cout<<"==============================<浏览学生信息>=============================="< cout< cout< cout< cout< cout<<"---------------------------------------------------------------------------"< cin>>b;system("cls"); } }; break; case5: inquiry();break; case6: chengjidengji();break; case7: chengjixiugai();break; case8: { cout<<"==============================<查看成绩单>=============================="< cout< cout< cout< cout< cout<<"---------------------------------------------------------------------------"< cin>>b;system("cls"); while(b! =3) { switch(b) { case1: shujuliulan();break; case2: viewTable();break; default: cout<<"请输入1-3之内的数! "< } cout< cout<<"==============================<查看成绩单>=============================="< cout< cout< cout< cout< cout<<"---------------------------------------------------------------------------"< cin>>b;system("cls"); } };break; case9: inquiry();break; default: cout<<"输入无效,请输入0-9之内的数! "< } cout< cout<<"==================================<菜单>=============================="< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout< cout<<"-----------------------------------------------------------------------"< cout<<"请输入您的选择: "; cin>>a;system("cls"); } } //1.文件写入 voidwrite() {FILE*fp; if((fp=fopen("stu.txt","w"))! =NULL) {for(i=0;i fprintf(fp,"%s%s%d%f%f%f%f\n",p[i].stuNo,p[i].name,p[i].age,p[i].Math,p[i].English,p[i].Physics,p[i].total); fclose(fp); } else printf("文件打开或创建发生错误。 \n"); } //2.文件读取 voidread() {FILE*fp; if((fp=fopen("stu.txt","r"))! =NULL) { n=line(); p=newstructstudentRecord[n]; for(i=0;i fscanf(fp,"%s%s%d%f%f%f%f",p[i].stuNo,p[i].name,&p[i].age,&p[i].Math,&p[i].English,&p[i].Physics,&p[i].total); fclose(fp); } else cout<<"文件打开或创建发生错误! "< } //3.文件中记录学生的数目 intline() {charc; inth=0; FILE*fp; if((fp=fopen("stu.txt","r"))! =NULL) {while((c=fgetc(fp))! =EOF) { if(c=='\n') h++; } fclose(fp); } else cout<<"文件打开或创建发生错误\n"; returnh; } //4.成绩查询 voidinquiry() {read(); charb[20]; intm; cout<<"请选择查询方式"< cout< cout< cin>>m; if(m==1||m==2) { if(m==1) { cout<<"请输入学号: "; cin>>b;system("cls"); for(i=0;i { if(strcmp(p[i].stuNo,b)==0) {cout< "< <<"姓名: "< <<"年龄: "< <<"数学: "< <<"英语: "< <<"物理: "< <<"总分: "< break; } } } if(m==2) { cout< "; cin>>b;system("cls"); for(i=0;i { if(strcmp(p[i].name,b)==0) {cout< "< <<"姓名: "< <<"年龄: "< <<"数学: "< <<"英语: "< <<"物理: "< <<"总分: "< } } } } else cout<<"输入错误,请输入1或2"< } //5.数据插入 voidshujucharu() {FILE*fp; if((fp=fopen("stu.txt","a+"))! =NULL)//以追加方式打开stu.txt文档 {intn; cout<<"请输入需要插入的学生数目: "; cin>>n; p=newstructstudentRecord[n];//建立新节点 if(n==0) cout< for(inti=0;i {cout<<"请输入插入的第"< ";//输入 cin>>p[i].stuNo; cout< "; cin>>p[i].name; cout< "; cin>>p[i].age; p[i].Math=0; p[i].English=0; p[i].Physics=0; p[i].total=0; } for(i=0;i fprintf(fp,"%s%s%d%f%f%f%f\n",p[i].stuNo,p[i].name,p[i].age, p[i].Math,p[i].English,p[i].Physics,p[i].total); fclose(fp); delete[]p;//程序用delete[]删除数组并释放内存 } else printf("文件打开或创建时发生错误.\n"); } //6.数据修改 voidshujuxiugai() {read(); shujuliulan(); charb[20]; cout< ";//按学号查找进行修改 cin>>b; for(i=0;i {if(strcmp(p[i].stuNo,b)==0)//判断字符串b与字符串p[i].stuNo是否相等 {cout<<"该学生原始信息如下: "< cout< "< "< "< <<"\t"<<"物理成绩: "< "< cout< "< cout< "; cin>>p[i].stuNo; cout< "; cin>>p[i].name; cout< "; cin>>p[i].age; cout<<"修改成功! "< break; } } if(i>=n&&(strcmp(p[i].stuNo,b)! =0)) {cout< "< cout<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩 管理 系统分析