《c++大学选课系统课程设计课程设计》由会员分享,可在线阅读,更多相关《c++大学选课系统课程设计课程设计(27页珍藏版)》请在金锄头文库上搜索。
1、C+大学选课系统课程设计-课程设计C+大学选课系统课程设计 目录第一章 课程设计目的2第二章 课程内容设计和要求3第三章 源代码14第四章 运行结果38第五章 结束语52第六章 参考文献53 第一章 课程设计目的1. 目标 选课系统开发的目标是实现学生选课信息关系的系统化、规范化和自动化。 2. 系统技术 学生选课系统要求具有信息处理的开发性,方便教师上传学生成绩、学生上网选课和查询选课信息及成绩等,因此本系统设计为基于WWW的网络数据库应用系统,使用ASP脚本以Access为数据库的开发技术,运行在支持ASP的服务器上。 3. 基本设计概念和处理流程 采用基于SQL Server的分布式数据
2、库管理系统。三层结构是目前用得最多的,这种结构比传统的C/S结构增加了一个应用程序服务器,应用程序服务器包括了统一的界面、业务规则和数据处理逻辑等等,这样客户端程序就可以做得比较小,也就是常说的瘦客户。更由于业务规则和数据处理逻辑的集中在服务器上统一管理,客户端无须进行复杂的计算,也不会因为错误的操作而影响到其他的用户,所以可靠性、稳定性和效率都比较好。(其结构如图) 4. 用户的特点 为保证系统安全高效地运行,本系统把用户划分为3类:教务处、教师和学生。不同的用户在系统中的作用和权限也有所不同,所以它所需要完成的功能也就不同。 (1)教务处可以完成本系统所有的功能 学生信息管理:除学生基本信
3、息外,还可管理学生所选课程、成绩等。 教师信息管理:包括教师个人的基本情况和任课情况。 项目及班数的设定:根据学校教务处所排课进行班级数及人数的统计,然后根据统计结果进行项目及班数的设定。 排课:根据上一步分班情况安排任课教师。 报表生成及输出:生成教师担任课程分班表、按项目生成学生成绩表、按学生行政班生成成绩表及所有报表的输出。 (2)教师在本系统的功能 查询学生选课情况、自己任课情况、获取自己所担任课程分班表、录入及修改成绩等。 (3)学生在本系统的功能 查询本人信息、教师任课信息、选课、选课信息查询、成绩查询。 第二章 课程内容设计和要求二、需求规定 (一)对功能的规定 1. 可实现学生
4、选课注册。 2. 方便实现学生选课信息查询。 3. 可对学生成绩档案进行管理,成绩表单生成简便。 4. 安全有效的用户区分,管理。 5. 档案数据的高安全性,保密性。 6. 有帮助文档 (二)对性能的规定 使用稳定,操作性能好,操作方法易于掌握,系统的安全性强。 三、设计思想 用户的需求具体表现在对各种信息的提供、编辑、处理及查询统计上。这就要求数据库结构能充分满足各种信息的输入、处理和输出。通过分析学生选课管理系统的现实需求,学生选课管理系统各环节的基本数据及数据处理流程,在与管理人员沟通、交流与探讨的基础上,得到以下学生选课系统的数据流程图。3运行环境该程序的运行环境为Windows XP
5、系统,版本。840C+大学选课系统源代码课程设计#include #include #include #include #include #include #include /定义课程struct course /某个学生所学的课程中的某一个char cname20; /课程名称float grade; /课程成绩course *Next; /指向下一个课程的指针;/学生类class studentpublic:student()root = NULL;const maxcourse = 5;factcourse = 0;void readname(char N ); /读入学生的姓名void
6、 getname(char N); /得到学生的姓名void wrecourse(char N,float score); /要据课程名写入学生课程的成绩float average(); /学生课程的平均成绩void addcourse(char N,float g); /给学生增加一门课int findcourse(char N); /查找是否已有此课程,如果有返回1,如果没有返回0int retfactcourse()return factcourse; /得到所学的课程数目course *retroot()return root; /利用键表将所有的课程保存起来int retmaxcou
7、rse()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
8、(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 *s = new course;s-Next=NULL;if(root = NULL)root = s;course *p = root;course *newcourse = new course;newcourse-Next = p-N
9、ext;p-Next=newcourse;strcpy(newcourse-cname,N);newcourse-grade = g;factcourse+;int student:findcourse (char N)course *p = root;if(root=NULL)C+大学选课系统课程设计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
10、tname20; /学生的名字float result; /学生所得的该课程分数studentname *Next;/课程类class subjectpublic:subject()first = NULL;maxstudent=30;activestudnet=0;float readcredit(); /得到课程的学分void getcredit(float a); /设置学分float getaverage(); /得到学生的平均成绩float getresult(char N); /查找某个学生的成绩void getkname(char N); /读出课程的名称void setknam
11、e(char N); /读入课程的名称studentname *retfirst()return first; /返回根结点void findstudent(studentdb *P); /根据该课程的名称,寻找选这课程的学生int retactivestudent()return activestudnet; /返回实际学生数int retmaxstudent()return 30; /返回最多学生数30void clractivestudnet()activestudnet = 0; /从文件中读出来后将实际学生数清零private:int maxstudent; /最多学生数int ac
12、tivestudnet; /实际学生数studentname *first; /学生名单float credit; /该课程的学分float averagerusult; /该课程的平均成绩char kname20; /该课程的名称;float subject:readcredit ()return credit;void subject:getcredit (float a)credit=a;float subject:getaverage()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: