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

上传人:dus****log 文档编号:126799140 上传时间:2022-07-29 格式:DOC 页数:17 大小:330KB
返回 下载 相关 举报
C++课程设计报告--学籍管理系统_第1页
第1页 / 共17页
C++课程设计报告--学籍管理系统_第2页
第2页 / 共17页
C++课程设计报告--学籍管理系统_第3页
第3页 / 共17页
点击查看更多>>
资源描述
课程设计报告题 目 学籍管理系统 课 程 名 称 面向对象程序设计课程设计 院 部 名 称 软件学院 专 业 数字媒体技术班 级 1222202 学 生 姓 名 张吉发 学 号 201220220203 课程设计地点 软件楼 课程设计学时 16 指 导 教 师 邹国华 一 需求分析随着计算机的发展,越来越多的学校有自己的学籍管理系统。这样更方便数据的长期保存,更适用于数据的集中处理。通过这个简单的学籍管理系统,可以添加新成员的基本信息,通过其姓名,性别,科目,分数等信息查询这个人的基本信息。可以很方便的进行数据修改,以及数据删除。本系统主要是通过二进制的文件读取,进行输入,输出,以及修改,删除等基本功能。用结构体实行学生的基本信息。结构体student数据成员:1. 姓名 name2. 学号 num3. 语文 Chinese4. 数学 math.二 概要设计struct studentchar name60;char num20;int score;char sex30;这个结构体设计的很简单,里面有四个数据成员。包括了学生的基本信息,姓名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 st300; /这个数组用来保存所有的学生信息 和文件里面的一致int Number=0; /记录总的学生人数 也就是数组/文件里面的学生人数主函数的流程图:创建一个文件夹,用结构体student输入信息显示菜单,把系统功能界面给用户用户输入序号,根据输入进行操作输入0,结束第一次没有文件,判断是否创建文件?开始.三 详细的设计。主函数void main()这里默认的查查在F盘是否有一个文件,student。如果有就直接在原有的基础上添加或是修改信息。没有就建立一个文件在磁盘中 。编辑主页面的链接。主要有八个功能: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提示:文件不存在,是否要创建一个?(y/n)n);cinyesorno;if(yesorno=y|yesorno=Y) /这里仅为了建立文件,默认的地址在fp=fopen(F:/student.dat,wb);fclose(fp);elseexit(0);elseNumber=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();/查看学生成绩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=;cout * 学生成绩管理系统 *endl;cout- 1 添加学生成绩 *endl;cout- 2 查看学生成绩 *endl;cout- 3 查找学生成绩 *endl;cout- 4 删除学生成绩 *endl;cout- 5 统计(总成绩和平均分) *endl;cout- 6 输出前N名学生成绩 *endl;cout- 7 保存*endl;cout* 0 退出*endl;cout=endl;有了这个主页面。我们一个一个的来实现。第一个先把添加学生信息的函数编好,这样我们就可以向里面存学生的而信息了,先定义一个暂时的学生类保存,这里要注意的是我们添加的是很多学生信息,要用一个数组来实现。而且要把添加的学生信息保存到原有的文件中:具体的代码如下:void add()/增加学生 int numberTemp=0;int i=0;struct student temp; /临时保存信息coutnumberTemp;for(i=0;inumberTemp;i+)cout输入第i+1个同学信息 endl;couttemp.name;couttemp.num;couttemp.sex;cout成绩:temp.score;stNumber+=temp; /将刚添加的写入到数组bc(&temp); /将刚添加的写入到文件cout添加成功endl;第二个是要查看学生的信息,这个很简单,直接用一个for循环输出在文件里的信息就好:void select()/查看学生 int i=0;cout以下是全部学生成绩endl;coutt姓名t学号t性别t成绩n;for(i=0;iNumber;i+)coutsti.nametsti.numttsti.sex tsti.scoreendl ;第三个是查找学生的信息,做这个时需要做第二个界面菜单。可以按学号或是姓名来查找。然后,比如按学号来查是,提示用户输入要查找的学生的学号,for循环和strcmp()函数查。当文件里面有这个学生时,输出来给用户;具体如下void chazhao()/查找学生 int n=0;coutendl* 1 按姓名查找endl;coutn;switch(n)case 1: xmcz();break;case 2: xhcz();break;default:cout输入有误,结束!endl;break; void xhcz()/按学号查找 ,这里运用了for循环和strcmp()查找学生。Strcmp()是一个比较函数,里面两个参数相等时入输出结果。char id7;int i=0;coutid;system(cls);printf(t姓名t学号t性别t成绩n);for (i=0;iNumber;i+)if (strcmp(id,sti.num)=0)coutsti.nametsti.numttsti.sex tsti.scoreendl ;void xmcz()/按姓名查找 ,运用学号查找一样的方法 char name7;int i=0;coutname;system(cls);coutt姓名t学号t性别t成绩n;for (i=0;iNumber;i+)if (strcmp(name,sti.name)=0)coutsti.nametsti.numttsti.sex tsti.scoreendl ;.第四个就是删除学生的而信息,这个大体上跟查找学生的差不多,只是在查出学生后处理的方式不一样。查找是把学生的信息数出来就好,而删除时则需要删除该学生。删除的思想是用该学生后面一个一个学生往前面的覆盖。这里要注意的是,删除信息后就要把信息保存到原有的文件中。具体代码如下:void del()/删除 int n=0;cout1 按姓名删除endl;coutn;switch(n)case 1: xmsc();break;case 2: xhsc();break;void xmsc()/按姓名删除 FILE *fp=NULL;char name60;int i=0;int j=0;printf(请输入要删除的学生姓名:);scanf(%s,name);for(i=0;iNumber;i+)if (strcmp(name,sti.name)=0) /如果查找到就删除for (j=i;jNumber-1;j+)stj=stj+1;Number-;/将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了fp=fopen(F:/student.dat,wb);for (i=0;iNumber;i+)fwrite(&sti,sizeof(struct student),1,fp);/写入一个数据块fclose(fp);cout删除成功;void xhsc()/按学号删除 FILE *fp=NULL;char id60;int i=0;int j=0;coutid;for(i=0;iNumber;i+)if (strcmp(id,sti.num)=0) /如果查找到就删除for (j=i;jNumber-1;j+)stj=stj+1;Number-;/将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了fp=fopen(F:/student.dat,wb);for (i=0;iNumber;i+)fwrite(&sti,sizeof(struct student),1,fp);/写入一个数据块fclose(fp);cout删除成功;第五个是把学生的分数统计出来,这个也很好实现。就是把所有的学生的分数加在一起,然后把除以总数得出平均分:void tj()/统计 int i=0;double sum=0.0;for(i=0;iNumber;i+)sum+=sti.score;printf(全班总分为:%fn,sum);printf(平均分为:%fn,sum/Number); 第六个排序:把学生的信息按照分数的高低排序,然后可以输出前几位学生的信息输出。void px()/排序 struct student temp;int wantNUmber=0;int i=0;int j=0;for(i=0;iNumber-1;i+)for(j=i;jNumber-1;j+)if(stj.scoreNumber)wantNUmber=Number;coutt姓名t学号t性别t成绩endl;for(i=0;iwantNUmber;i+)coutsti.name sti.num sti.sex sti.scoreendl; 第七个是保存文件:void bc(struct student *st)/保存FILE *fp=NULL;fp=fopen(C:/student.dat,ab+);fwrite(st,sizeof(struct student),1,fp);fclose(fp);最后就是退出系统了,这个在主程序就实现了,很简单就用一个exit(0)。.四 测试主程序 void main()int choose=0;FILE *fp=NULL;char yesorno;if(fp=fopen(F:/student.dat,rb)=NULL)cout提示:文件不存在,是否要创建一个?(y/n)n);cinyesorno;if(yesorno=y|yesorno=Y) /这里仅为了建立文件,默认的地址在fp=fopen(F:/student.dat,wb);fclose(fp);elseexit(0);elseNumber=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();/查看学生成绩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+的编译环境,就会出现不知道从何如手。另外,程序的变化太大拉,它需要我们拓展课外知识,所以仅靠在课堂上的时间学好它是不现实的。有很多小的技巧,以及编程思想需要我们自己去领悟,这要求我们要有很好的自学能力。比如说这次变成如果没有掌握好文件输入,打开的话,就很难编出能实现功能的程序,还有需要到网上去查很多资料,不懂就要借鉴。编程最重要的是思路清晰,条理清楚,只有思路比较清楚的条件下,进展才比较顺利。并且,在编译过程中遇到的错误也要耐心去修改,并且记住这相应的错误代码,以便以后遇到相同的情况,知道怎么修正。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!