资源描述
程序程序设计设计基基础课础课程程设计报设计报告告学生选修课管理系统学生选修课管理系统专专 业业: : 电电子信息工程子信息工程 班班 级级: : 2007 级级 1 班班 学学 号:号: 2007082024 姓姓 名:名: 孙孙 晓晓 东东 指指导导教教师师: : 常常 耀耀 辉辉 二二 OO 八八 年年 六月三十日六月三十日- 1 -目目 录录一、一、 编程目的:1二、二、 设计要求:1三、三、 函数主体说明:.1四、四、 运行结果.9五、五、 流程图:.10六、六、 总结:10参考数目:11一、一、编程目的:编程目的: 建立一学生选修课选课管理系统,并对它进行输入、输出、查询、选课等操作。二、二、设计要求设计要求:1.系统以菜单方式工作2.课程信息录入功能(课程信息用文件保存)输入3.课程信息浏览功能输出4.查询功能:(至少一种查询方式)算法5.按学分查询6.按课程性质查询7.学生选修课程(可选项)- 2 -三、三、函数主体说明函数主体说明:#include#include#include#includeusing namespace std;class Coursepublic: void input()coutnumber; coutcourse_name; coutcourse_kind; couttotal_time; coutlearn_time; couttime; coutcredit_hour; coutcourse_time; void input_1(ifstream &ji) / 输入别名引用输入别名引用jicourse_namecourse_kind total_timelearn_timetimecredit_hourcourse_time; void display()coutnumbersetw(12)course_namesetw(5)course_kindsetw(10)total_timesetw(10)learn_timesetw(10)timesetw(13)credit_hoursetw(12)course_timeendl;void display(ofstream &jb) / 输出别名引用输出别名引用jbnumbersetw(10)course_namesetw(5)course_kindsetw(5) total_timesetw(5)learn_timesetw(5)timesetw(5)credit_hoursetw(10)course_timeendl; friend class Class_array;private:int num; / 学号学号- 3 -int number; / 编号编号char course_name40; / 课程名称课程名称char course_kind10; / 课程性质课程性质int total_time; / 总学时总学时int learn_time; / 授课学时授课学时int time; / 实验或上机学时实验或上机学时int credit_hour; / 学分学分char course_time40; / 开课学期开课学期;class Studentpublic: void input()coutnum;coutname; void input_1(ifstream &ji)jinumname; void display()cout学号学号:numsetw(14)姓名姓名:nameendl; void display_1(ofstream &jb)jbnum name(pb+i)-num; if(pb+i)-num=-1) break; else ji(pb+i)-name;L+; ji.close(); Class_array(int a) / 建立学生课程建立学生课程 Course 数组数组 int i;L=0;ji.open(course.txt,ios:in);p=new Course30;for(i=0;i+) ji(p+i)-number;if(p+i)-number=-1) break;else (p+i)-input_1(ji); L+; ji.close(); Class_array(int a,int b) / 建立学生已选课的建立学生已选课的 Course1 数组数组 int i;L=0;ji.open(course1.txt,ios:in);p=new Course20;for(i=0;i+)ji(p+i)-num;if(p+i)-num=-1) break;else ji(p+i)-number;(p+i)-input_1(ji);L+;ji.close();- 5 - void display() / 输出输出 Student 数组数组 int i;for(i=0;idisplay(); void display_1() / 输出输出 Course 数组数组 int i; cout编号编号 课程名称课程名称 课程性质课程性质 总学时总学时 授课学时授课学时 实验或上机学实验或上机学时时 学分学分 开课学期开课学期endl; for(i=0;idisplay(); void input() / course 课程信息录入功能课程信息录入功能,b 调用调用 (p+L)-input(); / 在数组最后增加数据在数组最后增加数据 L+; void find_credit_hour() / 按学分查询按学分查询 int k,i;coutk;for(i=0;icredit_hour=k)(p+i)-display(); void find_course_kind() / 按课程性质查询按课程性质查询 char a20;int i;couta; for(i=0;icourse_kind,a)=0) (p+i)-display(); void find(Class_array &c) / 按学生选修课程查询按学生选修课程查询 int k,i;Course *b=c.p;coutk;for(i=0;inum=k)(pb+i)-display(); cout编号编号 课程名称课程名称 课程性质课程性质 总学时总学时 授课学时授课学时 实验或上机学时实验或上机学时 学分学分 开课学期开课学期endl; for(i=0;inum=k) (b+i)-display(); Course find_number() / 按课程编码查询按课程编码查询,b 调用调用 int k,i;coutk;for(i=0;inumber=k) break; return *(p+i); int total_credit(int i) / 计算某学生的总学分计算某学生的总学分,c 调用调用 int k,j=0;for(k=0;kL;k+) if(pk.num=i) j=j+pk.credit_hour;return j; void choose(Class_array &b) / 选课程序选课程序,c 调用调用 int i,k; Course p1; couti; b.display_1(); for(;) p1=b.find_number(); / 选课选课p1.num=i; / 将学号填到数据中将学号填到数据中pL=p1; / 将节点填到将节点填到 c 链表中链表中L+; k=total_credit(i); / 计算学号为计算学号为 i 的总学分的总学分 if(k=8) cout请继续选课请继续选课;- 7 -else cout你的学分已超过你的学分已超过 8 分分!endl; break; void save() / student.txt保存文件函数保存文件函数 int i,k=-1;jb.open(student.txt,ios:out);if(!jb) cout错误错误endl;exit(1); for(i=0;idisplay_1(jb); jbk; jb.close(); void save_1() / course.txt保存文件函数保存文件函数 int i,k=-1;jb.open(course.txt,ios:out);if(!jb) cout错误错误endl;exit(1); for(i=0;idisplay(jb); jbk; jb.close(); void save_2() / course1.txt保存函数保存函数 int i,k=-1;jb.open(course1.txt,ios:out);if(!jb) cout错误错误endl;exit(1); for(i=0;iL;i+) jbnumdisplay(jb);- 8 - jbk; jb.close(); private: Course *p; / Course 数组地址数组地址 Student *pb; / Student 数组地址数组地址 ifstream ji; / 输入流输入流 ofstream jb; / 输出流输出流 int L; / 长度长度;int main() Class_array a,b(1),c(1,2); int i,j;cout-学生选修课课程系统设计学生选修课课程系统设计-endl;for(;)cout1 新课程信息输入新课程信息输入 2 课程信息浏览课程信息浏览 3 查询功能查询功能 4 选课选课 5 结束结束endl;couti;if(i=1)cout-新课程信息输入新课程信息输入-endl;b.input();else if(i=2)cout-课程信息浏览课程信息浏览-endl; b.display_1();else if(i=3)cout-查询功能查询功能-endl;cout1 学分查询学分查询 2 课程性质查询课程性质查询 3 学生选修课程学生选修课程endl;coutj;if(j=1) cout-学分查询学分查询-endl;b.find_credit_hour();else if(j=2) cout-课程性质查询课程性质查询-endl;b.find_course_kind();else if(j=3) cout-学生选修课程学生选修课程-endl;a.find(c);- 9 -else if(i=4)c.choose(b);else if(i=5)break;else cout无效输入无效输入endl; a.save(); b.save_1(); c.save_2();return 0;四、四、运行结果运行结果- 10 - 五、五、流程图:流程图:- 11 -开始选择功能课程信息浏览选课查询功能课程录入结束输入课程信息浏览以选课程信息浏览进行选课123455555六、六、总结总结: 刚开始选题的时候就觉得这题有点难度,觉得不怎么好入手。首先是以菜单方式展开,就觉得怎么这么难。做的时候,就觉得更难了。其次是把一些以前分开再的小题目合起来,就觉得又难了许多。从未编过这样的程序,就觉得仅这个就挺吓人的。其中,有些函数就没应用过,比如那输入/输出引用函数,见都没见过,幸好有师兄们的帮忙,才能把程序弄完,这也觉得自己什么也没学懂,也是我觉得自己与别人的差距,通过这次的设计我也觉得自己又有一点新的收获,也了解了为什么学这门课程了,对其有了新认识。在做程序设计前还必须把书本上的基本知识搞懂,程序设- 12 -计会用到书中的类做,对类的理解也不是很到位,一些概念的知识还没有很好的理解,所以还需要借助书中的知识来加深对类的理解。 通过对其的编程,也理解了类这个新名词在程序中的重要性。也知道了C 与 C+的重大区别,C+更使编程人员有了一个好的工具进行编程。总之,此次的程序设计是我们对系统(程序)设计的技巧、系统分析和类等许多知识的综合应用,大大提高思维了能力,为毕业设计和以后的工作打下了一个良好的基础。工程完成时间:2008-6-28 孙晓东 电信 07参考数目参考数目 【1】谭浩强, C+程序设计 ,清华大学出版社,2006 年。
展开阅读全文