c学生成绩管理系统分析Word格式.docx
《c学生成绩管理系统分析Word格式.docx》由会员分享,可在线阅读,更多相关《c学生成绩管理系统分析Word格式.docx(29页珍藏版)》请在冰豆网上搜索。
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"
iomanip"
//它是I/O流控制头文
stdio.h"
stdlib.h"
//包含了C语言的一些函数
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<
<
SPACE<
"
------欢迎登陆学生成绩管理系统------"
endl<
endl;
请选择功能模块:
==================================<
菜单>
=============================="
cout<
1创建或录入学生信息"
cout<
2修改学生信息"
3删除学生信息"
4浏览学生信息"
5查找学生信息"
6登记成绩"
7修改成绩"
8查看成绩单"
9查看某个学生成绩"
0退出"
-----------------------------------------------------------------------"
请输入您的选择:
;
cin>
>
a;
system("
cls"
);
if(a==1||a==0)y=1;
if(y==0){cout<
请先录入学生信息,才能进行下面的操作!
a=1;
y=1;
}
while(a)
{
switch(a)
{
case1:
shujucharu();
break;
case2:
shujuxiugai();
case3:
shujushanchu();
case4:
{
==============================<
浏览学生信息>
1、按学号排序浏览"
2、按成绩排序浏览"
3、退出"
---------------------------------------------------------------------------"
cin>
b;
system("
while(b!
=3)
{
switch(b)
{
case1:
shujuliulan();
case2:
viewTable();
default:
请输入1-3之内的数!
}
cout<
按任意数字键返回浏览界面..."
intk;
cin>
k;
cin>
}
};
break;
case5:
inquiry();
case6:
chengjidengji();
case7:
chengjixiugai();
case8:
查看成绩单>
break;
case9:
default:
输入无效,请输入0-9之内的数!
}
按任意数字键返回菜单界面..."
cin>
}
//1.文件写入
voidwrite()
{FILE*fp;
if((fp=fopen("
stu.txt"
"
w"
))!
=NULL)
{for(i=0;
i<
n;
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()
r"
=NULL)
n=line();
p=newstructstudentRecord[n];
for(i=0;
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);
文件打开或创建发生错误!
//3.文件中记录学生的数目
intline()
{charc;
inth=0;
FILE*fp;
{while((c=fgetc(fp))!
=EOF)
if(c=='
\n'
)
h++;
文件打开或创建发生错误\n"
returnh;
//4.成绩查询
voidinquiry()
{read();
charb[20];
intm;
请选择查询方式"
1.学号查询"
2.姓名查询"
m;
if(m==1||m==2)
if(m==1)
cout<
请输入学号:
cin>
for(i=0;
{
if(strcmp(p[i].stuNo,b)==0)
{cout<
学号:
p[i].stuNo<
<
姓名:
p[i].name<
年龄:
p[i].age<
数学:
p[i].Math<
英语:
p[i].English<
物理:
p[i].Physics<
总分:
p[i].total<
break;
}
}
if(m==2)
请输入姓名进行查询:
{
if(strcmp(p[i].name,b)==0)
{cout<
<
输入错误,请输入1或2"
//5.数据插入
voidshujucharu()
a+"
=NULL)//以追加方式打开stu.txt文档
{intn;
请输入需要插入的学生数目:
//建立新节点
if(n==0)
没有进行数据插入"
for(inti=0;
{cout<
请输入插入的第"
i+1<
个学生的学号:
//输入
p[i].stuNo;
p[i].name;
p[i].age;
p[i].Math=0;
p[i].English=0;
p[i].Physics=0;
p[i].total=0;
i++)//输出
p[i].stuNo,p[i].name,p[i].age,
p[i].Math,p[i].English,p[i].Physics,p[i].total);
delete[]p;
//程序用delete[]删除数组并释放内存
文件打开或创建时发生错误.\n"
//6.数据修改
voidshujuxiugai()
请输入需要修改信息学生的学号:
//按学号查找进行修改
for(i=0;
{if(strcmp(p[i].stuNo,b)==0)//判断字符串b和字符串p[i].stuNo是否相等
该学生原始信息如下:
\t"
姓名:
数学成绩:
英语成绩:
p[i].English
<
物理成绩:
总分:
请重新输入该学生的信息:
修改