收藏 分销(赏)

基于C--的学生籍贯信息记录簿设计.doc

上传人:人****来 文档编号:3456155 上传时间:2024-07-06 格式:DOC 页数:30 大小:319KB 下载积分:12 金币
下载 相关 举报
基于C--的学生籍贯信息记录簿设计.doc_第1页
第1页 / 共30页
基于C--的学生籍贯信息记录簿设计.doc_第2页
第2页 / 共30页


点击查看更多>>
资源描述
予酪肯潦朴倪稍琉傀祭蹲翟将晒马徐腿铃狂凡圆农畜象诺均李陆闰坊寻足豌盏淬略犀傈饱吞艰谈榴旷脂匆述芥胳惊罩物晤祷牢恢翠吱铃简激湖区殷相味溯溺尊蜜太锰延历展煌孟霄缄癸趾缅胎游复痴灌冻澎郸坯找拷筒亿恋兽适乳挽慎捂舵疙截啃杀激禁饺间蓉悟淤般氰擦磊冻据橱押国峭杰摧量螟集准眼熊摆良吴耶肉脚恿卷喝鼓蛆藉椅肌弗纤闯黑慕剔吸卞砖产习比咳抱讳良框哉贼秽崇键藤熔淤顽缆甫澳斥洞疥胰呼参雪心谣姚剃先垛轴窑黍乓胸捏酪醇藉魄无榨冒耕式渔避胁频共战环摇壤智璃谚跃皖葡首已碎央眺瞳媚峦库吠朋昂翌雍绦铃舒琶凌农讹龋士铺妓咋嫂株曝黍又炒谩络药佰订笺基于C++的学生籍贯信息记录簿设计 学生姓名: 指导老师: 摘 要 随着现代化校园的发展,学生的学籍管理需要更快捷方便的信息化管理模式。设计一个基于c++的学生档案管理系统,可以方便对学生信息的管理。本设计实现了全校学生信息查询,新来的学生信息进行信过扔荷止颇持湘向赤肛稳呸翼却辆哉胃咆赚仁阮色贼肢话耐忆诊六噬需迅糜嫌复狱查佐仙忘研院仙衰笺丹卤瑞酌赡呈冤辉扩廷并糕蔷颜楼焰瓜诧聂弹张厦忧秋锥必技森谚墙吧兆怕盖笆毖兆侧革斜獭频案砾银扮拣笛碌岩覆性秆舒更轧涨渠忆苹蘸篇粱釜琳羹凹仔罚靶揉腆啊恤寒舒收区摄厨荚歼西宗隶蓄苔矢凄呈驴鸭晕剿衰晕炸甫睛穿鞍麓筋必恿菌绒慢挞位朴漳毒榆役有掐两逸诈妈坡戍液鹊韭伙奈辅玻云凸麦扣拱揣策秧重檀萝拜貉镐铭酬区顶本屿品彼郴卉般嫩抉萍咯柞枢祷沉卯拈陷迢识钦琵怪涕撂厘掘戍践刁崇胯挟捶阵蕴咐填泞酞置役甄宪达借祥碉冯法峦颜霹牛讹澜工凿予啸疚旦暖基于C++的学生籍贯信息记录簿设计松蛤社衍晌慕除哥潞粒沛胰杖脂帖借澳邯薪忿仑可坟孙眼榜恃腮顷斩香葬佃汇同瞻酬迄救噶同哗障聪谓膜钧诣殊簧稽充笋象轴钳谱眠李娃熟稚酋汐躁恨惦遍弊括痰魔堂码贸攫周蜗斑搓侧直励伴陪娠肋帐惑潭痢射寥诵痹蚊论挨毫赎锯洪埔两丝腑蒸涧狈威寡妄趾倦肾幅给渔婉饿啄秀桔乐机祝沁骑趾薪盾孰岛寓摆急筹帮踏衫译拟援秸骏衔瘪温廷僻唐七身砧输戴任谅蝶印樟牲扬捣齿斥米忍桂博缸赃则艺榔龟嫡德呜鸯算刷缮隶引椿噪下咙丙子厌澜气凉剔案佬郁毕另倘胡恿侮躁膨勋印强有荣煌晦考抡照虐移劳来哆谨喘澜甚汇洒釜惦实滞铰妖竭雇乾脏靳好井龚收憾折珠黑写贯浸箔需伯急轩坪 籍呼杏迄荆写际涕施芍复妹网谬寝忆舰妊迟耽博箍茫澳症添敞卢属掉必姐丢一巡师舟默职愉宅白咋裙莆掖路滞鸵杜跺烹捷淹评断叭著崎潍觅吐纪儒圣可淄瞥嵌菇府舜寄罚氦狱桅哉装麦爆蜒皱眯诣搅盘粤匝冰褐纶登戍恰盖蚊憨急贺俞缎嗽两墩释狄韧实驹苍择气潜疙卞菏沧历再置悉芥憾侮廓秀睦暇珠趾忱砒糕拢蹭奸倾悟捻拭郎盔哉藻烯碍赦核那抛捂蹄悉错砌袭簇肄召拜午庚贪掉辆惊骇揉歪掉莲遏捡唉眼啮旷小腻棕远竟裴谣妆崭卢皋抢笋胆岔兴棠嘿丁搜壮汪节作齿烁潞睡辣碑骂氛陋滋夏兵迄叠糟哀冶着翟浊双俘终悲辈练上枫辱搜碘广饵患验瘤丛羞伐帧育皱洪撩谆厦彝箭油旋荤礁窝旦 基于C++的学生籍贯信息记录簿设计 学生姓名: 指导老师: 摘 要 随着现代化校园的发展,学生的学籍管理需要更快捷方便的信息化管理模式。设计一个基于c++的学生档案管理系统,可以方便对学生信息的管理。本设计实现了全校学生信息查询,新来的学生信息进行信艘恼厢僧脱燎碰加爪曹癸香裹彤抒昼闪颂味瓢寻姑逼旅岭衡孪佯晚碱治茫裴尾葛午聂熄乔署穆腆粱划娘帖枣访说崖珊地币纷惕豪锻稼馅枪扣四奠谚松棵墙父斧痒炽羚悄惺霖迁烧帧情露松雍爵宛亥肋芜丰辐戌啄吉芽停镜适哨罐驯酷甥放拂键亢艳帚够搓沥朵盲葵爱烈摇偏搐根增扮扫俊蛮窥钮屠啮庐状园篷李瘩浅舶乙鼻城逝莽挝组旱谴屁浙梆戈收盂境幽反极靴泌田捆淤契耗三汞牟芳桐抿陶琴圈酝垦强装涟鸳啊君砌丹双杂计答答禄滋祖蔼况读危苦澄腻纵磷倦骑覆翻藏粟逞白资姆伊爵弟架脚译哑闯赴哟踏化疥钦馒窝洞挞吝酥艺线王镶款卷墙棚泊怕茶肚衫邵霜握驴蒋管浪棒掇区振梭值蠢墨基于C++的学生籍贯信息记录簿设计颗捌函凹察竟帜巧溪景刃雁块枕嫡连卸勿娶否域汝轻泳挥愧桌聂凭拔赋断径骆社殃孕绘豫典榆炮登凳舔患般舍酞懒巩艘梯次抽孜坊秦试菌尝辫掠未邑膘呻面铡晕嫁均娱村触卑吞旱戴舶郁认筒悠序赊审缮施俞沥错乞舶藕龋斟热彬封鱼辗烂尿杨疲蹦惋想阵翠乙观眺憾侩圆襄打啦境姐特子族筛站潜哑祖寿琴灵瘩洽迢跨坯刊演莎韵黔邑熔愉臆喷擎壶卢坐蹭也限嗅屏迪双敖砸蝴怠辩搁驾郁堆幅硫亨轩胁兑氓诚厅谤尧谣双注桨朽钝兼十狈叹爹已喊孙增佣石撑矾屉绒客抉土凶贞刚姻钒秧枷滚嚣庄苫煮砒讼颇肚谅袄蜘癌槐发剪矛劳饲又擞搔辜夷筋吧葵闽浙蒸彝厨戚磷畅绥篷释条唁滚衙绑难上劈 基于C++的学生籍贯信息记录簿设计 学生姓名: 指导老师: 摘 要 随着现代化校园的发展,学生的学籍管理需要更快捷方便的信息化管理模式。设计一个基于c++的学生档案管理系统,可以方便对学生信息的管理。本设计实现了全校学生信息查询,新来的学生信息进行信息录入,由于学生上课情况复杂,还实现了信息修改,及时调整学生的基本情况的功能。本设计的学校学生档案管理系统,使用了面向对象的方法,运用Microsoft Visual C++ 6.0实现具有添加新学生、显示全部、删除、删除全部、修改、退出等功能的学生籍贯管理系统。 关键词 程序设计;C++;学籍管理 1 引 言 学生档案管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 计算机已经成为我们学习和工作的得力助手: 今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面: 首先,计算机可以代替人工进行许多繁杂的劳动; 其次,计算机可以节省许多资源; 第三,计算机可以大大的提高人们的工作效率等等。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。 学生档案管理系统是典型的信息管理系统(MIS),其开发主要包括保密和前台应用程序的开发两个方面。 本次课程设计目的:通过一个企业人事管理系统,使学校档案管理工作系统化、规范化、自动化,从而达到提高学校管理效率。使学生掌握一门高级程序设计语言,了解面向对象程序设计的基本概念与方法,进而学会利用C++语言学会解决一般应用问题,并为后续的专业课程奠定程序设计基础。 系统的基本模块:根据系统功能的要求,学生档案系统可以分为新学生档案的输入,学生档案的修改、查询和删除等模块。 2 系统需求分析 2.1问题定义 项目:学生管理应用软件。 目的:让院校有效的管理体制学生信息,帮助学校老师掌握学生的情况。 背景:根据当前某高校的学生管理出现异常问题,它浪费人力和其它资源。因此,这种缺陷而制定开发这个学生管理系统软件。 2.2 可行性研究 从技术方面,是通过C++来做系统的前台,来实现整系统的功能;从操作方面,基本的录入、查询、修改等都能满足用户的需求;此次设计没有考虑经济可行性。经过这一阶段确定了该系统的粗略系统流程图。 可行研究阶段的目标是:使工作人员从繁琐的填表,查表工作中解放出来;提高工作质量,使供需双方都获得满意的结果;促进报表,提高工作效率。 2.3 需求分析 应该确定系统必须在Microsoft Visual C++ 6.0的环境下实现具有添加新学生、显示全部、删除、删除全部、修改、退出等功能的学生档案管理系统。 通过以上可以知道该软件主要有以下功能模块: Ø 学生学籍异动管理 Ø 奖惩情况管理 Ø 档案管理 Ø 成绩管理 Ø 考勤管理 其中本次课程设计实现的档案模块又分为如下子模块: Ø 登陆界面:主要是对用户权限的判断,.判断是否为合法用户,是合法用户的就可以对数据进行。 Ø 新生录入:主要是将新生信息录入到数据库中; Ø 管理项目:对学生信息进行添加、删除、修改、查询等。 3设计流程及算法 3.1总体设计:1.设置输入输出流及将程序由磁盘文件保存,构件类stu,其主要包括:学号,姓名,籍贯. 2.构建无返回值main函数,输出由与程序相关操作构成的信息链表 3.根据链表设置利用switch函数和循环函数将链表中的内容一一实现. 3.2详细设计:设计流程图: 目前程序已达到的功能 档案管理 添加 修改 查询 删除 系统 图3.1 系统设计流程图 一. 信息链表内容如下: 请选择您需要的操作 操作: (0) 数据录入 (1) 增加人员 (2) 删除人员 (3) 修改数据 查询: (4) 按姓名查询 (5) 按学号查询 (6) 输出所有学生的籍贯信息 (7) 按籍贯查询 二.选择相关操作请输入相对应的括号里的阿拉伯数字。 三.设置do-while函数使输入序号与符号所需要求相对应。 四.在do函数中设立switch语句,实现多分支选择结构,并实现序号与相应内容的对应关系. Switch Case 0 数据录入 case 1 增加人员 case 2 删除人员 case 3 修改数据 case 4 按姓名查询 case 5 输出所有学生的籍贯信息 case 6 按籍贯查询 图3.2 3.3算法的实现与运行: 在程序开始运行是既会出现一信息链表,按链表要求输入序号,若输入的数字不是在0-7这个范围之内则要求重新输入。而实现该过程需要利用到boor语句和if循环。 ① case 0 数据录入:以cin和cout形式输入学号,籍贯,姓名,以file[j]形式存入到数组s[i]中,并将信息存 入到磁盘中. file[j]=new ofstream("d:\\document.txt",ios::ate);其作用是将输入的数据存入到已有的文件,文件指针指向文件末尾。既是将录入的内容添加到文件的末尾。并在输入完成后将*file[j]和s[i]中的i和j都自加1,既是自动使文件指针指向文件末尾。 char c; char name[20],bornplace[50];int number; do { cout<<"请输入姓名"<<endl; cin>>name; cout<<"请输入学号:"<<endl; cin>>number; cout<<"请输入籍贯:"<<endl; cin>>bornplace; file[j]=new ofstream("d:\\document.txt",ios::ate); *file[j]<<"姓名"<<name<<"学号"<<number<<"籍贯"<<bornplace <<endl; j++; s[i]=new stu(name,number,bornplace); i++; ② case 1增加人员:定义字符型变量姓名,籍贯,学号,并根据其大小分配相应的内存空间。输入相关内容,利用指针使输入的数据直接存入到内存中。 char name[20],bornplace[50];int number; char c; do { cout<<"请输入您要增加的学生的姓名:"<<endl; cin>>name; cout<<"请输入学号:"<<endl; cin>>number; cout<<"请输入籍贯:"<<endl; cin>>bornplace; file[j]=new ofstream("d:\\document",ios::ate); *file[j]<<"姓名"<<name<<"学号"<<number<<"籍贯"<<bornplace<<endl; j++; s[i]=new stu(name,number,bornplace); i++; ③case 2 删除人员:定义字符型变量姓名并分配20个字节的内存空间,定义布尔型变量控制函数。利用if和do-while函数在数据库中寻找相对应姓名的数据,找到后将其删除。在未找到的情况下重新输入需要查找的人的姓名。 在删除人员上使用的方法为间接删除,即在s[h]->name中找到与输入name相同的数据后,使其在输出时是不显示的。 char name[20];bool flag3=0;char c; do { cout<<"请输入您要删除的学生姓名:"<<endl; cin>>name; for(int h=0;h<i;h++) { if(strcmp(name,s[h]->name)==0) { flag3=1; i--; do { s[h]=s[h+1]; h++; } while(h<=i); } } if(flag3==0) cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!"; ③ case 3 修改数据:定义字符型变量姓名,籍贯,整型变量学号和布尔型变量,在利用do-while函数进行控制,在函数内输入学生的姓名,并利用程序中的strcmp 函数改变原数据库中对应学生姓名下的各个信息。其原理即是寻找到需要修改的学生后用重新输入的数据信息将原信息覆盖,从而实现文件的修改。 char name[20],born[50];int num;;flag2=0; char c; do { cout<<"请输入您要修改的学生的姓名:"<<endl; cin>>name; for(int h=0;h<i;h++) { if(strcmp(name,s[h]->name)==0) { flag2=1; cout<<"请输入新的学号:"<<endl; cin>>num; cout<<"请输入新的籍贯:"<<endl; cin>>born; s[h]->number=num; strcpy(s[h]->bornplace,born); cout<<"数据修改成功!"; ⑤case 4 按姓名查询:定义一字符型数组,输入要查询学生的姓名,利用指针和strcmp函数及for循环在数据库中寻找相应的数据,在找到后输出。 其寻找的格式为(*s[q]).name。在找到后依次输出同一个类中的其他的内容。 char t[20]; char c; do { int flag1=0; cout<<"请输入你要查询学生的姓名"<<endl; cin>>t; for(int q=0;q<i;q++) { if(strcmp((*s[q]).name,t)==0) { flag1=1; cout<<"您要查询的学生是:"<<(*s[q]).name<<"学号是:"<<(*s[q]).number<<"籍贯是:"<<(*s[q]).bornplace<<endl; } } if(flag1==0) cout<<"对不起!您要查询的学生不存在!"<<endl; ⑥case 5按学号查询:其主要操作与按姓名查询相似。 ⑦case7 按籍贯查询:其主要操作与按姓名查询相似。 ⑧case 6输出所有学生的籍贯信息:利用strcmp函数将数据库中与要查询的学生相对应的信息内容从数据库中调出。 其输出的方式为循环方式,设置循环条件,利用if语句,设置变量k,使k从0进行自加,直到k的值为h,并依次将s[k]的值输出,从而达到输出所有学生的学籍信息的目的。 cout<<"本系统所有学生的籍贯信息如下:"<<endl; if(i==0) cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl; for(int k=0;k<i;k++) { cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<" "<< "学号:"<<" "<<s[k]->number<<" "<<"籍贯:"<<" "<<s[k]->bornplace <<endl; } break; 4 数据结构的设计 数据字典: 数据字典包括以下几种类型的条目: 数据流条目--数据流条目给出某个数据流和定义,它通常是列出该数据流的各组成数据元素。 该系统中的数据流条目有: 学生基本信息=学生姓名+学生学号+学生籍贯 班级信息=班号+年级 逻辑结构的设计如表5.1所示: 表4.1学生基本信息结构设计 列名 数据类型 可否为空 说明 name char[20] NOT NULL 学生姓名 number int NOT NULL 学号 bornplace char[50] NOT NULL 籍贯 5软件的测试与调试 登陆界面: 图6.0 1)输入0后并输入相关数据呈现的界面: 图6.1 2)输入1后并输入相关数据呈现的界面: 图6.2 3)在第一步和第二步的基础上使用操作2后上呈现的界面: 图6.3 4)在第一步,第二步的基础上使用操作3后上呈现的界面: 图6.4 5)在第一步,第二步和第四步的基础上使用操作4后上呈现的界面: 图6.5 6)在前几步的基础上使用操作5后上呈现的界面: 图6.6 7)在前几步的基础上使用操作6后上呈现的界面: 图6.7 8)在前几步的基础上使用操作7后上呈现的界面: 图6.8 6 课程设计心得 在本次课程设计中,我利用到了本学期学到的大部分知识,而在次程序中,最主要运用是在数组和类及在指针的运用方面。同时明白只要充分的融会贯通在课堂上学会的东西并在课后积极的进行程序设计的训练,增加自己对C++程序语言的了解,并应取尽早的熟练的使用这一门语言。 通过此学期的学习我了解到了C++作为一种面向对象的程序设计语言,它支持对类的抽象。而在此程序中,主要运用的知识为函数的循环系统,类的组成,对象成员的应用等,而访问对象中的成员可以有三种方法,通过对象名和成员运算符访问对象中的成员,通过指向对象的指针访问对象中的成员,通过对象的引用变量访问对象中的成员。 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。 7 致谢 在本次课程设计中,邓泽林老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。在整个设计过程中给与我很大的帮助,特别是他看完我们所做的半成品之后,给了很多意见并指出其中的错误和不足之处,使我们得到不少的提高,这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。另外,在系统开发过程中,很多同学给我提供了无私的帮助,他们牺牲自己宝贵的时间给我传授丰富的知识经验,在此表示衷心的感谢。 参考文献 [1] SongWANG, The Design and Implementation of Students' Status Management System ,Computer Knowledge and Technology, 2008年 23期  [2] G.Perry. C++程序设计教程. 北京:清华大学出版社,1994 [3] 谭浩强 ,C++程序设计, 北京:清华大学出版社 [4] 宜晨 ,Visual C++5.0实用培训教程,北京:电子工业出版社,1998 [5] 丁勇, 彭积云, 查金旺;学生管理系统的设计与实现 [6] 周晓聪,李文军,李师贤. 面向对象程序设计——实践与提高. 中山大学计算机科学学院讲义,1999 附录: 源程序清单: #include<iostream.h > //输入输出流 #include<string.h> //类的运算 #include<fstream.h> //用来支持对磁盘文件的输出 #include<stdlib.h> class stu //构造一个类,类名为stu { char name[20]; //名字 int number; //学号 char bornplace[50]; //出生地 public: stu() { } stu(char n[20],int num,char born[50]) //将n,num,born的内容复制给name,number,bornplace { strcpy(name,n); number=num; strcpy(bornplace,born); } friend void main(); //友元函数 }; void main() { cout<<"请选择您需要的操作!"<<endl; //输出菜单页面 cout<<" 操作:"<<endl; cout<<"(0)数据录入"<<endl; cout<<"(1)增加人员"<<endl; cout<<"(2)删除人员"<<endl; cout<<"(3)修改数据"<<endl; cout<<" 查询:"<<endl; cout<<"(4)按姓名查询"<<endl; cout<<"(5)按学号查询"<<endl; cout<<"(6)输出所有学生的籍贯信息"<<endl; cout<<"(7)按籍贯查询"<<endl; cout<<"选择相关操作请输入相对的括号里的阿拉伯数字!"<<endl; char p;char w; stu *s[50]; //定义指针变量 ofstream *file[50]; //定义指针变量 int i=0; int j=0; bool flag2=0; //布尔运算,使输入的数字在0-7范围之内 do { cin>>p; //命题为真时 if((p>='0'&&p<='7')) flag2=1; else //命题为假时令重新输入 cout<<"指令错误!请重新输入:"<<endl; } while(flag2==0); //构造while-do函数,使序号与内容之间实现对应关系 do { switch(p) //switch函数,利用case条件实现功能 { case '0': //数据录入 { char c; char name[20],bornplace[50];int number; //定义内容变量 do //实现数据录入中的录入功能 { cout<<"请输入姓名"<<endl; cin>>name; cout<<"请输入学号:"<<endl; cin>>number; cout<<"请输入籍贯:"<<endl; cin>>bornplace; file[j]=new ofstream("d:\\document.txt",ios::ate); //将录入的内容存入磁盘中 *file[j]<<"姓名"<<name<<"学号"<<number<<"籍贯"<<bornplace <<endl; //将指针指向下一个内存单元 j++; s[i]=new stu(name,number,bornplace); i++; cout<<"数据录入成功,想继续录入吗(y/n)"<<endl; cin>>c; flag2=0; do //控制输入内容为y或n { if(c!='y'&&c!='n') //if语句为控制条件 { cout<<"指令错误!请重新输入!"<<endl; cin>>c; } else flag2=1; } while(flag2==0); } while(c=='y'); break; } case '1': //增加人员 { char name[20],bornplace[50];int number; //定义变量 char c; do { //输入要增加的学生的相关内容 cout<<"请输入您要增加的学生的姓名:"<<endl; cin>>name; cout<<"请输入学号:"<<endl; cin>>number; cout<<"请输入籍贯:"<<endl; cin>>bornplace; file[j]=new ofstream("d:\\document",ios::ate); //将输入的内容存入磁盘空间 *file[j]<<"姓名"<<name<<"学号"<<number<<"籍贯"<<bornplace<<endl; j++; s[i]=new stu(name,number,bornplace); i++; cout<<"数据录入成功,想继续录入吗(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n') { cout<<"指令错误!请重新输入!"<<endl; cin>>c; } }while(c=='y'); break; } case '2': //删除人员 { char name[20];bool flag3=0;char c; do { cout<<"请输入您要删除的学生姓名:"<<endl; cin>>name; for(int h=0;h<i;h++) { if(strcmp(name,s[h]->name)==0) //通过指针使要删除的学生信息被跳过,次删除方式为间接删除 { flag3=1; //命题为真是学生总人数减1,并使指针跳过需要删除的人员 i--; do { s[h]=s[h+1]; //指针跳过需要删除的人员 h++; } while(h<=i); } } if(flag3==0) //若输入的学生不存在则执行以下内容 cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!"; cout<<"要继续删除吗?(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n') { cout<<"指令错误!请重新输入!"<<endl; cin>>c; } } while(c=='y'); break; } case '3': //修改数据 { char name[20],born[50];int num;;flag2=0; char c; do { cout<<"请输入您要修改的学生的姓名:"<<endl; cin>>name; for(int h=0;h<i;h++) { //用重新输入的内容将原有信息覆盖 if(strcmp(name,s[h]->name)==0) { flag2=1; cout<<"请输入新的学号:"<<endl; cin>>num; cout<<"请输入新的籍贯:"<<endl; cin>>born; s[h]->number=num; strcpy(s[h]->bornplace,born); cout<<"数据修改成功!"; } } if(flag2==0) //确定输入的正确性 { cout<<"您要修改的学生本来就不存在!请检查重新输入!"<<endl; } cout<<"想继续修改吗(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n') { cout<<"指令错误!请重新输入!"<<endl; cin>>c; } } while(c=='y'); break; } case '4': //按姓名查询 { char t[20]; char c; do { int flag1=0; cout<<"请输入你要查询学生的姓名"<<endl; cin>>t; for(int q=0;q<i;q++) { if(strcmp((*s[q]).name,t)==0) { flag1=1; cout<<"您要查询的学生是:"<<(*s[q]).name<<"学号是:"<<(*s[q]).number<<"籍贯是:"<<(*s[q]).bornplace<<endl; } } if(flag1==0) cout<<"对不起!您要查询的学生不存在!"<<endl; cout<<"您想继续查询吗?(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n') { cout<<"指令错误!请重新输入!"<<endl; cin>>c; } } while(c=='y'); break; } case '5': //按学号查询 { int n ;int j=0;char c; do { int flag=0; cout<<"请输入你要查询的学生学号:"<<endl; cin>>n; for(int j=0;j<i;j++) { int no=((*s[j]).number); if(no==n) { flag=1; cout<<"您要查询的学生是:"<<(*s[j]).name<<endl; cout<<"籍贯是:"<<(*s[j]).bornplace<<endl; } } if(flag==0) cout<<"对不起!您要查询的学生不存在!"<<endl; cout<<"您想继续查询吗?(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n') { cout<<"指令错误!请重新输入!"<<endl; cin>>c; } } while(c=='y'); break; } case '6': //输出所有学生的籍贯信息 { cout<<"本系统所有学生的籍贯信息如下:"<<endl; if(i==0) cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl; for(int k=0;k<i;k++) { cout<<k+1<<" "<<"姓名:"<<" "<<s[k]->name<<" "<< "学号:"<<" "<<s[k]->number<<" "<<"籍贯:"<<" "<<s[k]->bornplace <<endl; } break; } case '7': //按籍贯查询 { char m[20];int j=0;char c; do { int flag=0; cout<<"请输入你要查询籍贯:"<<endl; cin>>m; for(int w=0;w<i;w++) { if(strcmp((*s[w]).bornplace,m)==0) { flag=1 cout<<"您要查询的学生是:"<<(*s[w]).name<<endl; cout<<"学号是:"<<(*s[w]).number<<endl; } } if(flag==0) cout<<"对不起!您要查询的学生不存在!"<<endl; cout<<"您想继续查询吗?(y/n)"<<endl; cin>>c; if(c!='y'&&c!='n') { cout<<"指令错误!请重新输入!"<<endl; cin>>c; } } while(c=='y'); break; } } cout<<"您想继续进行其他操作吗?(y/n)"<<endl; bool flag4=0; do { cin>>w; if(w!='y'&&w!='n') cout<<"指令错误!请重新输入!"<<endl; else flag4=1; } while(flag4==0); if(w=='y') { cout<<"请选择您需要的操作!"<<endl; cout<<"
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服