C++课程设计报告--学籍管理系统

C++课程设计报告--学籍管理系统本文简介:课程设计报告题目学籍管理系统课程名称面向对象程序设计课程设计院部名称软件学院专业数字媒体技术班级1222202学生姓名张吉发学号201220220203课程设计地点软件楼课程设计学时16指导教师邹国华一需求分析随着计算机的发展,越来越多的学校有自己的学籍管理系统。这样更方便数据的长期保存,更适用于数
C++课程设计报告--学籍管理系统本文内容:
课程设计报告
题
目
学籍管理系统
课
程
名
称
面向对象程序设计课程设计
院
部
名
称
软件学院
专
业
数字媒体技术
班
级
1222202
学
生
姓
名
张吉发
学
号
201220220203
课程设计地点
软件楼
课程设计学时
16
指
导
教
师
邹国华
一
需求分析
随着计算机的发展,越来越多的学校有自己的学籍管理系统。这样更方便数据的长期保存,更适用于数据的集中处理。通过这个简单的学籍管理系统,可以添加新成员的基本信息,通过其姓名,性别,科目,分数等信息查询这个人的基本信息。可以很方便的进行数据修改,以及数据删除。本系统主要是通过二进制的文件读取,进行输入,输出,以及修改,删除等基本功能。用结构体实行学生的基本信息。
结构体student
数据成员:
1.
姓名
name
2.
学号
num
3.
语文
Chinese
4.
数学
math
.二
概要设计
struct
student
{
char
name[60];
char
num[20];
int
score;
char
sex[30];
};
这个结构体设计的很简单,里面有四个数据成员。包括了学生的基本信息,姓名name用多字符来保存,学好num用多字符类型,分数score用整数定义,性别用多字符类定义。
为了可以对数据进行操作,处理。我们这里用了很多函数。
int
dq(struct
student
st[]);
void
xianshi();//显示主界面
void
bc(struct
student
st[]);//保存学生信息
void
add();
//添加学生的信息
void
select();//查看学生信息
void
chazhao();//查找
void
xhcz();//学号查找
void
xmcz();//姓名查找
void
del();//删除,里面提供了两个函数实现按学号void
xhsc();或是姓名void
xmsc();查找来删除
void
xmsc();//姓名删除
void
xhsc();//学号删除
void
tj();//统计分数,求出总分和平均分
void
px();//排序
void
bjg();
void
bca();//打印出文件的保存字样
void
fh();//文件显示提醒
struct
student
st[300];
//这个数组用来保存所有的学生信息
和文件里面的一致
int
Number=0;
//记录总的学生人数
也就是数组/文件里面的学生人数
主函数的流程图:
创建一个文件夹,用结构体student输入信息
显示菜单,把系统功能界面给用户
用户输入序号,根据输入进行操作
输入0,结束
第一次没有文件,判断是否创建文件?
开始
.三
详细的设计。
主函数void
main()
这里默认的查查在F盘是否有一个文件,student。如果有就直接在原有的基础上添加或是修改信息。没有就建立一个文件在磁盘中
。编辑主页面的链接。
主要有八个功能:
1添加学生的信息
2查看学生的信息
3查找学生的信息
4删除学生的信息
5统计(总成绩和平均分)
6输出前N名学生的成绩
7保存文件
0退出系统
用switch语句来实现对应的链接
具体核心代码如下:
void
main()
{
int
choose=0;
FILEfp=NULL;
char
yesorno;
if((fp=fopen(“F://student.dat“,“rb“))==NULL)
{
cout提示:文件不存在,是否要创建一个?(y/n)\n“);
cin>>yesorno;
if(yesorno==
y
||yesorno==
Y
)
{
//这里仅为了建立文件,默认的地址在F://student.dat
fp=fopen(“F://student.dat“,“wb“);
fclose(fp);
}
else
exit(0);
}
else
{
Number=dq(st);
//要是文件只能够已经有数据
将数据初始化到数组中
}
system(“cls“);
while(true)
{
xianshi();
cout请选择:“;
scanf(“%d“,system(“cls“);
switch(choose)
{
case
0:
exit(0);
//退出
break;
case
1:
add();
fh();//增加学生成绩
break;
case
2:
select();
fh();//查看学生成绩
break;
case
3:
chazhao();
fh();//
查找
break;
case
4:
del();
fh();//删除
break;
case
5:
tj();
fh();//统计
break;
case
6:
px();
fh();//排序
break;
case
7:bca();
fh();//保存
break;
default:
break;
}
fflush(stdin);
getchar();
system(“cls“);
}
}
然后就要对对应的功能函数实现,里面有很多的代码。
首先是显示主界面:让操作的人一眼就能看到这系统有哪些功能
。我们根据界面的提示进入对应的数据操作
主界面的流程图:
2.查看学生成绩
3.查找学生成绩
1.添加学生成绩
学生管理系统
6.输出前N名学生
4.删除学生成绩
5.总分、平均分
void
xianshi()
{
cout>numberTemp;
for(i=0;i>temp.name;
cout>temp.num;
cout>temp.sex;
cout>temp.score;
st[Number++]=temp;
//将刚添加的写入到数组
bc(
//将刚添加的写入到文件
}
cout>n;
switch(n)
{
case
1:
xmcz();
break;
case
2:
xhcz();
break;
default:
cout>id;
system(“cls“);
printf(“\t姓名\t学号\t性别\t成绩\n“);
for
(i=0;i>name;
system(“cls“);
cout>n;
switch(n)
{
case
1:
xmsc();
break;
case
2:
xhsc();
break;
}
}
void
xmsc()//按姓名删除
{
FILEfp=NULL;
char
name[60];
int
i=0;
int
j=0;
printf(“请输入要删除的学生姓名:“);
scanf(“%s“,name);
for(i=0;i>id;
for(i=0;iNumber)
{
wantNUmber=Number;
}
cout提示:文件不存在,是否要创建一个?(y/n)\n“);
cin>>yesorno;
if(yesorno==
y
||yesorno==
Y
)
{
//这里仅为了建立文件,默认的地址在F://student.dat
fp=fopen(“F://student.dat“,“wb“);
fclose(fp);}
else
exit(0);
}
else
{Number=dq(st);
//要是文件只能够已经有数据
将数据初始化到数组中}
system(“cls“);
while(true)
{
xianshi();
cout请选择:“;
scanf(“%d“,system(“cls“);
switch(choose)
{case
0:
exit(0);
//退出
break;
case
1:
add();
fh();//增加学生成绩
break;
case
2:
select();
fh();//查看学生成绩
break;
case
3:
chazhao();
fh();//
查找
break;
case
4:
del();
fh();//删除
break;
case
5:
tj();
fh();//统计
break;
case
6:
px();
fh();//排序
break;
case
7:bca();
fh();//保存
break;
default:
break;}
fflush(stdin);
getchar();
system(“cls“);}}
部分测试数据如下:
主界面
添加数据
查看所有学生:
查找学生:选着1姓名查询
删除学生:比如按姓名来删除
再次查看所有学生
按6进行排序,查看前两名学生的成绩
按7保存信息。最后可以按0退出系统
测试完毕。
五
个人体会
通过这次课程设计,我更加深刻的知道了我们学的c++和我们的生活密切相连,所以更应该注意平时上课各种小知识点的积累。然后上机具体操作的情况又与笔试有很大的不同,因为通过键盘操作,更容易出错。所以我们平时在学习的时候,就应该做到边学边编,如果很久没有接触到c++的编译环境,就会出现不知道从何如手。
另外,程序的变化太大拉,它需要我们拓展课外知识,所以仅靠在课堂上的时间学好它是不现实的。有很多小的技巧,以及编程思想需要我们自己去领悟,这要求我们要有很好的自学能力。比如说这次变成如果没有掌握好文件输入,打开的话,就很难编出能实现功能的程序,还有需要到网上去查很多资料,不懂就要借鉴。
编程最重要的是思路清晰,条理清楚,只有思路比较清楚的条件下,进展才比较顺利。并且,在编译过程中遇到的错误也要耐心去修改,并且记住这相应的错误代码,以便以后遇到相同的情况,知道怎么修正。
