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



《C++课程设计报告--学籍管理系统》由会员分享,可在线阅读,更多相关《C++课程设计报告--学籍管理系统(17页珍藏版)》请在装配图网上搜索。
1、 课程设计报告 题 目 学籍管理系统 课 程 名 称 面向对象程序设计课程设计 院 部 名 称 软件学院 专 业 数字媒体技术 班 级 1222202 学 生 姓 名 张吉发 学 号 201220220203 课程设计地点 软件楼 课程设计学时 16 指 导 教 师
2、 邹国华 一 需求分析 随着计算机的发展,越来越多的学校有自己的学籍管理系统。这样更方便数据的长期保存,更适用于数据的集中处理。通过这个简单的学籍管理系统,可以添加新成员的基本信息,通过其姓名,性别,科目,分数等信息查询这个人的基本信息。可以很方便的进行数据修改,以及数据删除。本系统主要是通过二进制的文件读取,进行输入,输出,以及修改,删除等基本功能。用结构体实行学生的基本信息。 结构体student 数据成员: 1. 姓名 name 2. 学号 num 3. 语文 Chinese 4. 数学
3、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[]);//保存
4、学生信息 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();//打印出文件的保存
5、字样 void fh();//文件显示提醒 struct student st[300]; //这个数组用来保存所有的学生信息 和文件里面的一致 int Number=0; //记录总的学生人数 也就是数组/文件里面的学生人数 主函数的流程图: 创建一个文件夹,用结构体student输入信息 显示菜单,把系统功能界面给用户 用户输入序号,根据输入进行操作 输入0,结束 第一次没有文件,判断是否创建文件? 开始 .三 详细的设计。 主函数void main() 这里默认的查查在F盘是否有一个文件,student。如果有就直接在原有的基础上添加或是修改信息。没
6、有就建立一个文件在磁盘中 。编辑主页面的链接。 主要有八个功能: 1添加学生的信息 2查看学生的信息 3查找学生的信息 4删除学生的信息 5统计(总成绩和平均分) 6输出前N名学生的成绩 7保存文件 0退出系统 用switch语句来实现对应的链接 具体核心代码如下: void main() { int choose=0; FILE *fp=NULL; char yesorno; if((fp=fopen("F://student.dat","rb"))==NULL) { cout<<("\n=========>提示:文件不存在,是否要创建一个?(y/n
7、)\n"); cin>>yesorno; if(yesorno=='y'||yesorno=='Y') { //这里仅为了建立文件,默认的地址在 fp=fopen("F://student.dat","wb"); fclose(fp); } else exit(0); } else { Number=dq(st); //要是文件只能够已经有数据 将数据初始化到数组中 } system("cls"); while(true) { xianshi(); cout<<" ====>请选择:"; scanf("%d",&choose); syst
8、em("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
9、7:bca(); fh();//保存 break; default: break; } fflush(stdin); getchar(); system("cls"); } } 然后就要对对应的功能函数实现,里面有很多的代码。 首先是显示主界面:让操作的人一眼就能看到这系统有哪些功能 。我们根据界面的提示进入对应的数据操作 主界面的流程图: 2.查看学生成绩 3.查找学生成绩 1.添加学生成绩 学生管理系统 6.输出前N名学生 4.删除学生成绩 5.总分、平均分 void xianshi
10、()
{
cout<<"===================================================";
cout<<" * 学生成绩管理系统 *"< 11、out<<"-- [4] 删除学生成绩 ***************************"< 12、<"==================================================="< 13、数:";
cin>>numberTemp;
for(i=0;i 14、ndl;
}
第二个是要查看学生的信息,这个很简单,直接用一个for循环输出在文件里的信息就好:
void select()//查看学生
{
int i=0;
cout<<"以下是全部学生成绩"< 15、来查找。然后,比如按学号来查是,提示用户输入要查找的学生的学号,for循环和strcmp()函数查。当文件里面有这个学生时,输出来给用户;具体如下
void chazhao()//查找学生
{
int n=0;
cout< 16、hcz()//按学号查找 ,这里运用了for循环和strcmp()查找学生。Strcmp()是一个比较函数,里面两个参数相等时入输出结果。
{
char id[7];
int i=0;
cout<<"请输入要查找学生学号:";
cin>>id;
system("cls");
printf("\t姓名\t学号\t性别\t成绩\n");
for (i=0;i 17、 18、< 19、 xhsc();
break;
}
}
void xmsc()//按姓名删除
{
FILE *fp=NULL;
char name[60];
int i=0;
int j=0;
printf("请输入要删除的学生姓名:");
scanf("%s",name);
for(i=0;i 20、式打开文件 把以前的数据擦除了
fp=fopen("F://student.dat","wb");
for (i=0;i 21、
if (strcmp(id,st[i].num)==0) //如果查找到就删除
{
for (j=i;j 22、把学生的分数统计出来,这个也很好实现。就是把所有的学生的分数加在一起,然后把除以总数得出平均分:
void tj()//统计
{
int i=0;
double sum=0.0;
for(i=0;i 23、NUmber=0;
int i=0;
int j=0;
for(i=0;i 24、号\t性别\t成绩"< 25、很简单就用一个exit(0)。
.四 测试主程序
void main()
{
int choose=0;
FILE *fp=NULL;
char yesorno;
if((fp=fopen("F://student.dat","rb"))==NULL)
{
cout<<("\n=========>提示:文件不存在,是否要创建一个?(y/n)\n");
cin>>yesorno;
if(yesorno=='y'||yesorno=='Y')
{ //这里仅为了建立文件,默认的地址在
fp=fopen("F://student.dat","wb");
fclose(f 26、p);}
else
exit(0);
}
else
{Number=dq(st); //要是文件只能够已经有数据 将数据初始化到数组中}
system("cls");
while(true)
{ xianshi();
cout<<" ====>请选择:";
scanf("%d",&choose);
system("cls");
switch(choose)
{case 0: exit(0);
//退出
break;
case 1: add();
fh();//增加学生成绩
break;
case 2: select();
fh();//查看学 27、生成绩
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");}}
部分测试数据如下:
主界面
添加数据
查看所有学生:
查找 28、学生:选着1姓名查询
删除学生:比如按姓名来删除
再次查看所有学生
按6进行排序,查看前两名学生的成绩
按7保存信息。最后可以按0退出系统
测试完毕。
五 个人体会
通过这次课程设计,我更加深刻的知道了我们学的c++和我们的生活密切相连,所以更应该注意平时上课各种小知识点的积累。然后上机具体操作的情况又与笔试有很大的不同,因为通过键盘操作,更容易出错。所以我们平时在学习的时候,就应该做到边学边编,如果很久没有接触到c++的编译环境,就会出现不知道从何如手。
另外,程序的变化太大拉,它需要我们拓展课外知识,所以仅靠在课堂上的时间学好它是不现实的。有很多小的技巧,以及编程思想需要我们自己去领悟,这要求我们要有很好的自学能力。比如说这次变成如果没有掌握好文件输入,打开的话,就很难编出能实现功能的程序,还有需要到网上去查很多资料,不懂就要借鉴。
编程最重要的是思路清晰,条理清楚,只有思路比较清楚的条件下,进展才比较顺利。并且,在编译过程中遇到的错误也要耐心去修改,并且记住这相应的错误代码,以便以后遇到相同的情况,知道怎么修正。
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。