c课程方案设计书报告学生信息管理系统.docx
- 文档编号:5970789
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:21
- 大小:167.94KB
c课程方案设计书报告学生信息管理系统.docx
《c课程方案设计书报告学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《c课程方案设计书报告学生信息管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
c课程方案设计书报告学生信息管理系统
封面
作者:
PanHongliang
仅供个人学习
C++实习报告
一、课程设计目的
1.通过C++课程设计,使学生能够将学到的面向对象的设计思想运用在具体的工作和学习中,加深对类和对象的理解,要求学生对生活中许多具体的事物抽象出类,并掌握继承和派生类、基类、虚函数和多态的概念。
2、通过这次课程设计掌握《C++语言程序设计》的编程思想,为后续课程打下基础。
3、培养我实际操作能力和实践能力,为以后的工作打下坚实的基础。
课程设计的要求
利用学到的编程知识和编程技巧,要求学生:
1、对系统进行功能模块分析、控制模块分析正确
2、系统设计要能完成题目所要求的功能。
3、编程简练,可用,尽可能的使系统的功能更加完善和全面
4、使用说明书、流程图要清楚。
5、特别要求自己独立完成。
二、课程设计的内容
1、课程设计的题目及简介
有新生来报到,要逐个录入其信息,如:
学生姓名,性别,专业,出生日期,家庭地址、英语入学成绩。
要求设计链表类来实现,并统计学生人数。
文本界面为:
1.新增学生信息
2.删除学生信息
3.导入学生信息(已经保存于的文件信息)
4.学生信息搜索(按姓名)
5.学生信息统计(按专业或性别或年龄---年龄要自动计算)
6.按英语成绩排序
7.学生信息保存
8.退出
2、设计说明
总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体
结构设计合理。
也可根据自己对题目的理解增加新的功能模块。
系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行
(1)首先,看题目要求,每一条记录包括一个学生的姓名、性别、专业、出生日期、家庭住址、英语成绩。
同时,应具备以下功能:
1、输入功能:
一次可以完成自定义学生人数的学生信息记录的输入。
2、删除功能:
对指定学生的信息进行删除。
3、修改功能:
对指定学生的信息进行修改。
4、查询功能:
选择某种方式并输入该信息查询符合条件的学生信息。
5、统计功能:
对某几个专业的人数、男女性别学生信息进行统计。
6、排序功能:
以英语课程的分数为依据对学生信息进行排序。
7、显示功能:
将以上功能操作后的学生信息显示出来。
8、退出主菜单。
3程序流程图
各功能模块的实现流程图:
1增加学生信息
调用函数Node*Create()判断gg是否等于一如果是可创建链表输入相应的学生信息如果不是则需要运用Insert(p)函数插入结点增加学生信息的,并通过chundang(p)函数进行存档,具体流程如下图所示
流程图
2删除学生信息
调用函数Node*Delete(Node*head,intnum)
删除学生的信息则必须对链表结点进行删除意味着将某个要删除结点前后的连续打断,去掉该结点,使前后指针变量重新连接,完成链表结点的删除任务
流程图
3.导入学生信息
打开存档文件ifstreamFilein("out.txt")。
输出说存档的学生信息
4、学生信息的搜索
调用函数Node*sousuo(Node*head,charna[20]),按学生的姓名进行搜索
流程图:
5信息的统计
调用函数Node*tongji(Node*head)运用一个for循环,将输入的相应的学生信息用strcmp()函数与对应的数组进行比较,然后再进行统计
。
6、按英语成绩进行排序:
调用函数Node*paixu(Node*head)完成排序功能
它的主要思想的:
首先设置英语成绩的最大值100,最小值0(也可以使150或者其他)然后让输入的学生信息英语成绩一次比较进行比较,(如果有相等的就输出排名1,然后排名加1),否则最大值减1,然后再次进行比较(如果等于99且上次没有等于100的,就输出排名1,然后排名加1,如果上次有等于100的排名为2),如果没有与99相等的.,则继续循环……
流程图:
总功能模块图:
各功能显示效果模块图:
增加学生信息和导入学生信息
保存学生信息
统计电子、建筑、通信、三个专业的人的个数,按英语成绩进行排名并输出
删除相应学生的信息
4、程序清单
#include"stdafx.h"
#include"stdafx.h"
#include
#include
#include
#include
usingnamespacestd。
intnn=0。
structNode
{intnum。
charname[20]。
charxb[20]。
charzy[20]。
intnian,yue,ri。
chardz[20]。
intmark。
Node*next。
}。
//*********************************************************************************
Node*Create()//链表创建
{cout<<"请输入学生信息(输入0退出):
"< intn=0。 Node*p1,*p2,*head。 p1=p2=newNode。 p1->num=1。 head=NULL。 n++。 while(p1->num! =NULL) {if(n==1){head=p1。 } elsep2->next=p1。 p2=p1。 p1=newNode。 inta。 nn++。 p1->num=nn。 cout<<"姓名: "。 cin>>p1->name。 a=(int)p1->name[0]-48。 if(a==0)break。 cout<<"性别: "。 cin>>p1->xb。 cout<<"专业: "。 cin>>p1->zy。 cout<<"出生日期: "。 cin>>p1->nian。 cin>>p1->yue。 cin>>p1->ri。 cout<<"家庭地址: "。 cin>>p1->dz。 cout<<"英语入学成绩: "。 cin>>p1->mark。 n++。 } p2->next=NULL。 returnhead。 } //*********************************************************************************** //*********************************************************************************** voidchundang(Node*head)//存档 {Node*p=head。 p=p->next。 ofstreamFileout("out.txt")。 Fileout<<"学生资料"< Fileout<<"-------------------------------------------------------------------"< while(p) { Fileout<<"--编号: "< "< "< "< "< "< "< p=p->next。 } Fileout<<"-------------------------------------------------------------------"< Fileout.close()。 } //******************************************************************************** //********************************************************************************* Node*Insert(Node*head)//插入节点 {Node*p0,*p1,*p2。 p1=head。 p0=newNode。 p0->num=nn。 cout<<"姓名: "。 cin>>p0->name。 cout<<"性别: "。 cin>>p0->xb。 cout<<"专业: "。 cin>>p0->zy。 cout<<"出生日期: "。 cin>>p0->nian。 cin>>p0->yue。 cin>>p0->ri。 cout<<"家庭地址: "。 cin>>p0->dz。 cout<<"英语入学成绩: "。 cin>>p0->mark。 if(head==NULL) { head=p0。 p0->next=NULL。 returnhead。 } while(p1->num { p2=p1。 p1=p1->next。 } if(p1->num>=p0->num) {if(p1==head)head=p0。 elsep2->next=p0。 p0->next=p1。 } else { p1->next=p0。 p0->next=NULL。 } returnhead。 } //***************************************************************************** //***************************************************************************** Node*Delete(Node*head,intnum)//删除节点 {if(head==NULL) {cout<<"不存在此编号"< returnhead。 } Node*p1,*p2。 p1=head。 while(p1->num! =num&&p1->next) {p2=p1。 p1=p1->next。 } if(p1->num==num) {if(p1==head) {head=p1->next。 } elsep2->next=p1->next。 } elsecout<<"没找编号为"< "< //******************** nn--。 p1=head。 intkk=0。 p1=p1->next。 //整顿编号 while(p1) {kk++。 p1->num=kk。 p1=p1->next。 }//******************* returnhead。 } //********************************************************************************* //********************************************************************************* Node*sousuo(Node*head,charna[20])//搜索 {Node*p1=head。 while(p1! =NULL){ if(! strcmp(p1->name,na)) {cout<<"编号: "< "< "< "< "< "< "< } p1=p1->next。 } return0。 } //********************************************************************************* //********************************************************************************* Node*tongji(Node*head)//统计 {Node*p1=head。 inta=0,b=0,c=0,d=0,e=0,i[100],j[100]。 charaa[]="通信",bb[]="建筑",cc[]="电子",nan[]="男",nv[]="女"。 for(intk=0。 k<100。 k++){i[k]=k。 j[k]=0。 } while(p1) {if(! strcmp(p1->zy,aa)){a++。 } elseif(! strcmp(p1->zy,bb)){b++。 } elseif(! strcmp(p1->zy,cc)){c++。 } if(! strcmp(p1->xb,nan)){d++。 } elseif(! strcmp(p1->xb,nv)){e++。 } for(intl=0。 l<100。 l++) { if(2010-p1->nian==i[l]){j[l]++。 } } p1=p1->next。 } //-------------------------------------------------存档 ofstreamFileout("统计.txt")。 Fileout<<"统计信息"< Fileout<<"-------------------------------------------------------------------"< Fileout<<"a专业的个数: "< "< "< Fileout<<"男性个数: "< "< for(intmm=0。 mm<100。 mm++) {if(j[mm]! =0){Fileout<<"年龄"<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程方案设计书报告学生信息管理系统 课程 方案设计 书报 学生 信息管理 系统