欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    学生学籍管理系统(数据结构课程设计报告).doc

    • 资源ID:63965476       资源大小:135.50KB        全文页数:27页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    学生学籍管理系统(数据结构课程设计报告).doc

    数据结构课程设计报告课 题: 学生学籍管理系统 专业班级: 网络07102 学 号: 4 姓 名: 谌 沛沛 指导教师: 巢湘萍 评阅意见:评定成绩: 指导老师签名: 年 月 日目 录目录1 课程设计的目的和意义一般来讲,课程设计教学实验复杂一些,深度更广并且更加接近实用。目的是通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力,使学生对数据结构进行更深一层的了解,培养同学们对学习数据结构这门课程的兴趣,让同学们学会如何去查找资料和整合处理这些资料的能力,也为以后的大学毕业设计论文打下了一个初步的基础。这些课程设计都是比较难的,要分成几个小项目,几个学生一组,培养团队协作精神。最终帮助学生系统掌握课程的主要内容,更好地完成教学任务。(1)基本掌握面向过程程序设计的基本思路和方法; (2)达到熟练掌握数据结构的基本知识和技能; (3)能够利用所学的基本知识和技能,解决简单的程序设计问题。 2 需求分析1.数据需求需求分析阶段主要有两个方面的任务:分析用户的数据要求和分析用户的处理要求。通过以上分析,我们已经基本了解了用户对处理的要求,接下来需要的工作是分析用户对数据的要求。为了把用户的数据清晰明确地表达出来,系统分析员通常建立一个概念性的数学模型。概念性模型是一种面向问题的数学模型,是按用户的观点来对数据和信息建模。最常用的表示概念性数据模型的方法是实体-联系方法。这种方法用E-R图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法,该方法又称为E-R模型,E-R图中共用三种符号:实体、属性和联系。通常实体用矩形来表示,属性用椭圆或圆角矩形来表示,联系用菱形来表示。联系有分为一对一、一对多和多对多三种类型。2.功能需求(1)信息录入功能在这个功能里包括学生基本信息,班级课程信息,学生学期成绩单及成绩单表格和班级名单的录入。(2)浏览功能浏览功能包括浏览学生成绩,浏览班级课程,浏览课程名称和专业信息。(3)查询功能查询功能包括按班级和学号查询成绩,按班级查询课程设置。另外,我们为了保证个人信息不外泄,在进入本系统之前我们必须输入下确的密码。这样可以防止非法用户越权操作损害数据库而造成损失。3.创新需求: 在基本要求达到后,可进行创新设计,如系统用户功能控制,对管理员级和一般级别的用户系统功能操作不同3 系统设计1.总体设计总体设计即概念模型设计,使用数据流图可以使我们的逻辑结构一目了然,用图形表示出来,将更利于我们理解和设计。以下为学籍管理系统的数据流图:在信息世界中,信息从客观事物出发流经数据库,通过决策机构最后又回到客观世界,信息的这一循环经历了三个领域:信息世界,数据世界,现实世界。现实世界的事物反映到人的头脑中,人的大脑对它有个认识过程,经过分析(选择、命名、分类等)进入信息世界。这些信息再进一步加工、编码,然后进入数据世界,而软件系统的开发工作需要考虑这两个方面的问题,也就是要考虑系统开发所需要的数据,以及如何对这些数据进行操作。这两个问题贯穿了整个软件系统的开发过程,这也就是数据库的设计问题,软件设计的一个核心。2.详细设计:在系统设计的开始,首先考虑的是如何用数据模型来数据库的结构与语义,以对现实世界进行抽象。在本系统中采用目前广泛的 “实体联系模型”(ER模型)来描述数据库的结构与语义,以对现实世界进行第一次抽象。ER模型直接从现实世界抽象出实体类型及实体间联系,然后用ER图来表示数据模型。它有以下几个特点:接近于人的思维,容易理解;与计算机无关,用户容易接受。本系统为学生学籍管理,主要管理学籍的注册、学生信息及成绩等事项。根据需要可以查询学生的信息。依据学籍管理的实际情况,考虑了多方面的因素以后,确定系统的ER图如学生课程信息学生基本信息学生班级信息学生成绩信息学生图1 学生实体ER图专业学号家庭住址姓名性别学生基本信息年龄图2学生基本信息实体ER图课程课程编号课程名称 图3课程实体图班级专业班号班主任人数图4班级实体图根据上述数据流程图的分析,得出体系统的ER图,如下:老师授课课程选课课程成绩成绩单成绩评定学生 图6系统ER图数据流图中涉及到的数据表定义如下:(1)用户注册表(用户名,密码)(2)学生基本信息表(学号,姓名,专业班级,性别,年龄)(3)班级信息表(班级名称,专业名)(4)选课信息表(课程号,学号,学分)(5)学生成绩表(学号,姓名,班级,课程名,学分)数据中涉及的视图定义如下:(1)视图1(学号,课程号,课程名,学分)(2)视图2(COUNT(课程记录.课程号),SUM(VAL(课程记录.学分)(3)选课信息(学号,课程名,姓名,成绩,学分,班级名称)用到表(学生基本信息表,学生选课信息表,学生成绩表)(4)学生详细信息(班级名,学号,性别,成绩,课程名,学分)用到表(学生基本信息表,学生成绩表)3.系统分析:处理流程如下图:是否开始用户登陆密码是否正确用户窗口退出系统(1) 系统启动,进入欢迎界面后进入主界面(2) 在登陆界面,通过身份验证,进入系统,但在这里密码必须正确。(3) 根扰需要进入你需要的模块,并执行指定模块。(4) 功能结束,返回主界面。(5) 退出系统。4.模块设计(1) 用户登陆模块(2) 成绩管理模块(3) 学生选课模块(4) 信息查询模块程序结构图如下学生基本信息信息浏览系统学生选课学籍管理系统系统子菜单:学生学籍管理系统用户登录学生登陆教师登陆管理员登录选课系统:学生选课按课程名查询按学分查询查询选课退出学生信息系统:学生基本信息基本信息选课信息成绩管理4 设计及用法说明数据库逻辑结构设计在这个学籍管理系统中草药 需要设计3个基本表:学生基本信息表,课程信息表,教师个人信息表。而学生的选课信息,我们需要单独建立一个学生选课表来保存。由于每个学期我们都要选课,所以我们在选课结束后将这个表保存到成绩数据表中。在这个系统中我们有三类人员,管理员,教师,学生,所以我们需要对不同的人员进行密码确认,以防止越权行为,同时也维护了数据的安全性。在这个系统中我们设计管理员的权限最大,她可以对数据进行修改,老师信息,学生信息进行删除和修改。教师的权限输入学生成绩,且可以更改学生成绩,而学生仅限于浏览,如浏览选课信息,成绩信息,无法对其进行修改。而这些用户名和密码需单独保存在一个数据表中。所建表格如下。1. 学生个人信息表该表主要用于记录学生个人信息,包括学号,姓名,性别,年龄,家庭住址,专业。其结构如表1所示表1.学生基本情况表列标题列名数据类型宽度是否空学号SnoChar10NO姓名SnaChar10NO性别SexChar10Yes年龄AgeChar10Yes家庭住址AddChar10Yes专业ProChar10Yes2. 课程表该表主要用于记录课程信息,包括课程号,课程名。其结构如表2.所示表2.课程表列标题列名数据类型宽度是否空课程编号CnoChar10NO课程名称CnaChar10NO3. 学生选课表该表主要记录学生的课程成绩,在这个学生选课表中它包括学生学号,课程编号,以及所对应的成绩,如表3.所示表3.学生选课表列标题列名数据类型宽度是否空学号SnoChar10NO课程编号CnoChar10NO成绩GradeChar10Yes4. 用户表 该表用于记录用户的密码和用户名,其结构如表4.所示表4.用户表列标题列名数据类型宽度是否空用户名IdChar10NO密码PdChar10NO班级表列标题列名数据类型宽度是否空专业班号ZybhChar10NO人数NumChar10Yes班主任TnaChar10Yes(字数至少为3页内容)(全文行间距为1.5倍,字为宋体小四)(内容:分模块进行关键代码及算法的解释。)5 系统调试1.住房管理系统的录入界面,根据需要选择各项功能键。2输入与保存用户信息浏览所有的用户信息删除用户信息添加并保存用户信息7实验结果(包括输入数据和输出结果)6小结通过两星期的数据结构程序设计实习,我们从中受益匪浅,并且对数据结构程序设计这一门课程有了更深一步的认识。在实习中,我们接触到了一门新的语言delphi,它提供给我们一个可视化的操作界面,更能激发同学们的兴趣爱好,所以我们学起来就有一股热情。我们把这学期所学的理论知识和实践联系起来,在所开发的项目中渐渐成长。虽然我们对这些新的知识运用得还不是很熟练,但是相信我们也在滴水穿石地成长起来。发现问题,提出问题,解决问题,使我们从不足之处出发,寻找新的学习方向。将其中调用的那些我看不懂的函数一一查清楚,逐渐弄懂它的设计思路,思考它有哪些不足,有哪些地方还须要改进,有什么更好的方法、更简单的方法去实行。这次学习使我克服了偷懒的毛病,这在我以后的学习和工作中的心理定位与调节有很大的帮助。我感受到了做系统是一项非常烦琐周密的学习活动,它不但需要一个人周密的思考问题的能力,处理问题的能力,还需要有足够的耐心和严谨治学的作风,来不得半点马虎。在实习中,我们设计了一组对学生学籍进行管理的系统,它基本满足了界面友好,易于操作的要求,因此更利于用户操作方便,运行简易,从而达到对学生学籍更加有效系统的管理,并且速度更快内容更直接地达到用户所想要的效果。在该软件中我们实现了对学生信息的输入和存取、读取,对学生相关信息的删除和插入,并且可以按学号查询学生的相关信息,以及按平均分的高低对学生成绩进行排序等的功能。但软件中仍然存在一些不足,例如在输入有关学生的数据时名字没有限定,插入新的学生信息的程序还有待完善,删除后没有把新的学生信息列表进行保存,菜单不美观等。学好计算机要重视实践操作,不仅仅是学习数据结构,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以在以后的学习过程中,我会更加注视实践操作。我们一边实习一边探索,发现理论和实践要充分地结合,是需要扎实的基本功的,这就表明学好基础知识是理论付诸实践的前提。在实习中我们学到了很多,希望在以后我们能充分利用实习的机会充实自己,并希望这样的机会能被更好更多地提供。参考文献1 刘振安、刘燕君、孙忱.C+语言课程设计-北京:机械工业出版社,2007.12 陈维兴,林小茶.C+面向对象程序设计教程-北京:清华大学出版社,2004.83 网站:附录 源程序/-住房管理系统-#include<fstream.h>#include<stdlib.h>#include<stdio.h>#include<string.h>#include<iostream.h>/-数据结构-struct zfchar no10;char name16;char sex5; char position20;int age;char date30;/-用户类-class userprivate:zf g;user *next;public:int menu_select();static int count;user();user();void handle_menu(user *);user *input(user *);user *load(user *);void find(user *);/查找 void find_na(user *);/按姓名查找void find_no(user *);/按住房号查找user *add(user *);/添加信息 / user *edit(user *);/修改void save(user *);/保存信息void display(user *);/显示信息void show(user *); user *delete_user(user *);/删除friend ostream &operator<<(ostream &os,user &ob); friend istream &operator>>(istream &is,user &ob);int user:count=0;user:user()/初始化next=NULL;g.no0=' 'g.name0='0'g.sex0=' 'g.position0=' 'g.age=0;g.date0=' 'user:user()if(next!=NULL)delete next;/-主函数-void main()user *head; head=new user;head->handle_menu(head);/-int user:menu_select()int cn; cout<<"nn- 住房管理系统 -"<<endl<<endl;cout<<"tt1.录入与保存用户信息.n"cout<<"tt2.浏览用户信息.n"cout<<"tt3.删除用户信息.n"cout<<"tt4.添加用户信息.n"cout<<"tt5.修改用户信息.n"cout<<"tt6.查询用户信息.n" cout<<"tt7.退出系统.nn"cout<<"tt请选择功能项: "for(;)cin>>cn;if(cn<1|cn>7)cout<<"ntt输入错误,重选1-7:"elsebreak;return cn;/-菜单处理-void user:handle_menu(user *head)for(;)switch(menu_select()case 1:head=input(head);cout<<"ntt是否保存?(1.是/2.否):"int s;cin>>s;for(;)if(s=1)save(head);break;if(s=2)break;elsecout<<"ntt输入错误,请重选12:"cin>>s;break;case 2:display(head);break;case 3:head=delete_user(head);break;case 4:add(head);break;case 5:/head=edit(head);break;case 6:find(head);break;case 7:cout<<"ntt再见!nn" return;/-文件保存-void user:save(user *head)if(head->g.name0='0')cout<<"ntt没有记录可存!"<<endl;return;ofstream out;out.open("user.txt",ios:out);if(!out)cout<<"ntt不能打开文件!"<<endl;exit(1);cout<<"ntt存文件."<<endl;out<<head->count<<'n'user *p=head;while(p!=NULL)out<<*p;p=p->next;out.close();cout<<"nnt "<<head->count<<" 条纪录已经存入文件,请继续操作。"<<endl;/-录入函数-user *user:input(user *head)ifstream in;in.open("user.txt",ios:in|ios:nocreate);if(!in) cout<<"ntt还没建立用户,退出时请保存文件。"<<endl; elsein.close();if(head->count=0)head=load(head);user *info,*star;star=new user;info=head;while(info->next!=NULL)info=info->next;-head->count;/int j=0;do/j+;+head->count;cout<<"ntt输入用户 "<<head->count+1<<" 的信息:(当输入 0 时结束。)n"cout<<"ntt住房号:"cin>>star->g.no;if(strcmp(star->g.no,"0")=0) break;cout<<"tt姓名:"cin>>star->g.name;cout<<"tt性别:"cin>>star->g.sex; cout<<"tt职称:"cin>>star->g.position;cout<<"tt年龄:"cin>>star->g.age; cout<<"tt入住时间:" cin>>star->g.date;if(head->count=0)head=star;info->next=star;info=star;star=new user;while(1);info->next=NULL;return(head);/-istream &operator>>(istream &is,user &ob)is.getline(ob.g.no,10,'n');is.getline(ob.g.name,16,'n');is>>ob.g.no;is>>ob.g.name;is>>ob.g.sex;is>>ob.g.position;is>>ob.g.age;is>>ob.g.date;return is;ostream &operator<<(ostream &os,user &ob)os<<ob.g.no<<'n'os<<ob.g.name<<'n'os<<ob.g.sex<<'n'os<<ob.g.position<<'n'os<<ob.g.age<<'n'os<<ob.g.date<<'n'return os;/-查询函数-void user:find(user *head)int cn; cout<<"ntt1.按姓名查找.n"<<"tt2.按住房号查找.n"<<"tt3.基本查找.n"<<"tt4.退出系统.n"cout<<"ntt选择功能项:"cin>>cn;doswitch(cn)case 1:find_na(head);break;case 2:find_no(head);break;case 3:display(head);break; case 4:exit(0);while(cn<1|cn>4);/-void user:find_na(user *head)char input16;user *p;cout<<"nt输入您要查找的用户姓名:"cin>>input;p=head;while(p!=NULL)if(strcmp(input,p->g.name)=0) cout<<"n您要查找的信息如下:n"<<endl;show(p);break;elsep=p->next; if(p=NULL)cout<<"ntt没有找到相应的记录!n"<<endl; return;/-void user:find_no(user *head)char input16;int sum=0;int number=0;user *p;cout<<"ntt输入您要查询用户的住房号:"cin>>input;p=head;while(p!=NULL)if(strcmp(input,p->g.no)=0)cout<<"ntt您要查找的信息如下:n"<<endl;show(p);break;else p=p->next;if(p=NULL) printf("ttnot find!n");return;/-浏览-void user:display(user *head)if(head->count=0)cout<<"ntt现在没有记录!"<<endl;return;user *p;p=head;cout<<"nt现共有如下"<<head->count<<"条数据:nn"cout<<"t住房号t姓名t性别t职称t年龄t入住时间nn"for(int i=0;i<head->count;i+)cout<<'t'<<p->g.no<<'t'<<p->g.name<<'t'<<p->g.sex<<'t'<<p->g.position<<'t'<<p->g.age<<'t'<<p->g.date<<'n'p=p->next;cout<<endl;/-void user:show(user *p)cout<<"t住房号t姓名t性别t职称t年龄t入住时间n"cout<<'t'<<p->g.no<<'t'<<p->g.name<<'t'<<p->g.sex<<'t'<<p->g.position<<'t'<<p->g.age<<'t'<<p->g.date<<'n'p=p->next;/-添加-user *user:add(user *head)ifstream in;in.open("user.txt",ios:in|ios:nocreate);if(!in) cout<<"t还没建立用户,退出时请保存文件。"<<endl; elsein.close();if(head->count=0)head=load(head);user *info,*star;star=new user;info=head;while(info->next!=NULL)info=info->next;cout<<"ntt请输入要添加的用户信息:n" cout<<"ntt住房号:"cin>>star->g.no;cout<<"tt姓名:"cin>>star->g.name;cout<<"tt性别:"cin>>star->g.sex; cout<<"tt职称:"cin>>star->g.position;cout<<"tt年龄:"cin>>star->g.age; cout<<"tt入住时间:" cin>>star->g.date;cout<<"ntt是否保存?(1.是/2.否):" int s; cin>>s; for(;) if(s=1)head->count+;save(head);break;if(s=2)break;elsecout<<"ntt输入错误,请重选12"if(head->count=0)head=star;info->next=star;info=star;star=new user;info->next=NULL;return(head);/-删除-user *user:delete_user(user *head)char input30;int cn=0;cout<<"ntt1.通过姓名"cout<<"ntt2.通过住房号"cout<<"nntt请选择您要删除的方式:"cin>>cn;while(1)switch(cn) case 1:cout<<"ntt请输入姓名:"break; case 2:cout<<"ntt请输入住房号:"if(cn!=1&&cn!=2)cout<<"ntt输入错误,重选12:"cin>>cn;else break;cin>>input;user *old,*p;p=head;old=head;while(p!=NULL)if(cn=1&&strcmp(input,p->g.name)=0)|(cn=2&&strcmp(input,p->g.no)=0)cout<<"ntt您要删除用户的信息如下:nn"show(p);cout<<"nntt您确定要删除吗?(1.是/2.否):" int c;cin>>c;for(;)if(c=1)if(p=head) head=p->next; else old->next=p->next; -count; cout<<"ntt记录已清空!n" return head; if(count=0) head=new user; cout<<"ntt记录已经删空。"<<endl; return head; else if(c=2)return head;elsecout<<"ntt输入错误!请重输:"cin>>c;elseold=p;p=p->next;cout<<"ntt没有找到相应的记录。"<<endl;return head;user *user:load(user *head)void search(user *head); return(head);

    注意事项

    本文(学生学籍管理系统(数据结构课程设计报告).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开