1、C+课程设计1目录前言 41、 课程设计的目的及要求 51.1 课程设计的目的 51.2 课程设计的内容 51.3 课程设计的要求 62、 设计方案及具体实现 62.1 程序总的功能说明 62.2 总的设计思路及流程 62.3 系统功能的说明和设计及各模块流程图 .73、 调试及运行结果 133.1 主菜单 133.2 录入学生信息 133.3 显示学生信息 143.4 查询学生信息 153.5 统计学生信息 153.6 删除学生信息 153.7 修改学生信息 163.8 清理与退出 16C+课程设计24、 小结 16参考文献 17附录:程序代码 18C+课程设计3前言随着两周时间的过去,本次
2、的“学生成绩管理系统”课程设计也结束了。虽然只是两周时间,但是却让我对 C+有了新的认识和更深一步的了解。在这两周里,每天下午都坐在机房,对着电脑,看着自己编写的代码从少变多,从简单变复杂。心里都有种说不出的感觉,既希望能够快点写完,又害怕出现未知的错误。虽然其中出现很多错误,但是经过请教一些同学,上网百度或者翻看教科书,最终还是解决了这些问题,完成了任务。“C+程序设计”是大学本科计算机相关专业的一门非常重要的专业基础课。本课程的重点是 C+程序语言的选择、循环语句,数组,函数,指针,类与对象以及继承、多态等,给学生渗透程序与算法设计的基本思想与方法,难点是指针和面向对象的理解。为体现作为专
3、业基础课的“专业”和“基础”的特点,本次课程设计有两个方面的内容要在实践中落实:一、掌握 C+语言本身的语法与程序结构。二、掌握一定的算法与常用函数的编程实现,为后续课程打好基础。同时,我也希望自己可以在此次课程设计学习之后,可以更加熟练的运用C+基本语句,培养自己对于计算机编程的喜爱,对编程可以有更深一步的了解。C+课程设计41、 课程设计的目的及要求1.1 课程设计的目的C+课程设计是将 C+理论教学与实践环节相结合的关键步骤,通过该实践教学环节,使学生进一步学习和巩固 C+课程的核心内容,加深对面向对象程序设计思想的正确理解;并且熟练掌握 C+程序设计技能及上机调试方法,为今后学习其他专
4、业课程打好基础;并能具备一定的计算机程序设计能力,培养独立分析问题、解决问题及查阅资料、获取新知识的能力,以适应技术不断更新的计算机行业特点。1.2 课程设计的内容按照要求设计一个学生基本信息管理系统,实现对学生信息的综合管理。学生信息包括:学号、姓名、年龄、性别、家庭住址、联系电话、寝室号等信息。现要求编写程序来完成如下功能:(1)学生信息的输入包含功能:对输入的学号是否重复进行判断(学号唯一) ;对输入的是否为有效性别进行判断。(2)学生信息的显示(3)学生信息的查询包含功能:实现按“学号、姓名、性别、寝室号”等查询;若非法查询或未查到请给予提示。(4)学生信息的统计包含功能:统计学生的“
5、男生人数、女生人数、总人数” (5)学生信息的删除C+课程设计5包含功能:删除指定学号的学生信息;若无此记录,给予提示。(6)学生信息的修改包含功能:根据接收到的待修改的学生的学号,进行对相应信息的修改。(7)清理屏幕(8)退出1.3 课程设计的要求 (1)熟悉 VC+6.0 编译环境,熟练使用编译调试工具。(2)学习 C+输入输出流对象的使用。(3)通过系统分析和实现,掌握简单软件开发的一般过程。(4)以学生独立思考、解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,撰写课程设计报告。2、 设计方案及具体实现2.1 程序总的功能说明这是一个学生基本信息管理系统,通过本系统,可以实现对
6、学生信息进行学生信息的录入、学生信息的显示、学生信息的统计、学生信息的删除、学生信息的修改、清理屏幕和退出等功能,可以有效的对学生信息进行综合管理。学生信息包括:学号、姓名、性别、年龄、家庭住址、联系电话以及寝室号等信息。2.2 总的设计思路及流程在这个学生基本信息管理系统中,定义了函数 void getInfo()、void SaveTxt() 、void stuSaveTxt()、void showInfo()、void searchmenu()、void searchnum()、void searchname()、void searchsex()、void searchdormitory
7、()、void countmenu()、void altermenu()、void alterstudent()、void erase()、int huoqu(int i)、进行学生信息的C+课程设计6录入、保存、显示学生信息、按学号、姓名、性别、寝室号查询;统计学生信息、修改学生信息、删除学生信息等的实现,另外用函数实现了程序中的清屏和退出。在函数中,多次运用 switch(),do while()函数,使程序简单顺利的进行。当然,通过 menu()等的菜单函数,来实现功能菜单显示在运行窗口以提示用户如何进行操作。另外,主函数 main()中,不再是全部在一个函数中实现,而是通过对函数的调用
8、,让函数的功能进行实现。另外,在函数中也用了大量的清屏和退出函数,使整个管理系统更为合理和完善。2.3 系统功能的说明和设计及各模块流程图在本章中,主要是介绍各个功能函数的设计思路和实现方法。在整个管理系统中让用户的使用更加容易,使整个程序变得更为简便。整个管理系统的结构图如下:C+课程设计7录入学生信息C+课程设计8学生的录入信息函数中,通过对 getInfo()函数的调用,对学号、姓名、年龄、性别、家庭住址、联系电话、寝室号进行录入、保存。显示学生信息C+课程设计9在学生信息的显示中,通过对 showInfo()函数的调用,来显示所有的学生数据。其中包括所有学生的学号、姓名、年龄、性别、家
9、庭住址、联系电话、寝室号,显示成功后,又用 system(“pause“)来实现按任意键返回,可以返回到主菜单,再次进行选择。查询学生信息在学生的信息查询中,通过调用 searchmenu()来进行输入提示。具体操作中,通过调用 searchnum()、searchname()、searchsex()、searchdormitory() 分别以学生的学号、姓名、性别、寝室号进行查询,通过这些函数对学生的信息进行了筛选,使查询信息变得更为简单,也更省时间。通过 switch()函数,实现了查询的四种方法,也通过 system(“pause“)进行了程序的返回。统计学生信息在学生信息的统计中,统计
10、函数主要通过对 TXT 文件里面性别(sex)数据做统计,最后按照想要统计的输出统计的男生人数、女生人数、总人数的统计,同时输入任意键可以用 system(“pause“)来进行返回。C+课程设计10删除学生信息删除信息功能需要先调用查找学号位置函数,然后通过不读入要删除学号信息的方法,重新写入原来 TXT 文件里面实现删除功能。C+课程设计11修改学生信息修改函数主要是先通过输入的学号查找信息所在 TXT 文件所在的位置,然后再通过 void alterstudent()函数对学号,姓名,性别,年龄,家庭住址,联系方式,宿舍号的修改。清理屏幕清理屏幕通过 system(“cls“);函数实现
11、。C+课程设计12退出退出功能就是结束程序,通过 break 结束循环结束程序。3、 调试及运行结果3.1 主菜单主菜单显示了 1 录入学生信息,2 显示学生信息,3 查询学生信息,4 统计学生信息,5 删除学生信息,6 修改学生信息,7 清理屏幕,0 退出管理系统等功能选项及姓名联系方式等信息。3.2 录入学生信息在主菜单中选择 1,将出现输入学号,姓名,年龄,性别,地址,电话,寝室号等选项,输入完毕后,成功保存到电脑 D 盘中。若输入相同的学号,将C+课程设计13出现提示“重复学号” 。3.3 显示学生信息在主菜单中选择 2,系统将会自动显示 student.txt 文件中的内容。C+课程
12、设计143.4 查询学生信息在主菜单选择 3,将通过选择按学号查询,按姓名查询,按性别查询,按寝室号查询等选项,输入对应的选项将显示所查找的信息。以下是按学号查询:3.5 统计学生信息在主菜单选择 4,系统将会统计出来输入的男生人数,女生人数,总人数并显示。3.6 删除学生信息选择删除信息选项后,系统提示输入要删除的学号,输入回车即可删除学生信息。C+课程设计153.7 修改学生信息3.8 清理与退出选择退出管理系统后,程序将结束4、 小结经过不到两个星期的努力, “学生信息管理系统”终于做完了,这是第一次完成一个系统。学习的心态很关键,不懂了就要学着去用不同的方式去获取,补足自己,通过各种各
13、样的方式,学着去请教别人和别人交流,做到不懂就问。不可否认的是,这个系统并不是靠我一个人的能力完成的。我请教了很多同学,有时为了理解代码的含义,经常问同学或是上网查资料,并且老师给我们的模板对我的帮助也非常大,让我学会了使用#include 等文件的使用,在编程过程中有的错误提示自己实在想不通的就去百度上搜,网络给了我很多帮助。过程是有点儿浮躁的,有的时候为难的有点儿绝望,不过经过同学在一起讨论和自己的摸索,整个流程还是较为通顺的完成了。在做程序的过程中,因为太为频繁的使用 switch 语句 do-while 语句,有的甚至是 switch 中套着 switch,出错后再进行修改,很容易大括
14、号丢失或多余,这时程序提示的错误也就变得不准确了,即使知道是因为大括号导致的问题,也一时半会儿改不出来,浪费了很多时间。这种错误的原因还是因为自己对语C+课程设计16句不够熟练,以后的学习中要避免类似错误发生。另外,在刚开始做这个程序的时候,和老师的思路不是特别一样,自己也尝试着按照自己的想法做程序,但是导致自己两天都没有任何进展,最后又重新做了一遍。自己在对 C 语言的了解还不够多,只是皮毛,所以还不能轻松地运用自如,一些方面还是考虑的不够周全,这是我所欠缺的。虽然这次课程设计是在参考程序的基础之上进行的,但是我觉得对自己是一个挑战和锻炼。学习计算机是一个漫长的过程,当然有时也会很枯燥,甚至
15、在别人眼中是不可思议的。但是既然选择了这个专业,就努力脚踏实地学好,让它真正的为己所用。参考文献1. C+面向对象程序设计谭浩强 清华大学出版社2. 数据结构(C 语言版) 严蔚敏class Student /声明类 private : string num; string name; int age; string sex; string address; string phone; string dormitory; public :void getInfo();/录入void SaveTxt();/保存void showInfo();/显示void searchmenu();/查询菜单v
16、oid searchnum();void searchname();void searchsex();void searchdormitory();void countmenu();/统计void altermenu();/修改菜单void alterstudent();/修改void alterSaveTxt();void erase();/删除int huoqu(int i);/获取录入新的学生信息void Student:getInfo()C+课程设计18 coutnum;coutname;coutage;coutsex;coutaddress;coutphone;coutdormito
17、ry;couta;void Student:SaveTxt()fstream fout1(“f:student.txt“,ios:out|ios:app);if(!fout1)coutnumnamesexageaddressphonedormitory;if(num=“)break;coutNum;fstream fin(“f:student.txt“,ios:in);if (fin.fail()coutnumnamesexageaddressphonedormitory;if(num=“)C+课程设计20break;if(num=Num)coutName;fstream fin(“f:stu
18、dent.txt“,ios:in);if (fin.fail()coutnumnamesexageaddressphonedormitory;if(num=“)break;if(name=Name)coutSex;fstream fin(“f:Student.txt“,ios:in);if (fin.fail()coutnumnamesexageaddressphonedormitory;if(num=“)break;if(sex=Sex)coutDormitory;fstream fin(“f:student.txt“,ios:in);if (fin.fail()coutnumnamesex
19、ageaddressphonedormitory;if(num=“)break;if(dormitory=Dormitory)coutnumnamesexageaddressphonedormitory;if(num=“)break;if(sex=“男“)n+;elsei+;m+;fin.close();coutm;fstream fin(“f:student.txt“,ios:in);C+课程设计24if (fin.fail()coutnumnamesexageaddressphonedormitory;if(num=“)break;if(num=m)n+;return n;/删除void
20、Student:erase()int count=0,n;n=huoqu(1);fstream file(“f:student.txt“);string line;ofstream outfile(“d:in2.txt“,ios:out|ios:trunc);while(!file.eof() getline(file,line); if(count!=n-1)outfilenum;coutname;coutsex;coutage;coutaddress;coutphone;coutdormitory;/修改学生信息void Student:alterstudent()int count=0,
21、n;n=huoqu(2);fstream file(“f:student.txt“);string line,x;ofstream outfile(“f:in2.txt“,ios:out|ios:trunc);while(!file.eof() getline(file,line); if(count!=n-1)outfilea;return a;int main()Student stu;int c;doc=menu();switch(c)case 1:stu.getInfo();stu.SaveTxt();break;case 2:coutb;switch(b)case 1:stu.sea
22、rchnum();cout“按任意键返回“endl;break;case 2:stu.searchname();cout“按任意键返回“endl;C+课程设计28break;case 3:stu.searchsex();cout“按任意键返回“endl;break;case 4:stu.searchdormitory();cout“按任意键返回“endl;break;break;case 4:stu.countmenu();cout“按任意键返回“endl;break;case 5:stu.alterstudent();cout“按任意键返回“endl;break;case 6:stu.erase();cout“按任意键返回“endl;break;case 7:system(“cls“);break;while(c);return 0;