付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级语言程序设计课程设计报告学生信息管理系统的设计与实现号:名:141608010141彭方林专业班级:日 期:计算机科学与技术 14012015年11月11日1课程设计目的2、课程设计内容3、学生信息管理系统的实现4、系统测试及系统运行效果5、系统设计遇到的问题及解决方案6、总结与收获附录源程序代码7、课程设计成绩13.2.2高级语言程序设计课程设计报告1 课程设计的目的1.1 课程设计题目学生信息管理系统的设计与实现2.1 课程设计目的本课程设计是在学习 C+ 基本理论之后的实践教学环节。该实践教学是软件设计的综 合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。要
2、求学 生在设计中逐步提高程序设计能力, 培养科学的软件工作方法。 学生通过课程设计在下述各 方面得到锻炼:.能根据实际问题的具体情况,结合 C+的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。.提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法和程序的正确性,学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设 计水平。2 课程设计的内容2.1 题目分析设计一个学生信息管理系统,其中包括:学生基本信息:学号、姓名、性别、成绩(语文、离散数学、英语、毛概、电路基础、 概率论、体育)。因为课程设计时间为大二上学期,所以成绩采用的是这学期本专
3、业的课表。学生信息管理系统功能如表 1-1 所示,具体功能如下:1. 系统菜单显示2. 学生信息录入功能3. 学生信息浏览功能4. 查询:.学号查询 .姓名查询5. 学生信息的删除与修改6. 系统中学生信息数量统计7. 学生信息排序(冒泡排序)表1-1程序功能学号查询姓名查询添加学生信息删除学生信息修改学生信息查看已添加学生信息统计学生信息数量学生信息排序2.2系统程序模块设计2.2.1菜单模块绘制菜单(包含学号查询、姓名查询、添加学生信息、删除学生信息、修改学生信息、查看已存档学生信息、统计学生信息数量、学生信息排序)。根据用户输入的值调用对应的模块函数实现该项功能2.2.2信息录入模块查找
4、系统中是否已存在该学号对应的信息if (存在)提示信息已存在else向文件中写入各项信息2.2.3信息读出模块判断系统中是否存在学生信息if(不存在)提示信息不存在 else 在屏幕上显示该学号对应的信息2.2.4信息查询模块if(学号查询)判断文件是否为空 查找系统中是否有该学号信息if(存在)输出学生信息else提示学生信息不存在if (姓名查询)判断文件是否为空查找系统中是否有该姓名对应信息if(存在)输出学生信息else提示信息不存在225创建系统文件夹模块判断系统文件夹是否存在if (不存在)创建“D 学生信息”文件夹判断系统文件是否存在if (不存在)创建“ D:学生信息 学生信息
5、.txt”文件2.2.6删除学生信息模块查看系统文件是否为空if (文件为空)提示学生信息不存在else查找系统中是否有该学号信息if (存在)删除该学生信息else提示该学生信息不存在2.2.7修改学生信息模块查看系统中是否存在该学生信息if(存在)删除该学生信息 添加该学生新信息修改成功228统计学生信息数量模块if (文件存在)读取学号,每读取到一个学号,数量 +1返回信息数量的值2.2.9学生信息排序模块if(打开成功)2.2.10模块图读取全部信息存到结构体数组,按照冒泡排序将信息按学号升序排序 之后将数组内容依次存入文件,并覆盖旧文件。各模块之间结构图如图2-1所示3添 加 学 生
6、 信 息修 改 学 生 信 息删 除 学 生 信 息查 询 学 生 信 息浏 览 学 生 信 息统 计 信 息 数 量学 生 信 息 排 序学姓号名查查询询图2-1模块图2.3系统主要函数学生信息管理采用结构化程序设计思想, 除主函数外共设计了 8个函数,函数原型及功能说明如图2-2所示:图2-2系统主要函数高级语言程序设计课程设计报告函竝匡型歷功葩遽明宇号迹裁克全void LnpLit_datiilLnt n, int daTanLinberjvoid mjtput_t;ata(int datanuiriberjvoid sluiden t _nLiinber_f Lnd * str ing
7、 niiniberf ind. int datsnuiiter)voic jtudtnt iwciefiEd' stjinjr nMie.find- int cat a nuzbzvoid folderl.lint student_dat&_deLele fstrixij Liuiifcer_deLete, int datanumber)int Etudent.deTfljumbfrfvoid studFnt_dali_aDc!ify f)void STudent_daTa_sort lint datajuanber学生隹息灵入学主洁息卷出学号壹崔射除=生悟尼乖计弟圭仁叵觅5條
8、改学i倍忌学生信戢肆宇,巨泡I2.4程序流程图高级语言程序设计课程设计报告显示排序后的信息结束图2-3程序流程图3学生信息管理系统的实现3.1学号查询程序每次从文件中读取出一位学生的所有信息, 将读取到的学号与用户所输入的学号进 行比较。如果两个学号相同,表示已找到该学号对应的信息,显示出该学生的全部信息,查 找结束。若两个学号不同,则重新读取下一位学生的信息进行比较,直到文件读取到尾部, 显示未找到该学号对应的信息。3.2姓名查询程序每次从文件中读取出一位学生的所有信息,将读取到的姓名与用户所输入的姓名进 行比较。如果两个姓名相同,表示已找到该姓名对应的信息,显示出该学生的全部信息,查 找结
9、束。若两个姓名不同,则重新读取下一位学生的信息进行比较,直到文件读取到尾部, 显示未找到该姓名对应的信息。3.3添加学生信息根据用户输入的学生信息数量将下列过程循环对应的次数:新建一个标识变量find的值为-1,代表文件中不存在该学生信息。用户输入学生信息后find打开文件读取每个学生信息的信息,比较两个信息的学号是否相同。如果相同则修改的值为0,代表文件中已存在该学生的信息,同时提示“此学生信息已存在,请进入菜单选 择修改信息或者删除信息之后再添加检查完学生信息是否重复输入后,若find的值为-1,则将该学生信息存入到文件中,若find值为0,则跳过此步骤。3.4删除学生信息find新建一个
10、标识变量find的值为-1,代表文件中不存在该学生信息。用户输入学生信息后 打开文件读取每个学生信息的信息,比较两个信息的学号是否相同。如果相同则修改 的值为0,代表文件中存在该学生的信息。若find的值为0则执行删除功能:新建一个文件 “学生信息1.txt ”作为临时文件,用来存储删除后的信息。读取一位学生的全部信息,如果 该信息的学号和想要删除的学号不同,则将该学生信息存到“学生信息1txt ”中。若两个学号相同,则跳过该学号,不将之存入临时文件中。文件读取到末尾后,删除“学生信息.txt”, 将“学生信息1.txt重命名为“学生信息.txt ”,则需要删除的信息已从文件中删除。3.5修改
11、学生信息修改学生信息的功能为删除和添加功能的结合,用户输入需要修改的学生学号后,系 统会先调用删除学生信息功能删除该学号对应的信息,之后再调用添加学生信息功能添加新 的学生信息,修改完毕。3.6查看已添加学生信息该功能是显示文件中所有的学生信息, 根据学生信息数量确定循环次数,依次输出每位 学生的信息。3.7统计学生信息数量先新建一个变量d的值为0,代表学生信息数量。While循环的条件为(能读取到学号), 当条件成立时将文件位置指针从当前学号尾部移动到学号之前,否则信息会读取混乱,并将d的值加1。当循环条件不成立时,返回 d (学生信息数量)的值。每次需要用到学生信息 数量的值时都会调用该函
12、数,求出最新的信息数量。3.8学生信息排序排序功能使用的是冒泡排序,将文件中的信息读取到数组中,通过冒泡排序将信息按照 升序排序后存到文件中,再次显示的学生信息就是排序后的信息。4系统测试及系统运行效果4.1系统王界面进入系统后将弹出菜单界面。系统主界面运行效果如图4-1所示匚 Awird owsXsyste nri32cmdexe欢迎使用信息査询系统,按豪字铁进入菜单咗顶。 学号査询2炷名査诃3.称剂学生信息U.咖除学生信息5. 修改学生信息的学主倍息 的学生倍息数量8 学生信息排序图4-1系统主界面4.2添加学生信息首先输入添加信息的数量,然后输入第一位学生的信息,提示“添加信息成功”后再
13、依 次输入其余的学生的信息。Hiagaai添加学生信息的运行效果如图4-2所示裤加学生信息请输入所滸加学生信息的数a3谨输入学生的学号,姓S /生另h成绩(成绩顺宇依次K底文-离ft数学, 咄”概率淮,体育.若该科成绩兀,请输入D)(空格键疔隔0 11160801(3122 哄举辰男 3書 &a 53 97 耳3 ?5 甜嫁加借息成功谨输人学生的学号姓名.咗别.祇绩(成绩順严俅-賀为语文+离散数学, 础.槪:率论”体育若该科成绩无,1S«AO)(空格键分隔!)1 <116080101M1 調方林男自8 9S 35 48 75 94 89添扣信息成功谨输A学生的学号.姓名
14、性另成缢(成绩ffi尹轶以为佢文,;龍数学 础*槪率论,体育若该科成绩无.请输A0H空格肄分隅!)HieEI801Q112 伞聘S ir 96 90 97 94 95 38 97添加侍慝成功按-磚识同慕单植ttSS新?S加侑烷!电路基英语,毛札电路®电路基图4-2添加学生信息4.3学号查询输入想要查询的学号,如果存在该学生,则显示学生信息,不存在就提示该学生信息不 存在。学号查询的运行效果如图4-3、4-4所示学号查询:请输人位学号:141603010125未找到逹学号对应的隹息! 檢”»返回菜单斯沓找!图4-3学号查询(不存在)Sn C:Vvp ind owsXsyste
15、ny3 gc md exe 供号e新 请输人12位学号:1H1G08O1Om该学生信息3:学号:R1C08010141姓名:翦上朴性别:男 语义内8离散数学:96英语:眄毛概汕B电路基砒:了 5嘅率论:94倍育:89按*键返回菜洋按*Sfi新查找图4-4学号查询(存在)4.4姓名查询输入想要查询的姓名,如果存在该学生,则显示学生信息,不存在就提示该学生信息不 存在。图4-5姓名查询(不存在)J回姓名查询的运行效果如图4-5、4-6所示09 C;wi ndowssystefn32ond c亡姓-S 2请笹A学生姓名:未芸釜澆姓屯对应的信息?按沢诞返冋菜单按林键重新査找fC Aw I r dost
16、e m 1 md expfe名查询请樹入学生姓名:李明霞该学生信息为:学号,ie&ssi0ii2姓皂:李明霞 性别:女 语文,城禺敬数卷的英语:盯毛概泊耳电路基吐:弓 5概率i:沖依育:9T按扶键返回菜单浚廿渥至新査找图4-6姓名查询(存在)4.5显示全部学生信息显示学生信息的运行效果如图4-7所示9高级语言程序设计课程设计报告33 C;wi n dowsNsystem 3 2c m.d.cxc巒斤有学牛債巳初学辰性别用学号:141 easoi 01122 8概率论订5伍育:68 学号 iimeaseiem 5概率论:9申体育泊9 学号:1>I1GQ801I0112 5概率论:9
17、3依官:97 按礎返S菜单?姓定:李明霞性乳:女语文:鶉散数学:韓英语:田丰,槪;站电路基础:斗2语文書离散数学:勺名英语泊5毛慨刚电路基础订语文:96离散数堂.擔英语:97毛概:94电路基砂内11图4-7显示全部学生信息4.6统计学生信息数量lJ 回二Eg显示学生信息的运行效果如图4-8所示亟 C:wir dow ssystem 3 2crn d exe兰半件目酚曰.餾 1熱严斶'图4-8统计学生信息数量4.7学生信息排序学生信息排序采用的冒泡排序,排序成功后会提示返回菜单或者查看排序后的信息。学生信息排序的运行效果如图4-9、4-10所示±9 C :wi nd O'
18、;ssy&tern3 2citi d. exe製灘習菜单,按礙显示排序百的信息!图4-9学生信息排序S1 CAwmrfmvs'EyETpnT 八cmd.e*系缭所看学宅佃岂内;*学411600610112昨宪;李明貫 杵别;立 语戈;號囁散数学£0英S;97毛概汕申齢萃础;9 = 5秘率论:98依育;日711+16080101 22姓屯:洪学辰性别:勇语文:90弼散数学:他英® : 59毛概盯电路基础山 音嘅率论订5依育:歸学号:Rieoseioim姓皂:罡方林性剔:男 语文:恥署敦数学:滤英语怡5毛概:怕电路基础:孑5禮率论:生4体有:甜按共毎返回菜单T图
19、4-10显示排序后信息4.8修改学生信息输入需要修改的学号,如果不存在,会提示该学生信息不存在。否则删除旧信息,添加 该学生新的信息。修改学生信息的运行效果如图4-11所示C;wird ow5systf m ?f rmri, exe修改学生信息:请输人该学生的学号,系统会修改该学生所有信息!141闘阿趴斗1«除信愿成功1*HGOSQ1GH1 .杆子 男 9S 9? 96 9S 94 36 ?9器册按嗨就修改!馆tt入新的的学号磊,讨刖"成绩(或绩顺序依次为语文,离散数学:芙语毛概,电菇辜 础,概率论.伍育.若该科成绩无诘输入讥)(宇珞«分隔系统会自胡修改该学djs
20、 息!图4-11修改学生信息4.9删除学生信息输入学号,如果学号不是12位,提示学号错误,否则如果存在该学号信息,删除该学 生信息。删除学生信息的运行效果如图4-12所示09 C:w i nd owssy5te rn 3md exeI删除学生信忌谨楡入该華王M学孚系统会別隙该学生斯有,言倉!mGQS01Q122«除佶息成功按餐犍返回菜車按t»檢冃次删除f图4-12删除学生信息删除后的信息如图4-13所示33 C:Vwindowssy5tem 3Zcmd exe系统所有学生信息为:4誓号:1钳初8010112姓名:李明霞 生恥立 语文:9S离散数学:舲英悟:窗毛嘅:汕电賂基础
21、:9_ 5概率论:98体旨:97学号;1 *+16080101 41舛名:杆于N半别;男 语戈:98离骸鼓学;M吴诺:96毛概泊8电幣旱础:9耳 枫率论;躬体育;花 按乂握返回菜羊?图4-13删除后的信息5系统设计遇到的问题及解决方案问题1: C+的文件读写不会使用。百度查找C+文件读写的方法,通过不同的帖子学习有关文件操作的各种用法和小技巧。使用fstream头文件,定义fin文件输入流,fout文件输出流。通过使用文件流的方式读取或者写入文件。问题2:代码没有报错,但是运行结果出错。将出错的函数实现代码注释掉,改成在屏幕上显示一句话。根据这句话是否显示判断程 序是执行到什么地方出错的,再根
22、据具体的情况修改代码直到正确。问题3:程序运行后闪退,不提示任何错误。使用VS的调试功能,找到程序是执行到那个地方停止运行的,修改此处的代码直到程 序运行无误。问题4:不知道怎样删除文件中的指定数据,无法达到删除学生信息的功能。读取全部信息将不需要删除的信息存到临时的文件中,再将旧文件删除,修改临时文件为旧文件名,则文件中需要删除的信息已经删除。6总结与收获最初想做这个程序的起因是暑假打工夜班太无聊,所以萌生了自己做一个有点实用功能的小程序。因为在大一的时候看了一点 C+的书籍对C+面向过程的部分还算比较了解, 而且一直觉得C+的语法比C简单,所以本程序的代码都是用 C+写的。打工的时候没带
23、电脑,当时在网上找到一个手机上能用的编程软件,名字是c4droid功能非常强大,和VS2013在实际编写的主要是C语言C和C+的语一样可以显示出代码中的常见语法错误。最初构想的程序没有那么多的功能,时候感觉缺了一些功能不够完善再慢慢添加。 在编写的时候遇到过很多问题, 的知识掌握的还不够精通,像结构体和为文件的操作都是当时现学的,而且法出入比较大,当时都是需要使用某种功能的时候在网上查找帖子学习下是怎么用的然后根 据自己的需要写出适合的代码。 代码虽然能通过编译但是错误还是很多的,甚至有些时候都不知道错在什么地方,这是最头疼的地方。解决的方法就是把出现错误的函数里的代码注释 掉,让它只显示一句
24、话,慢慢查找是哪个代码段出了错误,最终解决了全部的问题。当时程 序的大致框架用了五晚上的时间编写完成,后面又陆陆续续的对程序中不理想的地方做了一些更改最终做出了一个理想的程序。 开学后课程设计就直接用的这个程序作为作业,但是又出现了新的问题,因为那时候是在手机上编写的代码,安卓系统使用的linux核心,代码中调用的system ()命令和电脑上 windoows系统的system ()命令不同,还有文件操作的路 径也要重新更改。更改完毕后又想添加一些新的功能而且最初的程序没有使用结构体,后来对结构体有了新的了解,就把程序又重新改写了一下。为了把程序做成一个能在其他电脑上 也能使用的软件,又在网
25、上学了 VS中对程序的打包,为了打包出一个理想中的安装包,找 了好多帖子用了一天的时间才打包出了一个正常的安装包,至此程序大功告成 通过这次程序的编写加深了我对 C+的理解,在程序的编写过程中又学习了很多新的知识, 高级语言程序设计课程设计报告明白了自己的短处在哪里,以后需要在哪个方向努力,认识了很多的不足。从中学习了很多, 收获了很多。动手是提升能力的有效方法,就像我在编写这个程序之前可能就比其他同学多 懂一点书上的知识。但在写代码的过程中遇到了很多问题,每解决一个问题,就多学了一些 知识,能力也有所提高。可能很多库函数我们不知道怎么用,比如你想要实现某一个功能, 你可以去网上找一下有关的帖
26、子,多找几个帖子可能就会找到大神的帖子教你怎么用库函数 去实现这些功能。最后总结一下,百度是万能的。15附录 学生信息管理系统源代码/*程序功能:1. 系统菜单显示2. 学生信息录入功能3. 学生信息浏览功能 4.查询:.学号查询 .姓名查询5.学生信息的删除与修改6. 系统中学生信息数量统计7. 学生信息排序(冒泡排序)作者:彭方林 班级:计算机科学与技术 1401学校:河南理工大学万方科技学院 日期: 2015年 11月11日 */ #include<iostream>/ 标准输入输出流头文件#include<stdlib.h>/system 函数头文件#inclu
27、de<string>/ 字符串头文件#include<fstream>/ 文件输入输出流头文件using namespace std;使用命名空间 std ifstream fin;/定义文件输入流 ofstream fout;/定义文件输出流 struct stude nt/定义学生信息结构体stri ng nu mber;/ 学号stri ng n ame;/ 姓名stri ng sex;/ 性别float grade7;/*float gradeO;/ 语文float grade1;/ 离散数学float grade2;/ 英语float grade3;/ 毛概f
28、loat grade4;/ 电路基础float grade5;/ 概率论float grade6;/ 体育*/ ;void inp ut_data( int n, i nt data_number)/学 生完整信息存入文件函数int i, j, k, m;stude nt s, s1;int find = -1;/find初始值为-1,代表未找到相同信息,若文件中已经存在此学生信息, 则find为0for (i = 0; ivn; i+)cout << "请输入学生的学号 姓名,性别,成绩(成绩顺序依次为语文,离散数学,英语,毛概,电路基础,概率论,体育。若该科成绩无,请
29、输入0)(空格键分隔!)" << endl;cin » s.nu mber >> s.n ame >> s.sex;for (j = 0; j<7; j+)/循环输入7门科目的成绩高级语言程序设计课程设计报告cin » s.gradelj;学生信息学生信息.txt");/打开文件if (fin.is_open()/判断文件是否能打开,若能打开,贝U函数返回值-1,否则返回0for (k = 0; kvdata_number; k+)/检查系统中是否已存在该学号fin >> s1. nu mber &g
30、t;> s1. name >> s1.sex;/从文件中读取学号,姓名,性别 for (m = 0; m<7; m+)fin >> s1.gradem;if (s.number = s1.number)/比较文件中读取的学号和要输入的学号是否一find = 0;/文件中存在该学生信息,find的值修改为0 system("cls");/ 清空屏幕cout << "此学生信息已存在,请进入菜单选择修改信息或者删除信息之后再添加!" << endl;if (find != 0)/文件中没有此学生信息
31、fin .close();/ 关闭文件学生信息 学生信息.txt", ios:a pp);if (fout.is_o pen()/检查文件能否打开fout << s.nu mber << " " << s.n ame << " " << s.sex << ""for (j = 0; j<7; j+)fout << s.gradej << " "/向文件中写入各项信息,中间以空格分隔,便于下次读取fout.
32、closeO;/ 关闭文件cout << "添加信息成功"<< endl;elsecout << "打开或写入文件失败!" << endl;elsecout << "打开文件失败! " << endl;void out pu t_data(i nt data_number)/学生完整信息读出文件函数int i, j;stude nt s;char ch;学生信息学生信息.txt");fflush(stdin);/清空输入缓冲区fin >> c
33、h;/从文件中读取一个字符if (fin.eof()/检查字符读取是否成功,若读取失败,eof函数返回-1,说明文件为空cout << "没有找到学生信息,请添加信息之后再试!" << endl;fin .close();elsefin .close();学生信息学生信息.txt");if (fin .is_o pen()cout << "系统所有学生信息为:"<< endl;for (i = 0; ivdata_number; i+)/ 输出所有学生信息fin >> s.nu mbe
34、r >> s.n ame >> s.sex;for (j = 0; j<7; j+)fin >> s.gradej;cout << "学号:"<< s.number << "" << " 姓名:"<< << "" << "性别:"<<<<s.sex << "" << "语文:&qu
35、ot;<< s.grade0 << "离散数学:"<< s.grade1 << "英语:"<< s.grade2"毛概:"<< s.grade3 << "电路基础:"<< s.grade4 << "概率论:"<< s.grade5 << "体育:"<<s.grade6 << en dl;fin .close();elsec
36、out << "没有找到学生信息,请添加信息之后重试!" << endl;void stude nt_nu mber_fi nd(stn ng nu mber_fi nd, int data_ nu mber)学 号查找函数int i, j;int find = -1;char ch;stude nt s;学生信息学生信息.txt");fin » ch;if (fin. eof()cout << "没有找到学生信息,请添加信息之后再试!" << endl;fin .close();学生信
37、息学生信息.txt");if (fin .is_o pen()for (i = 0; i<data_ nu mber; i+)fin » s.nu mber >> s.n ame >> s.sex;for (j = 0; j<7; j+)fin >> s.gradej;if (number_find = s.number)/文件中读取的学号,和要查找的学号相同find = 0;cout << "该学生信息为:"<< endl;cout << "学号:"
38、<< s.number << "" << " 姓名:"<< << "" << "性别:"<<s.sex << "" << "语文:"<< s.grade0 << "离散数学:"<< s.grade1 << "英语:"<< s.grade2<<&q
39、uot;毛概:"<< s.grade3 << "电路基础:"<< s.grade4 << "概率论:"<< s.grade5 << "体育:"<<s.grade6 << en dl;19break;/输出该学生所有信息并跳出循环,查找结束高级语言程序设计课程设计报告if (find != 0)cout << "未找到该学号对应的信息!" << endl;fin .close();else
40、cout << "系统中还没有此学号的信息!" << endl;void stude nt_n ame_fi nd(stn ng n ame_fi nd, int data_ nu mber)姓名查找函数int i, j;int find = -1;stude nt s;学生信息学生信息.txt");if (fin .is_o pen()for (i = 0; i<data_ nu mber; i+)fin » s.nu mber >> s.n ame >> s.sex;for (j = 0; j&l
41、t;7; j+)fin >> s.gradej;if (n ame_fi nd = s.n ame)find = 0;cout << "该学生信息为:"<< endl;cout << "学号:"<< s.number << "" << " 姓名:"<< << "" << "性别:"<< s.sex << "&q
42、uot; << "语文:"<< s.grade0 << "离散数学:"<< s.grade1 << "英语:"<< s.grade22高级语言程序设计课程设计报告<< "毛概:"<< s.grade3 << "电路基础:"<< s.grade4 << "概率论:"<< s.grade5 << "体育:"
43、 << s.grade6 << en dl;break;if (find != 0)cout << "未找到该姓名对应的信息!" << endl;fin .close();elsecout << "系统中还没有此姓名的信息!" << endl;void folder()/创建系统文件夹,每次运行程序都会查找文件夹和文件是否存在,若不存在则创建,防止程序中打开文件时打开失败学生信息,ios:in");if (!fin)/判断文件夹是否存在学生信息");/创建文件夹f
44、in .close();学生信息学生信息.txt", ios:i n);if (!fin)/判断文件是否存在学生信息学生信息.txt");/创建系统文件fout.close();fin .close();int stude nt_data_delete(stri ng nu mber_delete, int data_ nu mbeif/除学生信息函数int i, j;int find = -1;char ch;stude nt s;学生信息学生信息.txt");fin » ch;if (fin. eof()cout << "没有找
45、到学生信息,请添加信息之后再试!" << endl;fin .close();学生信息学生信息.txt");if (fin .is_o pen()for (i = 0; i<data_ nu mber; i+)fin » s.nu mber >> s.n ame >> s.sex;for (j = 0; j<7; j+)fin >> s.gradej;if (nu mber_delete = s.nu mber)/文件中读取的学号,和要查找的学号相同find = 0;fin .close();elseco
46、ut << "系统中还没有此学号的信息!" << endl;if (find = 0)学生信息学生信息.txt");fin >> ch;if (fin .eof()cout << "没有找到学生信息存档! " << endl;elsefin .close();学生信息学生信息.txt");if (fin .is_o pen()for (i = 0; i < data_ nu mber; i+)fin >> s.nu mber >> s.n ame
47、 >> s.sex;for (j = 0; j < 7; j+)fin >> s.gradej;if (nu mber_delete != s.nu mber)/如果学号和要删除的学号不同,将该学生信息存入学生信息1中学生信息学生信息1.txt", ios:a PP);if (fout.is_o pen() 23高级语言程序设计课程设计报告fout << s.nu mber << " " << s.n ame << " " << s.sex <<
48、; ""for (j = 0; j < 7; j+)fout << s.gradej <<II II.fout.closeO;elsecout << "删除过程出错! " << endl;fin .close();学生信息 学生信息.txt");/删除学生信息.txt学生信息学生信息1.txt",学生信息学生信息.txt");/将学生信息1.txt重命名为学生信息.txtcout << "删除信息成功"<< endl;elsec
49、out << "未找到该学号对应的信息!" << endl;elsecout << "系统中没有此学号信息"<< endl;retu rn find;int stude nt_data_number()/统计学生信息数量函数int j;stude nt s;int d = 0;/学生信息数量char ch;学生信息学生信息.txt");fin » ch;if (fin.eof()/如果文件为空,关闭文件fin .close();elsefin .close();学生信息学生信息.txt&
50、quot;);if (fin.is_open ()/判断文件打开状态函数while (fin >> s.number)/如果能读取到学号fin. seekg(-12, ios:cur);/将文件位置指针从当前学号尾部移动到学号之前,否则信息会读取混乱fin >> s.nu mber >> s.n ame >> s.sex;for (j = 0; j<7; j+)fin >> s.gradej;d+;/,读取成功,学生信息数量加一fin .close();return d;/返回学生信息数量 void stude nt_data_
51、modify()/学生信息修改int j;stude nt s;cout << "请输入新的的学号姓名,性别,成绩(成绩顺序依次为语文,离散数学,英语,毛概,电路基础,概率论,体育。若该科成绩无,请输入 0。)(空格键分隔!),系统会自动修改该学生信息! " << endl;cin » s.nu mber >> s.n ame >> s.sex;for (j = 0; j<7; j+)cin » s.gradej;学生信息学生信息.txt", ios:app);if (fout.is_o p
52、en ()/判断文件打开状态函数fout << s.nu mber << " " << s.n ame << " " << s.sex << " " << s.grade0 << "" <<s.grade1 << " " << s.grade2 << " " << s.grade3 << " &quo
53、t; << s.grade4 << " " << s.grade 5 << ""<< s.grade 6 <<II II.fout.close();cout << "修改信息成功"<< endl;elsecout << "打开或写入文件失败!" << endl;void stude nt_data_sort(i nt data_number)/学 生信息排序(冒泡排序)int i, j;25高级语
54、言程序设计课程设计报告stude nt s200, nu mber_max;学生信息学生信息.txt");if (fin .is_o pen()for (i = 0; i < data_ nu mber; i+)fin >> si. nu mber >> si. name >> si.sex;for (j = 0; j < 7; j+)fin >> si.gradej;fin .close();nu mber_max .nu mber = s0. nu mber;for (i = 0; i < data_ nu mbe
55、r - 1; i+) for (j = 0; j<data_ nu mber - 1; j+)if (sj. nu mber>sj + 1. nu mber)nu mber_max = sj;sj = sj + 1;sj + 1 = nu mber_max;学生信息学生信息.txt");if (fout.is_o pen()for (i = 0; i < data_ nu mber; i+)fout << si. nu mber << " " << si. name << " "
56、 << si.sex << " " << si.grade0<< ""<< si.grade1 << " " << si.grade2 << " " << si.grade3 << " " << si.grade4 << "" << si.grade 5 << " " << si
57、.grade6 << ""fout.closeO;cout << "排序成功! " << endl;elsecout << "打开文件失败,无法完成排序!" << endl;int main()system("color 5F");/改变程序窗口颜色为湖蓝色背景黑色文字char menu;stri ng nu mber_fi nd, n ame_fi nd;folder();/程序运行前,先创建系统文件夹和文件 menu:system("cls&
58、quot;);/在屏幕上显示采单信息cout << "欢迎使用信息查询系统,按数字键进入菜单选项。"<< endl;cout << "1.学号查询"<< endl;cout << "2.姓名查询"<< endl;cout << "3.添加学生信息"<< endl;cout << "4.删除学生信息"<< endl;cout << "5.修改学生信息&quo
59、t;<< endl;cout << "6.查看已存档的学生信息"<< endl;cout << "7.查看已存档的学生信息数量"<< endl;cout << "8.学生信息排序"<< endl;2高级语言程序设计课程设计报告menu _aga in:fflush(stdin);/清空输入缓冲区cin » menu;while (menuv'1' | menu>8)/当输入数值不在菜单范围内会提示输入错误cout <
60、;< "输入无效,请输入正确的数字!" << endl;fflush(stdi n);cin >> menu;system("cls");switch (int(menu) - 48)/将menu从字符型强制转换为整形case 1:char ch;int data_ nu mber;data_number= stude nt_data_number();/求出文件中已存在的信息数量确定查找学号时的循环次数nu mber:cout << "学号查询:"<< endl;cout <
61、;< "请输入12位学号:"<< endl;fflush(stdi n);cin >> nu mber_fi nd;stude nt_nu mber_fi nd(nu mber_fi nd, data_ nu mber);cout << "按*键返回菜单,按#键重新查找!" << endl;fflush(stdi n);cin >> ch;while (ch != '*'&&ch != '#')cout << "输入错误
62、,请输入*或#! " << endl;fflush(stdi n);cin » ch;system("cls");if (ch = '*')goto men u;/跳转到菜单elsegoto nu mber;break;case 2:char ch;int data_ nu mber;data_ nu mber = stude nt_data_ nu mber();n ame:cout << "姓名查询"<< endl;cout << "请输入学生姓名:&quo
63、t;<< endl;cin » n ame_fi nd;stude nt_n ame_fi nd(n ame_fi nd, data_ nu mber);cout << "按*键返回菜单,按#键重新查找!" << endl;fflush(stdi n);cin » ch;while (ch != '*'&&ch != '#')cout << "输入错误,请输入*或#! " << endl;fflush(stdi n);cin &
64、#187; ch;system("cls");if (ch = '*')goto menu;elsegoto n ame;break;case 3:int n;int data_ nu mber;char ch;data_ nu mber = stude nt_data_ nu mber();add:cout << "添加学生信息"<< endl;cout << "请输入所添加学生信息的数量"<< endl;fflush(stdi n);cin » n;inpu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 营销方案的论文大纲(3篇)
- 闻道纹绣营销方案(3篇)
- 项目施工风险应急预案(3篇)
- 主题教育使命担当-1
- 改性合成树脂装置操作工岗前安全宣教考核试卷含答案
- 罐头杀菌工岗前基础操作考核试卷含答案
- 水工混凝土维修工安全规程知识考核试卷含答案
- 电机制造工创新实践能力考核试卷含答案
- 碳化钨制备工岗前安全行为考核试卷含答案
- AIGC 与视觉营销设计课件
- 2026陕西西安市浐灞国际港交通大学附属中学陆港学校招聘考试备考题库及答案解析
- JJF 1221-2025 汽车排气污染物检测用底盘测功机校准规范
- 《工程造价指标分类及编制指南》附录A 房屋建筑工程
- 自闭症儿童早期识别
- 《西游记》与中国传统文化学习通超星期末考试答案章节答案2024年
- 民法典与生活同行宣传手册
- GB/T 15822.3-2024无损检测磁粉检测第3部分:设备
- DB50T 231-2024 城市桥梁养护技术规程
- 医共体信息化项目建设方案(技术方案)
- DB11T 500-2024 城市道路城市家具设置与管理规范
- 耳鼻喉科普小知识问答
评论
0/150
提交评论