1、2.3删除函数 此函数实现的功能主要是,删除一个学生的信息。在此函数中,先以读的方式打开文件,读出文件里的信息在显示在屏幕上,用户再根据提示信息输入想要删除第几个人的信息,关闭文件。再以写的方式打开文件,以一个if条件语句控制,再重新将学生信息写入文件(除了打算删除的那个学生的信息),由于是以写的方式打开的文件,所以文件里原有的输入就都没有了,存入的新的数据。2.4修改函数 此函数实现的功能主要是,修改一个学生的信息。此函数的设计方法和删除函数的设计思想相类似,应用的思想都是将学生信息重新写入文件的方法,将原有数据覆盖。2.5查询函数 在查询功能中,可以按多条件查询,本系统分为两个查询条件,即
2、按学号查询和按姓名查询。使用if语句来选择查询条件。 2.5.1按学号查询 根据提示信息输入学号后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的学号和输入的学号相等,则输出该学生的信息,由于学生的学号是唯一固定的,所以并使用break语句跳出循环。 当无查询结果时,会输出一条提示信息“无此人信息!” 。 2.5.2按姓名查询 根据提示信息输入姓名后,然后使用一个for循环语句,从第一个学生开始检索,如果该学生的姓名和输入的姓名一样,则输出该学生的信息,由于学生的姓名有可能重复出现,所以不能使用break语句跳出循环,应该从第一个学生开始检索直到最后一名学生。2.6显示函数 此
3、函数实现的功能主要是,显示所有学生的信息。先是从文件中读取学生信息,然后在输出到显示窗口中。用一个for循环语句,来把所有学生的信息都输出。2.7退出系统 当输入“0”时,就能退出系统,这是通过while语句来控制实现的。3调试及运行结果3.1 主菜单3.2创建或录入学生信息3.3修改学生信息3.4删除学生信息3.5浏览学生信息3.6查找学生信息3.7登记成绩3.8修改成绩3.9查看成绩单3.10查看某个学生成绩总结4.1遇到的问题及解决方法 首先,是对文件的处理不够熟练,通过看书和搜集一些资料解决了这个问题;其次,是在编写程序的过程中出现了一些语法错误,后通过调试逐一解决。4.2收获和体会此
4、次c+面向对象课程设计,在指导教师的精心教导下,我们学会了如何用C+编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的菜单界面,将各个功能集中出现在主菜单中,便于调用。根据C+课程所学的概念、理论和方法,按照C+程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C+语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。参考文献 1元芳,王亮编著c+程序
5、设计,北京,清华大学出版社,2013年。附录#includeiostreamiomanip/它是I/O流控制头文stdio.hstdlib.h/包含了C语言的一些函数string.h# define SPACE using namespace std;struct studentRecord char stuNo20; char name20; int age; float Math; float English; float Physics; float total;*p;void shujucharu ();/数据插入void shujuxiugai ();/数据修改void shujus
6、hanchu ();/数据删除void shujuliulan ();/数据浏览(按学号排序)void chengjidengji ();/学生成绩登记void chengjixiugai ();/学生成绩修改void viewTable ();/学生成绩查看(按成绩排名)void inquiry ();/成绩查询void write ();/文件写入void read ();/文件读取int line ();/文件中记录学生的数目int i,n;bool y;void main() int a,b; coutSPACE-欢迎登陆学生成绩管理系统-endlendl;请选择功能模块:= cout
7、 1 创建或录入学生信息 couta; system(cls); if(a=1|a=0) y=1; if(y=0) cout请先录入学生信息,才能进行下面的操作!a=1;y=1; while(a) switch(a) case 1: shujucharu(); break; case 2: shujuxiugai (); case 3: shujushanchu (); case 4: = 1、按学号排序浏览 2、按成绩排序浏览 3、退出 - cinb;system( while(b!=3) switch(b) case 1: shujuliulan(); case 2: viewTable(
8、); default:请输入1-3之内的数! coutk; cin ; break; case 5: inquiry (); case 6: chengjidengji(); case 7: chengjixiugai (); case 8:查看成绩单break; case 9: default:输入无效,请输入0-9之内的数! 按任意数字键返回菜单界面. cin /1.文件写入void write () FILE * fp; if(fp=fopen(stu.txt,w)!=NULL) for(i=0;in;i+) fprintf(fp,%s %s %d %f %f %f %fn,pi.stu
9、No,pi.name,pi.age,pi.Math,pi.English,pi.Physics,pi.total); fclose(fp); else printf(文件打开或创建发生错误。n/2.文件读取void read ()r=NULL) n=line(); p=new struct studentRecord n; for(i=0; fscanf(fp,%s %s %d %f %f %f %f,pi.stuNo,pi.name,&pi.age,&pi.Math,&pi.English,&pi.Physics,&pi.total);文件打开或创建发生错误!/3.文件中记录学生的数目int
10、 line () char c; int h=0; FILE * fp; while(c=fgetc(fp)!=EOF) if(c=n) h+;文件打开或创建发生错误n return h;/4.成绩查询void inquiry () read(); char b20; int m;请选择查询方式1.学号查询2.姓名查询m; if(m=1|m=2) if(m=1) cout for(i=0; if(strcmp(pi.stuNo,b)=0) cout 学号:pi.stuNo 姓名:pi.name 年龄:pi.age 数学:pi.Math 英语:pi.English 物理:pi.Physics 总
11、分:pi.total break; if(m=2)请输入姓名进行查询: if(strcmp(pi.name,b)=0) cout 输入错误,请输入1或2/5.数据插入void shujucharu ()a+=NULL)/以追加方式打开stu.txt文档 int n;请输入需要插入的学生数目:/建立新节点 if(n=0)没有进行数据插入 for(int i=0; cout请输入插入的第i+1个学生的学号: /输入pi.stuNo;pi.name;pi.age; pi.Math=0; pi.English=0; pi.Physics=0; pi.total=0;i+) /输出,pi.stuNo,pi.name,pi.age, pi.Math,pi.English,pi.Physics,pi.total); delete p;/程序用delete 删除数组并释放内存文件打开或创建时发生错误.n/6.数据修改void shujuxiugai ()请输入需要修改信息学生的学号: /按学号查找进行修改 for(i=0; if(strcmp(pi.stuNo,b)=0) / 判断字符串b和字符串pi.stuNo是否相等该学生原始信息如下:t姓名:数学成绩:英语成绩:pi.English 物理成绩:总分:请重新输入该学生的信息:修改
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1