c学生信息管理(整理)_第1页
c学生信息管理(整理)_第2页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+实习报告一、课程设计目的1. 通过 C+ 课程设计,使学生能够将学到的面向对象的设计思想运用在具体的工作和学习 中,加深对类和对象的理解,要求学生对生活中许多具体的事物抽象出类,并掌握继承和 派生类、基类、虚函数和多态的概念。2、通过这次课程设计掌握 C+ 语言程序设计的编程思想,为后续课程打下基础。3、培养我实际操作能力和实践能力,为以后的工作打下坚实的基础。课程设计的要求 利用学到的编程知识和编程技巧,要求学生:1、对系统进行功能模块分析、控制模块分析正确2、系统设计要能宀成题目所要求的功能。3、编程简练,可用尽 可能的使系统的功能更加完善和全面4、使用说明书、流程图要清楚。5、特别要

2、求自己独立完成。二、课程设计的内容1 1、课程设计的题目及简介有新生来报到,要逐个录入其信息,如:学生姓名,性别,专业,出生日期,家庭地 址、英语入学成绩。要求设计链表类来实现,并统计学生人数。文本界面为:1. 新增学生信息2.删除学生信息3.导入学生信息(已经保存于的文件信息)4.学生信息搜索(按姓名)5.学生信息统计(按专业或性别或年龄 -年龄要自动计算)6.按英语成绩排序7.学生信息保存8.退出2、设计说明总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整 体结构设计合理。也可根据自己对题目的理解增加新的功能模块。 系统以菜单界面方式(至少采用文本菜单界面,如能

3、采用图形菜单界面更好)工作,运 行界面友好,演示程序以用户和计算机的对话方式进行(1 1)首先,看题目要求,每一条记录包括一个学生的姓名、性别、专业、出生 日期、家庭住址、英语成绩。同时 ,应具备以下功能: 1 1、输入功能:一 次可以完成自定义学生人数的学生信息记录的输入。 2 2、删除功能:对指定学生的信息进行删除。 3 3、修改功能:对指定学生的信息 进行修改。 4 4、查询功能:选择某种方式并输入该信息查询符合条件的学生信 息。 5 5、统计功能:对某几个专业的人数、男女性别学生信息进行统计。新增学生信息判断以前是否存储了学生信息是新按提示:输 入学个的各 种信息ete(Node* h

4、ead , int num)按格式显示 输入的学生 信息6 6 排序功能:以英语课程的分数为依据对学生信息进行排序。7 7、显示功能:将以上功能操作后的学生信息显示出来。8 8、退出主菜单。3程序流程图各功能模块的实现流程图:1 1 增加学生信息调用函数 Node*Node* CreateCreate( (判断 gggg 是否等于一如果是可创建链表输入相应的 学生信息如果不是则需要运用 InIn sert(psert(p ) )函数插入结点增加学生信息的,并 通过chundang(p)chundang(p)函数进行存档,具体流程如下图所示流程图2 删除学生信息调用函数 Node*删除学生的信息

5、则必须对链表结点进行删除意味着将某个要删除结点前后的连续打断,去掉该结点,使前后指针变量重新连接,完成链表结点的删除任务流程图3.导入学生信息打开存档文件 ifstream Filein(out.txt)。输出说存档的学生信息调用函数de* tongji(Node* head)运用一个 for 循环,将输入的相应的学生信息用strcmp ()函数与对应的数组进行比较,然后再进行统计1 ,然后排名加 1),否则最大值减 1,然后再次进行比较( 如果等于 99 且上次没有等 于 100 的,就输出排名 1,然后排名加 1,如果上次有等于 100 的排名为 2),如果没有 与 99 相等的,则继续循

6、环 流程图:总功能模块图:息按学生信息计:进行排序6、按英语成绩进行输出统计的e* paixu(N它的主要思想的:首先设置英语他)然后让输入的学生信息英语成绩一次比较进行比较,(如果有相等的就输出排名调用函数100,统计所设定的专业人数和男女性别的人数,计算学生的元成最大0(也150信息*退出该功 能,返回主 菜单,功能模块图学生管理系统7 保存学生信息:提示保存成功2.3.4.4、输入你要查找你学生姓名5 统计各种专 业、男女、相 应年龄的人数菜单.新增学生信息 删除学生信息 导入学生信息 学生信息搜索 学生信息统计 按英语成绩排序 学生信息保存 退出8、退出系统8.1 输入学生的信息:姓名

7、、性 别、专业、出生 日期、家庭地 址、英语成绩2、输入要删除的学生的编号, 删除学 生信息。5.6.7.6 按英语成绩降输出学生的编 号、姓名、性别、 专业、出生日期、 家庭地址、英语成 绩序排列,输出学生的姓名排名和央语成绩各功能显示效果模块图:增加学生信息和导入学生信息保存学生信息统计电子、建筑、通信、三个专业的人的个数,按英语成绩进行排名并输 出删除相应学生的信息4、程序清单#include stdafx.h#include stdafx.h#include #include #include#includeusing namespace std。int nn=0 。struct No

8、de int num 。char name20 。char xb20 。char zy20 。int nian,yue,ri 。char dz20 。int mark 。Node *next 。 。 /*Node* Create() / 链表创建 cout 请输入学生信息(输入 0 退出) :num=1 。head=NULL 。n+ 。while (p1-num!=NULL) if (n=1) head=p1 。 else p2-next=p1 。p2=p1 。p1=new Node 。int a 。nn+。p1-num=nn 。 coutp1-name 。 a=(int)p1-name0-4

9、8 。 if (a=0)break 。 coutp1-xb 。 coutp1-zy 。 coutp1-nian 。 cinp1-yue 。cinp1-ri 。 coutp1-dz 。coutp1-mark 。 n+ 。 p2-next=NULL 。 return head。 */*void chundang(Node *head) / 存档 Node *p=head 。p=p-next 。ofstream Fileout(out.txt) 。Fileout 学生资料 endl 。Fileout- endl 。while(p)Fileout - 编号: num 姓名: namexb 专业:zy

10、出生日期: nian/yue/ri/ 址: dz 英语入学成绩: marknext 。Fileout- num=nn 。coutp0-name 。 coutp0-xb 。 coutp0-zy 。 coutp0-nian 。 cinp0-yue 。 cinp0-ri 。coutp0-dz 。coutp0-mark 。if (head=NULL) /*next=NULL 。 return head 。while (p1-numnum & p1-next)p2=p1 。 p1=p1-next 。 if (p1-num=p0-num) if (p1=head) head=p0 。 else p

11、2-next=p0 。 p0-next=p1 。 else p1-next=p0 。 p0-next=NULL 。 return head 。 *Node* tongji(Node* head)/ 统计/* Node* Delete(Node* head , intnum) / 删除节点 if (head=NULL) cout 不存在此编号 num!=num & p1-next) p2=p1 。 p1=p1-next 。 if (p1-num=num) if (p1=head) head=p1-next 。 else p2-next=p1-next 。 else cout 没找编号为

12、num 的学生! next 。/ 整顿编号while (p1)kk+ 。p1-num=kk 。p1=p1-next 。 /* return head 。 /*/*Node* sousuo(Node* head , char na20)/ 搜索Node *p1=head 。while(p1!=NULL)if(!strcmp(p1-name,na)cout 编号: num 姓名: name 性别: xbzy 出生日期:nian/yue/ri/ 地址: 英语入学成绩: marknext 。return 0 。/*/*专业: p1-dzNode *p1=head 。int a=0,b=0,c=0,d=

13、0,e=0,i100,j100 。char aa=通信, bb=建筑 ”,cc=电子,nan=男,nv=女”。 for(int k=0。 kzy,aa)a+ 。 else if(!strcmp(p1-zy,bb)b+ 。 else if(!strcmp(p1-zy,cc)c+ 。 if(!strcmp(p1-xb,nan)d+ 。 else if(!strcmp(p1-xb,nv)e+ 。 for(int l=0 。 lnian=il)jl+。 p1=p1-next。/- 存档ofstream Fileout( 统计 .txt) 。Fileout 统计信息 endl 。Fileout- end

14、l。Fileouta 专业的个数: aendlb 专业的个数: bendlccendl 。Fileout 男性个数: dendl 女性个数: eendl 。for(int mm=0 。 mm100。 mm+)if(jmm!=0)Fileout 年龄 imm 的个数: jmmendl 。 Fileout- endl。Fileout.close() 。/-cout 统计信息 endl 。cout- endl 。cout 通信专业的个数: aendl 建筑专业的个数: bendl 数:cendl 。cout 男性个数: dendl 女性个数: eendl 。 for(int m=0 。 m100。

15、m+)if(jm!=0)cout 年龄 im 的个数: jmendl 。 cout- endl 。return 0 。/*专业的个数:电子专业的个Node* paixu(Node* head) Node*p1=head 。 int rr=100 。 /成绩 int ll=1 。/排名ofstream Fileout( 英语成绩排序 .txt) 。 Fileout 英语成绩排序 endl 。Fileout- endlFileout 排名 成绩 姓名 endl 。cout- endl 。cout 排名 成绩 姓名 mark=rr)Fileoutll mark nameendl coutll mar

16、knamenext 。rr-。Fileout- endlFileout.close() 。cout- endl 。return 0。 /*main() int gg=1 。int strcmp(const char *s1,const char *s2) 。 Node *p 。/=学生信息管理 系 统 *IIendl 。cout* endl 。cout*1. 增加学生信息 *endl。cout*2. 删除学生信息 *endl。cout*3. 导入学生信息 *endl。cout*4. 学生信息搜索 *endl。cout*5. 学生信息统计 *endl。cout*6. 按英语成排序 *endl。c

17、out*7. 学生信息保存 *endl。cout*8.退出/ 英语成绩排序*,cout 请输入您的选择 (1-8):endl 。while(1) / 输出操作文本int line=0 。char buf100 。ifstream Filein(in.txt) 。 while(Filein.getline(buf,100)+line 。 coutbufn 。/-if(n=1) / 新增学生信息 if(gg)p=Create()。 /调用创建列表gg-。else Insert(p) 。/新增学生信息nn+ 。 chundang(p)。 /信息存档/-else if(n=2) / 删除学生信息 in

18、t line=0 。/导入学生信息char buf100 。ifstream Filein(out.txt) 。 while(Filein.getline(buf,100) +line 。coutbufendl 。Filein.close() 。coutcc 。Delete(p ,cc) 。chundang(p)。 /信息存档/-else if(n=3)/ 导入学生信息 int line=0 。char buf100 。ifstream Filein(out.txt) 。 while(Filein.getline(buf,100) +line 。coutbufendl 。Filein.clos

19、e() 。/-else if(n=4) / 学生信息搜索coutname 。sousuo(p,name)。/-else if(n=5) / 学生信息统计tongji(p) 。/-else if(n=6) / 英语入学成绩排序cout 按英语成绩排序: endl 。paixu(p) 。/-else if(n=7) / 学生信息保存char ch,ch1=n 。ofstream file1( 学生信息保存 .txt,ios_base:app) 。/= 清空文件 学生信息保存 .txt 的内容FILE * fp 。fp = fopen( 学生信息保存 .txt,w) 。/= 组合文件ifstream

20、 file2(out.txt) 。file1.write(char *) &ch1,sizeof(ch1) 。 while(file2.get(ch)file1.put(ch) 。 ifstream file3( 统计 .txt) 。file1.write(char *) &ch1,sizeof(ch1) 。 while(file3.get(ch)file1.put(ch) 。 ifstream file4( 英语成绩排序 .txt) 。file1.write(char *) &ch1,sizeof(ch1) 。while(file4.get(ch)file1.put(ch) 。 file1.close() 。file2.close() 。file3.close() 。file4.close() 。cout 保存成功 !endl 。/-else if(n=8)break 。/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论