C++大学选修课系统设计-课程设计.doc_第1页
C++大学选修课系统设计-课程设计.doc_第2页
C++大学选修课系统设计-课程设计.doc_第3页
C++大学选修课系统设计-课程设计.doc_第4页
C++大学选修课系统设计-课程设计.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+大学选修课系统设计-课程设计C+大学选修课系统设计摘 要 由于选修课系统应用范围之广,版本各式各样,有优秀的,同时也有不好的。如何做出一个比较出众的选课系统,是对程序员的一种考验。通过分析得出,选择一种程序设计语言、一个开发平台和编程思想是至关重要的。本系统将从众多选课系统抽象出最基本的功能进行设计和开发。关键字:选课系统 学生端 管理端 目 录1.选修课系统概述1.1系统的主要任务1.2 基本要求1.3 主要功能1.4 设计方法及涉及知识点1.4.1 设计方法1.4.2 涉及知识点1.5 系统开发的目的2.系统分析2.1系统开发平台的选择2.2程序设计语言的选择2.3 操作平台3.总体设计3.1系统的结构图3.2系统的功能模块图3.3函数模块说明3.4系统运行界面赏析4.系统评价4.1系统的特点4.2系统的缺点4.3将来可能提出的要求5.总 结6.参考文献1.选修课系统概述 通过这一款选修课小系统,学生可以登入学生端进行选课及其他的操作,管理者通过登入管理端可以进行对选修课系统的数据的管理和维护。在学生端主要设置了3个基本功能:学生选课、学生情况、选课情况等;在管理端主要设置了9个基本功能:增加/删除学生、增加/删除课程、更改学分、填写成绩、学生情况、选课情况、保存数据等。这些功能基本上能满足选课的基本要求。此程序可以初步体现课程设计的目标。1.1系统的主要任务用VC+编写一个界面美观流畅学生选课系统。学生有名字,学生最多可学五门课程,学生实际学的门数,可以给定学生的名字,可以得到学生的名字,可以得到学生给定课程的成绩,可以得到学生所学课程的平均成绩,可以给学生增加一门课(同时在该课程中增加一个学生)。课程最多有30个学生,课程有实际学生数,课程有实际学生名单,课程有学分数,课程有每个学生成绩,课程可以得到学分数,课程可以设置学分数,课程可以得到班平均成绩,课程可以得到某个学生成绩。1.2 基本要求程序运行结果正确,操作方便,界面美观,逻辑层次清楚,程序结构合理,文档规范清晰。1.3 主要功能(1).学生端:有学生登入进行操作,此操作包括学生选课、查询学生及选课情况等(2).管理端:有管理员登入进行操作,此操作包括增加/删除学生、课程,填写成绩,更改学分,查询学生、选课情况,保存数据等1.4 设计方法及涉及知识点1.4.1 设计方法本选修课系统是采用面向对象的程序设计思想进行编制的,整个系统由若干个类、函数模块以及一个主函数组成。使用面向对象的程序设计方法是设计一个复杂的软件系统时,首要的问题是确定该系统是有哪些对象组成的,并且设计这些对象。11.4.2 涉及知识点涉及到的知识点有:类的创建和设计,函数模块的调用和嵌套,文件的基本操作等1.5 系统开发的目的 主要目的是:设计一个含有最基本功能的选修课系统,能符合基本的选课要求。850C+大学选修课系统设计系统开发平台的选择 好的开发平台会对程序设计起到事倍功半的作用!所以一定要选择好陈腐许设计语言、软件开发平台和操作平台.2.1 程序设计语言的选择选择C+程序设计语言,原因如下:1.C+允许数据抽象:这意味着程序设计员能创建新的类型来表达方便其应用程序的任何数据集合。2.C+支持面向对象的设计:在面向对象的设计中,程序设计员定义的类型在算法实现中起到中心作用。重要的是,正如允许面向对象的方法,C+允许使用自顶向下的方法,这也 是C程序设计员所熟悉的。3.C+便于代码重用及通用目的库的构造。这门语言包含了一个扩展的、有效的和方便的标准库。4.C+改进C语言几个麻烦和危险的方面。5.C+保持了作为C语言特点的效率。灵活性、通用性和高效性的结合,使得C+成为目前程序设计员最流行的选择之一。我们将发现。C+的数据抽象和面向对象的特性自然地实现了作为数据结构设计基础的普遍原理。22.2软件开发平台的选择选用Microsoft提供的Visual Studio套件里的Visual C+。因为Visual C+编程环境不仅是个非常优秀的编译器,而且还将面向对象的软件设计理念与可视化编程环境融为一体。还有在Visual C+上设计程序操作简单,程序通俗易懂。32.3 操作平台电脑名称:神舟新禧3300F品牌机操作系统:Windows XP2 (English Version)应用软件:Visual C+ 6.0 ,Visual Assist X 3.总体设计3.1系统的结构图3.2系统的功能模块图menu()custom()menu_1_1();menu_1_2();menu_1_3();menu_1_4();password()server()menu_2_1();menu_2_2();menu_2_3();menu_2_4();menu_2_5();menu_2_6();menu_2_7();menu_2_8();menu_2_9();menu_2_0();3.3 函数模块说明函数模块功能函数模块功能menu()选修课系统主界面和登入方式的选择custom()选修课系统学生端的主界面和操作方式的选择password()密码校验,校验管理者的登入密码是否正确server()选修课系统管理端的主界面和操作方式的选择menu_1_1()学生选课,由学生根据所给定的课程进行选课menu_1_2()学生情况,查看学生基本情况menu_1_3()选课情况,查看学生选课情况menu_1_4()退出系统,使用完毕即可安全退出menu_2_1()增加学生,新加入一个选课学生menu_2_2()删除学生,删除特定的选课学生menu_2_3()增加课程,增加选课课程menu_2_4()删除课程,删除选课课程menu_2_5()填写成绩,为每一门选修课添加学生成绩menu_2_6()更改学分,更改选课课程的学分menu_2_7()学生情况,查看学生情况menu_2_8()选课情况,查看选课情况menu_2_9()保存数据,修改完毕要保存数据到文件里去menu_2_0()退出系统,使用完毕即可安全退出3.4 系统运行界面赏析 主界面 选修课系统学生端操作C+大学选修课系统设计4 系统评价系统评价就是客观,公正的从各个方面评价系统的各项功能。本部分将具体从三方面阐述:优点,缺点以及将来可能提出的要求。4.1系统的特点(1)流程符合选修课系统的基本要求。(2)操作简单、方便。(3)系统扩充容易。由于资料有限,有很多地方还需要更好的完善。4.2系统的缺点(1) 界面不太美观、友好(2) 几乎是面向开发人员,而不是面向用户。输入信息不太方便(好多信息,系统不能进行异常处理)(3) 网络功能欠缺。本系统只能在单片机上运行,不能实现网络连接,资源共享。(4) 容错性不高。系统的抗错,容错性不高。这方面有待加强。(5) 没有良好的用户权限和密码限制以防止人为的破坏与盗窃数据资源。4.3将来可能提出的要求(1)网络化。系统能支持网络数据传输,数据共享;数据远程访问能自动采取一定的加锁策略;能支持多人网上选课和处理。(2)多媒体化。系统能够支持语音输入。5.总 结通过这次课程设计,使我受到了一次用专业知识、专业技能分析和解决问题的全面系统的锻炼。使我在综合知识的选用方面,在应用软件开发的基本思想、方法方面,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步。为日后成为合格的应用型人才打下良好的基础。这次在指导老师的帮助下,在同学的帮助下,基本上完成了设计任务,在软件的设计方面也有了一定的提高,熟练掌握了VISUAL C+编程技巧,为今后走上工作岗位打下了专业基础。 在这次的课程设计中,让我深深地体现到进行软件开发不是一件简单的事情,它需要设计者具有全面的专业知识、缜密的思维、严谨的工作态度以及较高的分析问题、解决问题的能力,而我在很多方面还有欠缺。最后,我要衷心感谢老师在我的设计过程中给予我的极大帮助,使我能够及时、顺利地完成此次的课程设计。同时,也要感谢我的指导老师和同学们及实习企业在本系统的设计过程中给予我的支持和帮助。 6.参考文献1.潭浩强 C+程序设计 清华大学出版社 2004.52.Robert L.Kruse Alexander J.Ryba 著 钱丽萍(译) C+数据结构与程序设计 清华大学出版社 2004.113.梁普选 Visual C+程序设计与实践 清华大学出版社&北京交通大学出版社 2005.8C+大学选修课系统源代码/头文件#include #include #include #include #include #include #include /定义课程struct course /某个学生所学的课程中的某一个char cname20; /课程名称float grade; /课程成绩course *Next; /指向下一个课程的指针;/学生类class student public: student() root = NULL; const maxcourse = 5; factcourse = 0; void readname(char N ); /读入学生的姓名 void getname(char N); /得到学生的姓名 void wrecourse(char N,float score); /要据课程名写入学生课程的成绩 float average(); /学生课程的平均成绩 void addcourse(char N,float g); /给学生增加一门课 int findcourse(char N); /查找是否已有此课程,如果有返回1,如果没有返回0 int retfactcourse() return factcourse; /得到所学的课程数目 course *retroot() return root;/利用键表将所有的课程保存起来 int retmaxcourse() return 5;/得到最多可学的课程数目 void clrroot()/清零 root = NULL; factcourse = 0; student() private: char sname20; /学生的姓名 int maxcourse; /学生最多可以学五门课程 int factcourse; /学生实际所学的课程数目course *root; /课程的根结点指针;void student:readname (char N)strcpy(sname,N);void student:getname(char N)strcpy(N,sname);void student:wrecourse(char N,float score)course *p = root;if(p=NULL) return;if(p!=NULL) p = p-Next;while(p)if(strcmp(p-cname,N)=0)p-grade = score;p = p-Next;float student:average()float aver=0.0; course *p = root;while (p)aver = aver+p-grade;aver = aver/factcourse;return aver;void student:addcourse (char N,float g)course *s = new course;s-Next=NULL;if(root = NULL)root = s;course *p = root; course *newcourse = new course;newcourse-Next = p-Next;p-Next=newcourse;strcpy(newcourse-cname,N);newcourse-grade = g;factcourse+;int student:findcourse (char N)course *p = root; if(root=NULL)return 0;p = p-Next;while(p)if(strcmp(p-cname,N)=0) return 1;p = p-Next;return 0;/struct studentdbstudent stu;studentdb *Next;struct studentnamechar tname20; /学生的名字float result; /学生所得的该课程分数studentname *Next;/课程类class subject public: subject() first = NULL; maxstudent=30; activestudnet=0; float readcredit();/得到课程的学分 void getcredit(float a);/设置学分 float getaverage();/得到学生的平均成绩 float getresult(char N);/查找某个学生的成绩 void getkname(char N);/读出课程的名称 void setkname(char N);/读入课程的名称 studentname *retfirst() return first;/返回根结点 void findstudent(studentdb *P); /根据该课程的名称,寻找选这课程的学生 int retactivestudent() return activestudnet;/返回实际学生数 int retmaxstudent() return 30;/返回最多学生数30 void clractivestudnet() activestudnet = 0;/从文件中读出来后将实际学生数清零 private: int maxstudent;/最多学生数int activestudnet;/实际学生数 studentname *first;/学生名单float credit;/该课程的学分float averagerusult;/该课程的平均成绩char kname20;/该课程的名称;float subject:readcredit ()return credit;void subject:getcredit (float a)credit=a;float subject:getaverage()C+大学选修课系统设计float k = 0.0;studentname *p;p=first-Next;if(p=NULL) return 0;while(p)k = k + p-result;p = p-Next ;return k/activestudnet;float subject:getresult (char N)studentname *p;p = first;while(p)if(strcpy(p-tname ,N)=0) return p-result;p = p-Next ;return -1;void subject:getkname (char N)strcpy(N,kname);void subject:setkname (char N)strcpy(kname,N);void subject:findstudent(studentdb *P)studentname *newcode = new studentname;newcode-Next=NULL;first = newcode;studentname *T = first;studentdb *K = P-Next;while(K)course *Y = K-stu.retroot();if(Y =NULL)K = K-Next;continue;if(Y!=NULL) Y = Y-Next;while(Y)if(strcmp(Y-cname,kname)=0)studentname *Acode = new studentname;char Name20;K-stu.getname(Name);strcpy(Acode-tname,Name);Acode-result = Y-grade;Acode-Next = T-Next;T-Next = Acode;activestudnet = activestudnet + 1;break;Y = Y-Next;K = K-Next;return ;/void tuichu()system(cls);coutnnttt谢谢你使用选修课小系统t再见nnendl;coutnt 如果你觉得此软件有修改及补充之处,请按以下方式联系我们, nt提出你的宝贵意见.我们将不断地改进并及时的公布新版本。谢谢!nnendl;couttt联系方式:n tt 姓名:郑德锋nn tt 电话n tt Email:cyan_nn tt 学校地址:莆田学院36号0443信箱t邮政编码:351100nnnendl; getch(); exit(-1);/总菜单char menu()int k=0;char a3,c,i;system(cls);coutendlendl; coutttttC+课程设计课题nnendl;couttt*n tt* *n tt* 选修课小系统 *n tt* *ntt* *ntt* 操作方式: *ntt* 1.选修课系统学生端 *n tt* *ntt* 2.选修课系统管理端 *n tt* *n tt*nendl;while(1)couta;if(strlen(a)=1) for(i=1;i=2;i+) c=i; if(c=a0) return c; cerrnntttt输入有误!n2) system(cls); cerrnnntt提示:错误输入次数超过三次,你将被强制退出!nnendl;couttt按任意键继续endl;getch();tuichu(); /选修课系统端操作char custom()char A10;char b;C+大学选修课系统设计char i;int k = 0;system(cls);coutnnnttn tt ntt 选修课系统学生端 n tt ntt 操作方式: ntt 1.学生选课 n tt 2.学生情况 ntt 3.选课情况 ntt 4.退出系统 ntt nttnendl; while(1) coutA;if(strlen(A)=1) for(i=1;i=4;i+) b=i; if(b=A0) return b; cerrntttt输入有误!n2)system(cls);cerrnnttt提示:错误输入超过三次!你将被强制退出!nendl;couttt按任意键继续endl;getch();tuichu();char server()char A10;char b;char i;int k = 0;system(cls); coutnnn ttn tt n tt 选修课系统管理端 ntt ntt 操作方式: n tt 1.增加学生 2.增加课程 n tt 3.删除学生 4.删除课程 ntt 5.填写成绩 6.更改学分 ntt 7.学生情况 8.选课情况 ntt 9.保存数据 0.退出系统 n tt nttnendl; while(1) coutA;if(strlen(A)=1) for(i=0;i=9;i+) b=i; if(b=A0) return b; cerrntttt输入有误!n2)cerr错误输入超过三次!n;exit(-1);/密码检查void password()int k=0,i;char A=0411200;char B10;char a;system(cls);for(i=0;i8;i+)coutendl; while(k=2) printf(ttt请输入管理员密码:);i=0;while(1)a=getch();if(a=13)break;Bi=a;i+;printf(*);Bi=0; if(strcmp(A,B)=0) return;else k+;cerrnnttt密码输入错误!请重新输入!n=3) system(cls);cerrnnttt输入错误密码超过三次!请按任意键退出.endl;getch();tuichu();/struct subjectdbsubject sub;subjectdb *Next;int menu_2_7(studentdb *P);int menu_2_9(studentdb *Y,subjectdb *P);int menu_2_8(subjectdb *P);/学生端功能函数int menu_1_1(studentdb *P,subjectdb *X) /学生选课system(cls);coutnntttt学生选课操作Next;int i;char N20,M20;if(q!=NULL) coutnnntt所有学生名单如下:nendl;else cerrnnntt对不起,暂时没有学生名单!请按任意键继续.stu.getname(N);coutttttN;coutNext ;C+大学选修课系统设计q = P-Next;if(q=NULL) return 1;coutN;i=0;q=P-Next;while(q)q-stu.getname(M);if(strcmp(N,M)=0)i+;q = q-Next;int j=0,k=1;if(i=0)coutnntt没有这个学生! 请按任意键返回.1)coutnntt共找到i个姓名为N的学生endl;coutk;if(ki|k=0) cerrnttt输入有误!按任意键继续Next;j=0;while(q)q-stu.getname(M);if(strcmp(N,M)=0) j+;if(j=k)if(q-stu.retfactcourse()=q-stu.retmaxcourse() coutntt所选课程已满!按任意键继续Next;char N120;system(cls);if(t!=NULL) coutnnntt所有课程如下:endl;coutntttt课程名称tt 学分endl;else cerrnnntt对不起,暂时没有课程sub.getkname(N1);couttttt N1setw(26-strlen(N1)sub.readcredit()Next ; char N220;coutN2;t = X-Next; while(t)t-sub.getkname(N1);if(strcmp(N1,N2)=0)if(q-stu.findcourse(N2)=1) coutntt此课程你已选过了,不能再选.按任意键继续Next;char NA20;while(t)t-sub.getkname(NA);if(strcmp(NA,N2)=0)if(t-sub.retactivestudent()=t-sub.retmaxstudent ()coutntt此课程已选满,不能选.按任意键继续Next;q-stu.addcourse(N2,0.0);coutnntt选课成功!按任意键继续Next;cerrntt没有此课程!按任意键继续Next;return 1;int menu_1_2(studentdb *P,subjectdb *X) /学生情况studentdb *q=P-Next;char N20;system(cls);coutnntttt学生情况操作endl;int i;if(q!=NULL) coutnnntt所有学生选课信息如下:nendlendl; couttt 姓名ttt选课情况nendl;else cerrnnntt对不起,暂时没有学生名单!请按任意键继续.stu.getname(N);couttt Nsetw(25-strlen(N) 已选 stu.retfactcourse() 门课 Next ;char M20;coutM;i=0;q=P-Next;while(q)q-stu.getname(N);if(strcmp(N,M)=0)i+;q = q-Next;int j=0,k=1;if(i=0)coutnttt没找到这个学生!请按任意键继续.1) coutntt共找到i个姓名为M的学生endl; coutk;C+大学选修课系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论