C++程序设计课程设计---学生成绩管理系统

更新时间:2024-05-28 18:16:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本科生课程设计

课程题目 学号 学生姓名 所在专业 所在班级 指导教师 联系电话 日期

小组其他成员:

评阅意见:

学生成绩管理系统

计算机科学与技术

2013年5月2日至2013年5月9日

成绩: 日期: 评阅教师:

课程设计报告书

一、设计的功能模块

有7个模块:

1、 模块1定义增加课程功能函数; 功能描述:增加课程功能

2、 模块2定义删除课程功能函数 功能描述:删除课程功能

3、 模块3定义修改课程函数; 功能描述:修改课程功能

4、模块4定义保存课程功能; 功能描述:保存课程功能

5、模块5定义查找课程功能; 功能描述:查找课程功能

6、模块6定义显示课程功能; 功能描述:显示课程功能

7、模块7定义读入课程功能; 功能描述:录入课程功能

二、 题目描述

向对象程序设计(OOP)方法实现一个简易的学生成绩管理系统,具备以下功能:

1) 用户注册 2) 用户登录

3) 成绩录入、修改、插入、删除 4) 成绩查询 5) 成绩简要统计 6) 图形界面、全英文注释

三、核心算法

有7个核心算法:

核心算法1增加课程功能;

void course::courseadd() { int a; system(\ cout<<\课程管理>>增加课程\ cout<<\ string tn,cn,ct,place1,no;

第1页(共16页)

int cs; course *q; cout<<\请输入增加的课程:\ cout<<\请输入该课程号:\ cout<<\请输入该课程学分:\ cout<<\请输入授课老师:\ cout<<\请输入授课时间:\ cout<<\请输入授课地点:\ q=new course(tn,cn,ct,cs,place1,no); q->last=0; if(head) { course *p; p=head; while(p->last) { p=p->last; } p->last=q; } else head=q; system(\ cout<<\课程管理>>增加课程\ cout<<\ cout<<\操作成功,是否继续?\ cout<<\继续\ cout<<\取消\ cout<<\请输入你的选择:\ cin>>a; if(a==1) courseadd(); else choose(); }

核心算法1教师注册功能的流程图

第2页(共16页)

课程增加功能 请输入增加的课程: 请输入该课程号 请输入该课程学分 请输入授课老师 请输入授课时间 请输入授课地点 操作成功,是否继续? 1. 继续 2. 取消 请输入你的选择:

核心算法2删除课程功能

void course::coursedelete() {

system(\ string no;

cout<<\课程管理>>删除课程\ cout<<\

cout<<\请输入你要删除的课程号:\ cin>>no; if(head) {

course *q,*p; q=head; p=q;

第3页(共16页)

while(q) {

if(q->courseno==no) break; p=q;

q=q->last; }

if(q!=0) {

cout<<\找到该课程!!\

cout<<\课程名称:\ cout<<\课程号:\

cout<<\课程学分:\ cout<<\授课老师:\ cout<<\授课时间:\ cout<<\授课地点:\ cout<<\正在删除……\ Sleep(500); if(q==head) {

head=q->last; } else {

p->last=q->last; delete q; }

cout<<\删除成功!!\ } else

cout<<\不存在该课程!!\ } else

cout<<\不存在该课程!!\ system(\ choose(); }

核心算2删除课程的流程图

第4页(共16页)

删除课程功能 请输入你要删除的课程号: 找到该课程!! 课程名称: 课程号: 课程学分: 授课老师: 授课时间: 授课地点: 正在删除…… 不存在该课程! 核心算法3修改课程

void course::coursemodify()//课程修改 {

system(\

string tn,cn,ct,place1,no; int cs;

cout<<\课程管理>>修改课程\ cout<<\

cout<<\请输入你要修改的课程号:\ cin>>no; if(head) {

course *q; q=head; while(q) {

if(q->courseno==no) break; q=q->last; }

if(q!=0) {

cout<<\找到该课程!!\

cout<<\课程名称:\ cout<<\课程号:\

第5页(共16页)

cout<<\课程学分:\ cout<<\授课老师:\ cout<<\授课时间:\ cout<<\授课地点:\

cout<<\请输入你要修改的信息:\ cout<<\请输入课程:\ cout<<\请输入该课程号:\ cout<<\请输入该课程学分:\ cout<<\请输入授课老师:\ cout<<\请输入授课时间:\ cout<<\请输入授课地点:\ q->coursename=cn; q->courseno=no; q->coursescore=cs; q->teachername=tn; q->coursetime=ct; q->place=place1;

cout<<\正在修改……\ Sleep(500);

cout<<\修改成功!!\ } else

cout<<\不存在该课程!!\ } else

cout<<\不存在该课程!!\ cout<

system(\ choose(); }

核心算法3修改课程的流程图

第6页(共16页)

修改课程 请输入你要修改的课程号: 显示要查找的课程的所有信息 输入要修改的信息 修改成功 核心算法4保存课程

void course::coursesave() {

system(\

ofstream tfile(\覆盖源信息 course *p=head; while(p)//写入文件 {

tfile<teachername<<\p->courseno<<\

tfile<last; }

tfile.close();

cout<<\管理员综合系统>>课程管理>>保存课程\ cout<<\

cout<<\保存成功!!\ cout<

system(\ choose(); }

第7页(共16页)

保存课程 把信息一一保存到一个course.txt的文档中 保存成功

核心算法5删除课程功能

void course::coursesearch()//查找课程 {

system(\ string no;

cout<<\管理员综合系统>>课程管理>>查找课程\ cout<<\

cout<<\请输入你要查找的课程号:\ cin>>no; if(head) {

course *q; q=head; while(q) {

if(q->courseno==no) break; q=q->last; }

if(q!=0) {

cout<<\找到该课程!!\

cout<<\课程名称:\ cout<<\课程号:\

cout<<\课程学分:\ cout<<\授课老师:\ cout<<\授课时间:\ cout<<\授课地点:\ }

第8页(共16页)

else

cout<<\不存在该课程!!\ } else

cout<<\不存在该课程!!\ cout<

system(\ system(\

cout<<\管理员综合系统>>课程管理>>查找课程\}

核心算法5的流程图

查找课程 请输入你要查找的课程号 判别是否存在该课程 找到该课程 并显示该课程的所有信息 不存在该课程 模块6定义显示课程算法

void course::courseshow()//显示现有课程 {

system(\

cout<<\管理员综合系统>>课程管理>>显示所有课程\ cout<<\

cout<

cout<coursename<courseno<teachername<

第9页(共16页)

<coursetime<place<coursescore<last; }

cout<

system(\system(\

cout<<\管理员综合系统>>课程管理>>显示所有课程\

核心算法6的流程图

显示课程功能 显示所有的课程

模块7定义读入课程功能 void course::load() {

course *p; p=head; while(p) {

head=p->last; delete p; p=head; }

ifstream tfile(\ string tn,cn,ct,place1,no; int cs;

tfile>>tn>>cn>>ct>>place1>>no>>cs; while(tfile.good()) {

//创建学生接点 course *s; s=head;

s=new course(tn,cn,ct,cs,place1,no); s->last=0;

if(head)//若存在头接点 {

course *p2; p2=head;

while(p2->last) {

p2=p2->last;

第10页(共16页)

}

p2->last=s;//连接 }

else//若不存在结点(空表) {

head=s;//连接 }

tfile>>tn>>cn>>ct>>place1>>no>>cs; }

tfile.close(); system(\ }

核心算法7的流程图

读入课程信息功能 把原来的链表删除 从course.txt文档中信息读出来,重新建立一个链表 二、使用(操作)说明

运行的初始界面如图右所示。

Welcome()函数 显示系统主界面

选择1则进行void T_display()功能,如图右所示。

选择1则进行void T_register() 注册教师帐号密码

第11页(共16页)

选择2则进行void T_Login() 登陆教师管理系统

登陆成功后进行T_choose() 教师的主菜单

选择1则进行T_add() 增加学生

选择2则进行T_remove() 删除学生信息

选择3则进行T_amend() 修改学生信息

选择4则进行T_search() 查找学生

第12页(共16页)

选择5则进行

以上是所有功能展示!

三、开发文档

a) a) 包含文件 文件名称 instudentData.txt Studentdata.txt Teacherdata.txt administrator.txt 功能描述 记录由教师输入成绩功能中输入的成绩 记录学生的帐号密码资料 记录教师的帐号密码资料 记录管理员的帐号密码 otherstudentData.Txt 记录由教师插入成绩功能中输入的成绩

b) 函数说明

函数名称 功能描述 参数说明(类型、用处) 函数名称 void welcome() void T_Display() void T_Register() void T_Login() void T_choose() 功能描述 显示教师界面 教师注册功能 教师登陆功能 教师菜单功能 成绩输入功能 参数说明(类型、用处) 属于教师类,教师可选择登陆或注册等功能 属于教师类,教师可以注册帐号。 属于教师类,教师可以通过注册后登陆教师系统。 属于教师类,教师可以在此界面了解教师系统功能。并做出选择。 属于教师类,教师可以根据提示输入学生成绩。 第13页(共16页) 显示系统主页面 友元类,学生,教师类的对象可以调用 void T_input()

void T_output() void T_insert() void T_SC() void T_XG() void S_Display() void S_Register() void S_Login() void S_choose() 成绩查询功能 成绩插入功能 成绩删除功能 成绩修改功能 显示学生界面 教师注册功能 学生登陆功能 学生菜单功能 学生课程查看 学生成绩查询 属于教师类,教师可以查看所有已输入的成绩。 属于教师类,教师可以插入指定学生补充的成绩。 属于教师类,教师可以删除指定学生的成绩全至于零 属于教师类,教师根据提示,修改学生成绩。 属于学生类,学生可选择登陆或注册等功能 属于学生类,学生可以注册帐号。 属于学生类,学生可以通过注册后登陆学生系统。 属于学生类,学生可以在此界面了解学生系统功能。并做出选择。 属于学生类,学生可以在此界面看到自己的课程信息 属于学生类,学生可以在次界面通过学号查询成绩 void S_lookfor_kc() void S_output() void A_Display() void A_Register() void A_Login() void A_choose() 管理员界面功能 属于管理员类,管理员可选择登陆或注册等功能 管理员注册功能 属于管理员类,为本系统注册管理员帐号密码。 管理员登陆功能 属于管理员类,管理员登陆。 管理员菜单功能 属于管理员类,管理员可以在此界面了解管理员系统功能。并做出选择。 管理员查询成绩 属于管理员类,输出所有学生成绩资料 查询教师资料 查询学生资料 功能描述 属于管理员类,输出所有教师帐号密码资料 属于管理员类,输出所有学生帐号密码资料 void A_output_cj() void A_output_T() void A_output_S() a) 程序文件说明 文件名称 计科1104.CPP 包含所有代码

四、源代码(代码超过20页时附主要源代码) 五、设计的优点

b) 比较方便地,快速地登录;减少其他的相关操作。

c) 界面简洁明了,容易让人上手,本系统的界面设置,都是以海大为特色,详情可浏览本系统,这

样能让使用者感受到归属感还有强烈的真实感。

d) 系统为学生教师都添加了注册登陆功能,这能更真实的实现一个学籍管理系统 e) 函数相对较少,为修改优化减少难度。

f) 系统用了大量日常用到的C++知识,让我们学会致用,也是对我的一次考试

六、存在的问题及改进

g) 存在的问题:

1. 函数相对简单,使得用户的信息保密相对较差,容易涉漏用户的信息,也造成功能相对

简单,用户信息容易遗失。缺少用户使用帮助功能。 2. 本系统中,类定义中嵌套功能函数的定义,这加大了程序的可读性,虽然运行时无错误,

但在编程过程中,出现问题时,很难找出问题

3. 本功能中,发现链表只能修改储存在内存中的数据,一旦程序结束,数据也因此消失,

无法用文件保存

h) 改进的设想:

(1)进一步改进登录功能,增加相应用户信息保密操作函数。

第14页(共16页)

(2)设计用户信息找回功能。

(3)在登录界面增加用户使用协议,让使用者知道自己的权限的义务。

七、心得体会及以后需要注意的地方

i) 心得体会:

(1)总结:这一次的课程设计用了一个多星期才完成,在这期间时不时地出现错误,而且在找错误时也经常难以发现哪错了,所以不断地查阅资料,不断地验证,不断地讨论才一步一步地找出错误,这一部分用了太多的时间了。

(2)细心:还有一点就是编辑时要小心,因为往往一个粗心,就得让我们付出了很多时间去找出这一个错误。

(3)合作:团队合作是我们完成设计最重要的因素,如果只靠一个人可能要花更多的时间也不一定可以完成,这一次设计也让我们很好地知道团队合作的作用、力量。 也可以磨练我们怎么样去和别人合作。

(4)坚持:设计中遇到了很多困难,有时会让得我想要放弃这个设计,重新设计另外一个,但是在坚持和组员的帮助下克服了。 j) 以后需要注意的地方:

(1) 题纲:在设计之前要先讨论出一个可行方案,这可以让我们在后面的设计中减少不必要的错

误。

(2) 记忆:在自己设计时很多定义分不清楚或者不记得了,这需要在以后不时地去翻书,把各类

函数、定义分清楚。

(3) 资料:设计过程要加大查阅资料的力度,这样才可以设计出一个更好的程序出来。

(4) 联系:在设计自己部分时要把握好与整个系统的联系,这样才不会使得自己的和大家的合起

来时出现的错误。

(5) 学习:加强修改的学习能力,不用让一个错误困住整个程序的设计。

第15页(共16页)

(2)设计用户信息找回功能。

(3)在登录界面增加用户使用协议,让使用者知道自己的权限的义务。

七、心得体会及以后需要注意的地方

i) 心得体会:

(1)总结:这一次的课程设计用了一个多星期才完成,在这期间时不时地出现错误,而且在找错误时也经常难以发现哪错了,所以不断地查阅资料,不断地验证,不断地讨论才一步一步地找出错误,这一部分用了太多的时间了。

(2)细心:还有一点就是编辑时要小心,因为往往一个粗心,就得让我们付出了很多时间去找出这一个错误。

(3)合作:团队合作是我们完成设计最重要的因素,如果只靠一个人可能要花更多的时间也不一定可以完成,这一次设计也让我们很好地知道团队合作的作用、力量。 也可以磨练我们怎么样去和别人合作。

(4)坚持:设计中遇到了很多困难,有时会让得我想要放弃这个设计,重新设计另外一个,但是在坚持和组员的帮助下克服了。 j) 以后需要注意的地方:

(1) 题纲:在设计之前要先讨论出一个可行方案,这可以让我们在后面的设计中减少不必要的错

误。

(2) 记忆:在自己设计时很多定义分不清楚或者不记得了,这需要在以后不时地去翻书,把各类

函数、定义分清楚。

(3) 资料:设计过程要加大查阅资料的力度,这样才可以设计出一个更好的程序出来。

(4) 联系:在设计自己部分时要把握好与整个系统的联系,这样才不会使得自己的和大家的合起

来时出现的错误。

(5) 学习:加强修改的学习能力,不用让一个错误困住整个程序的设计。

第15页(共16页)

本文来源:https://www.bwwdw.com/article/6d37.html

Top