c学生成绩管理系统分析.docx

上传人:b****4 文档编号:3930402 上传时间:2022-11-26 格式:DOCX 页数:27 大小:1.08MB
下载 相关 举报
c学生成绩管理系统分析.docx_第1页
第1页 / 共27页
c学生成绩管理系统分析.docx_第2页
第2页 / 共27页
c学生成绩管理系统分析.docx_第3页
第3页 / 共27页
c学生成绩管理系统分析.docx_第4页
第4页 / 共27页
c学生成绩管理系统分析.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

c学生成绩管理系统分析.docx

《c学生成绩管理系统分析.docx》由会员分享,可在线阅读,更多相关《c学生成绩管理系统分析.docx(27页珍藏版)》请在冰豆网上搜索。

c学生成绩管理系统分析.docx

c学生成绩管理系统分析

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<>k;system("cls");

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<>k;system("cls");

cout<<"==============================<查看成绩单>=============================="<

cout<

cout<

cout<

cout<

cout<<"---------------------------------------------------------------------------"<

cin>>b;system("cls");

}

};break;

case9:

inquiry();break;

default:

cout<<"输入无效,请输入0-9之内的数!

"<

}

cout<>k;system("cls");

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].

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1