电子生词库软件学生选修课程系统设计C语言版_第1页
电子生词库软件学生选修课程系统设计C语言版_第2页
电子生词库软件学生选修课程系统设计C语言版_第3页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、程序设计基础题目:电子生词库软件C语言程序设计实训任务书题目:学生选修课程系统一、设计目的1. 进一步掌握和利用C语言进行程序设计的能力;2. 进一步理解和运用结构化程序设计的思想和方法;3. 初步掌握开发一个小型实用系统的基本方法;4. 学会调试一个较长程序的基本方法;5. 学会利用流程图或N-S图表示算法;6. 掌握书写实训开发文档的能力(书写实训报告)二、设计任务及内容假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时, 实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60 )自由选课。试设计一选修课程系统,使之能提供以下功能:1. 系统以菜单方

2、式工作2. 课程信息录入功能输入3. 课程信息浏览功能输出4. 查询功能:算法(选一)1)按学分查询课程信息2)按课程性质查询课程信息5. 学生选修课程6. 按课程编号顺序插入一门课程信息7. 按课程名称删除一门课程信息8. 按课程名称的字典顺序输出所有课程信息。三、设计要求1. 用 C 语言实现系统;2. 利用结构体、数组等实现数据结构设计;3. 系统具有增加、查询、插入、排序等基本功能;4. 系统的各个功能模块要求用函数的形式实现;5. 文档:实训说明书每个学生一份,并装在统一的资料盒中;6. 光盘:每个学生文档和程序资料分别建在一个以自己学号和姓名命名的文件夹下, 并要求每班负责人汇总每

3、个学生的文件放在以班级姓名命名的文件夹下, 刻录成一张光 盘,放在一个专门的资料袋中。四、提交的成果1. 设计任务书一份(学校统一格式)2. 设计说明书一份,内容包括:1) 中文摘要 100 字 ,关键词 3-5 个。2) 实训题目、内容、要求。3 )总体设计(包含几大功能模块)。4)详细设计(各功能模块的具体实现算法流程图)5)数据结构设计描述,各模块(函数)的功能介绍,参数说明等。6)调试分析(包含各模块的测试用例,及测试结果。)7)总结(实训完成了哪些功能,还有哪些地方需要改进,及通过实训有何收获, 调试程序的体会等)8)参考文献、致谢等。五、主要参考资料1. 王连相C/C+程序设计 武

4、汉大学出版社.2013.72谭浩强C语言程序设计(第2版)学习指导清华大学出版社.2012.123. 杨莉,龚义建C语言程序设计实训指导教程华中科技大学出版.2009.64. 张小东,郑宏珍C语言程序设计与应用人民邮电出版社.2009.45. 郭翠英C语言课程设计案例精编中国水利水电出版社6 郭有强C语言程序设计清华大学出版社7 李丹程,刘莹,那俊C语言程序设计案例实践清华大学出版社8 李丽娟C语言程序设计教程人民邮电出版社 9 武雅丽,王永玲,解亚利C语言程序设计清华大学出版社 六、各阶段时间安排(共1周)日期内容地点完成情况教师签字星期一教师讲解设计要求,准备参考资料教室星期二分析系统,方

5、案设计教室星期三方案设计,编程教室星期四调试程序,书写实训说明书教室星期五完成实训说明书,答辩教室摘要20 世纪末,随着计算机科学的发展,网络的应用越来越广泛,为广大用户提供了 更加周到和人性化的服务。本文研究了以一种基于文件存储的学生选修课程系统。本系 统是根据现代化校园的发展而设计的学生学修课程系统,本系统方便老师、家长来学校 查找学生成绩、最近奖罚等多种情况。随着教育改革的不断深入和素质教育的加强完全 学分制的实施,选修课在一个学生的培养计划中站的比重越来越大!使用了网上选课系 统以后,可以在开课前就在网上选课,每个学生的课程在开课前就确定好,不用浪费体 力去选课,还可以使教学资源合理平

6、均地分配。关键词:学生选课;C语言;文件存储目录1 绪 论 11.1 基本内容 11.2 发展趋势 11.3 用途及特点 12 问题需求分析 . 32.1 问题的提出 32.2 问题的分析 33 总体设计 53.1 总体设计思路 53.2 总体设计模块介绍及框图 64 详细设计 74.1 各模块流程图 74.1.1 主函数模块 74.1.2 管理员模块 74.1.3 学生模块 94.1.4 创建链表模块 104.1.5 浏览模块 114.1.6 查询模块 124.1.7 插入链表模块 134.1.8 添加模块 154.1.9 删除模块 164.1.10 选修课程模块 164.1.11 读取文件

7、模块 184.1.12 保存文件模块 194.2 函数功能具体实现及算法 195. 调试及分析过程 215.1 各模块运行结果 215.1.1 开始运行 215.1.2 管理员菜单 215.1.3 按 1 进入录入课程模块 225.1.4 输完课程信息后进入管理员浏览模块 225.1.5 按课程性质查询 235.1.6 按课程学分查询 235.1.7 按 4 进行管理员删除模块 245.1.8 学生菜单 245.1.9 按 1 学生浏览所有课程 255.1.10 按学分查询课程 265.1.11 按 3 进入选修课程模块 265.1.12 按 4 进入浏览已选修的课程 275.1.13 按 5

8、 进入删除错选课程模块 285.2 调试过程中出现的问题 295.2.1 问题的提出 295.2.2 问题分析 295.2.3 问题解决建议 306 总结 317 设计优缺点 337.1 不足之处与改进之处 337.2 收获与总结 337.3 程序的优缺点 34参考文献 35致 谢 36附录: 37源程序代码 371绪论1.1基本内容随着教育改革的不断深入和素质教育的加强完全学分制的实施,选修课在一个学生的培养计划中站的比重越来越大!学生在选课时要查看各个课程的详细信息,还有选择 一些感兴趣的课程,需要生成课表,在发现课程有冲突后能够修改先前选择的信息。各 高校课程改革的不断深入,学校规模不断

9、扩大、课程项目不断增多,为了解决学生选课 管理上的复杂繁琐的人工操作,制作一个选修课程系统已经迫在眉睫了。全校性选修课 的目的在于扩大学生的知识面,加强学生素质教育,培养复合型高级人才,具有不可替 代的重要性!1.2发展趋势对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好学生选课信息而设计的。当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被 广泛应用于信息系统的环境。计算机的最到好处的于利用它能够进行信息管理,使用计 算机进行信息控制,不仅提高了工作效率,而且大大的提高了其

10、安全性。基于这个问题,我认为有必要建立一个学生选课系统,使学生选课信息管理工作规范化、系统化、程序化,避免学生选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。1.3用途及特点现代的社会是信息化的社会,信息无所不在。在生产领域、流通领域、各个部门每 天都和信息打交道,如何处理如此多的信息成为了一个重要的课题。学生在学期开始选 课是教学活动中的一个重要环节,该环节如果能管理好,它不仅能加快学生的选课速度, 也提高了整个活动工作的效率大学一般都有上万名学生, 每学期开始学生都要选课, 因而产生了大量的课程信息 考虑到用户使用的方便和处理的信息量系统要完成录入,

11、保存,查询,修改和删除课程 信息的各种过程,能打印出课程信息表。系统的主要使用对象是需要选课的学生。需要随学生选课选课的变化,计算相应的 总学分。在全部选定后打印报表。系统还需要管理员来查看和修改学生的总体选课情况 课程信息和学生信息。此系统系统选课方便、快捷,用简单的界面来展示学生的选课信 息,应用简单明了、存储量大、可靠性高、保密性好、寿命长、成本低等优点,可以极 大的提高对学生信息管理的效率。 利用 C 语言开发,实现了简单的学生课程信息的录入、 修改、查询、删除等操作,并且能够利用文件系统长久的保留原始数据。2 问题需求分析2.1 问题的提出随着教育的改革,各高校的大规模扩展,专业的剧

12、增,以老师授课为主的传统的教育模式已不再适应当今中国的各高校的现状。并且,在课表的编排上市意向十分复杂、 棘手的工作。 在派克过程中,除了满足大量的制约条件外, 还必须解决许多冲突域矛盾。因此,利用网络进行选课和对学生的授课,应经成为名正言顺的事,并且必不可少了。 那么如何创建一个网络选修课程系统呢?如何实现学生网上根据自己的时间安排, 随时 随地的学习呢?这成了研究网络选修课程人员的一大问题了。2.2 问题的分析大学期间总会有很多公共选修课, 以往的选课方法是随堂报名。 这种方法虽然直接, 但是造成选课的盲目性,有些课堂选课时人满为患,有些课堂无人选课。原因是传统的 选课方法没有预见性,大家

13、没有事先协调好。这种局面是长期以来在高校中产生的,短 时间内根本无法改变这个现状。 使用了网上选课系统以后, 可以在开课前就在网上选课, 每个学生的课程在开课前就确定好,不用浪费体力去选课,还可以使教学资源合理平均 地分配。本系统开发的目的是采用信息化和网络化的手段, 帮助学生和学校信息化的管理选 课教学任务。教育制度的改革,学生数量的剧增,无疑给网络选修课程提供了一个前所 未有的机会。为方便用户根据自己时间随时随地的学习,特开发此系统。为学校将老师 的授课视频直接放在学校官网上, 学生通过官网,随心所欲地在学生选课系统进行学习。 这样不仅节省了学生们的时间,更为学校省下了许多师资资源。学校可

14、以将这部分省下 来的师资资源用在学术研究方面、教育方式研究等方面。当前大部分学 校 没有一个完善 的学生 选修课程系统 ,计算 机使用主要基于 microsoft office ,不能发挥有效的作用,而且随着我国教育的改革,学生可以选择科 目多样化,使得学校对学生选修课程管理趋于繁琐、复杂,工作量大,这种传统的学校 选修课程模式已不能满足当前的发展。实现学生选修课程的系统化、规范化、自动化以 及全面的、相对集中化,为学生提供全面的选课数据信息,为有效的控制选课提供有力 的帮助;为学校做到及时、准确地掌握选课情况,为选修课程做好部署工作。本系统是 为高校学院制定的个人选课及管理的现代化信息平台,

15、学生能过浏览器进行网上选课和 并且可以查询自己的选课计划及所选课程进度。同时,管理员可以通过游览器进行课程 添加、删除和修改。这无论对于学生和教师管理员来说都节省了大量的工作量。充分利 用网上选课系统来提高教学选课管理的效率,实现全面网络化、规范化和集成化。3 总体设计3.1 总体设计思路通过对课题的分析,程序的要求是设计选修课管理系统,对选修课程能够进行录入 和修改操作等,要求有主界面和退出功能。首先,考虑到程序的数据输入,可以设置一 个管理员登陆选项,通过该界面,进行选修课的录入和修改操作,最后将录入的课程存 到相应的文件中。然后定义各种函数的功能包括:查看、查询、删除等。另一个为学生 登

16、陆界面,该界面学生可以进行课程选择和浏览查询等操作。在进行该操作之前需要对 管理员保存的文件进行读取,然后对其中的东西进行查询等。在学生选好课程以后,可 以将选好的课程保存于相应的文件中,以便下次进行修改。通过函数的层层调用来实现 程序的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数据操作。然后 通过对课题的分析, 必须实现的功能有主线程对四大线程的随机调度以及输出结果显示 等。我们为了方便用户控制管理,又添加了一些更人性化的功能如人工调试,运行配置 等功能。主要运用了顺序结构、选择结构和循环结构等多种基本结构,同时文件存储信 息的方式更是简化了程序结构,使程序读起来更容易懂。除此

17、之外,本系统采用分块实 现功能,将要实现的增加课程信息、修改课程信息、删除课程信息、增加学生信息和修 改学生信息等功能分别用不同的子程序来完成,这样不仅方便了我们程序调试,更提高 了程序的移植性。为了方便用户控制管理,本系统添加了一些更人性化的功能如人工调试,运行配置 等功能。主要运用了顺序结构、选择结构和循环结构等多种基本结构,同时文件存储信 息的方式更是简化了程序结构,使程序读起来更容易懂。除此之外,本系统采用分块实 现功能,将要实现的增加课程信息、修改课程信息、删除课程信息、增加学生信息和修 改学生信息等功能分别用不同的子程序来完成,这样不仅方便了我们程序调试,更提高 了程序的移植性。3

18、.2总体设计模块介绍及框图本系统由一个主模块和多个子模块组成,主模块有管理员和学生两个模块。管理员 模块主要功能是添加课程信息、删除课程信息等,而学生模块则主要管理学生信息及选 课问题等。图3-1总体模块框图4详细设计4.1各模块流程图主函数模块主函数设计地比较简洁,只是提供一个主菜单和几个函数的调用以及显示函数。 switch语句将整个程序分为三个大的功能模块。其具体流程图如下:图4-1主函数模块图管理员模块管理员的功能一共有四个功能:浏览,查询,添加,删除课程,运用字符串处理函 数处理密码的问题,若密码正确,贝U可以进入管理员模块。否则重新输入名,当密码输 入错误达到3次,则不能进入管理员

19、模块。密码次数用了一个int型的变量来计数。用一个switch语句实现函数的调用:开始学生模块学生的功能一共有四个功能:浏览所有课程信息、查询课程信息、选择选修课程、浏览所选课程、删除错选课程等。用一个switch语句实现函数的调用:图4-3 学生模块流程图创建链表模块利用链表的创建、插入、删除和查询等功能。以菜单选项形式体现出来,实现课 程信息的增加、学生信息的增加、课程信息的删除以及学生信息的修改等等。运用链表 实现这些功能可以与用户良好的交互。Tail-next=NULL;Retur n head;Sea nf(num,n ame,kin d,& stime,& ttim

20、e, &e time,& score, &term);图4-4 链表创建流程图浏览模块浏览模块主要用管理员中的“浏览课程”和学生功能中的“浏览所有所有课程”, 将所有的课程信息输出,即将2.txt文件里面的内容全部输出:图4-5 浏览模块流程图查询模块查询模块主要用于管理员功能中的“查询课程”和学生功能模块中的“查询所有课 程”,查询模块共分为三个查询方法:按课程名称查找,按课程性质查找和按学分查找 switch语句中,每一个case语句就是一中查询方法:图 4-6 查询模块流程图4.1.7 插入链表模块插入链表操作主要用于添加课程,在整个课程信息中加入一些新课程,它在

21、添加模块中被调用:图4-7插入链接模块流程图添加模块添加模块主要用于增加课程信息,采用链表的操作:插入课程信息)+J丿(结束 /图4-8添加模块流程图*SUB *ptr,*subj;int size=sizeof(SUB);char ch,ch1;删除模块,全部采用删除链表删除模块主要用于管理员删除课程信息学生删除自己的选课 中的某一个节点的操作:否结束删除图4-9删除模块流程图4.1.10 选修课程模块选修课程模块采用插入链表的操作:开始读取文件模块读取文件模块是用来读出文件内容,并将内容输出到内存中,当输入文件名时, 就能打开指定的文件,当输入all_sub.txt时,打开所有课程信息的文

22、件,当输入my_sub.txt时,就是浏览学生选修的课程信息。是newSub=(SUB*)malloc(sizeof(SUB);fsca nf(fp,&n ewSub-> nu m, newSub-> name, newSub->ki nd,&n ewSub->stime,&n ewSub->ttime,&n ewSub->etime,&n ewSub->scpre,&n ewSub->term);关闭文件图4-11读取文件模块流程图保存文件模块保存文件模块共分为两个子程序,将修改的信息保存到2.t

23、xt文件中,系统检测要保存的文件4.2函数功能具体实现及算法各函数的具体功能int main() 程序主函数,程序入口void Mangers()管理员主菜单,管理员入口Void SUB *create_form() 创建链表结构void savefile()将新增加的课程信息保存到文件中void savefile1()将修改后的课程信息文件保存到文件中void readfile() 阅读文件void prin() 浏览所有课程void prin1()浏览所有选修课程void *myInsert( SUB *subj)链表插入操作void *insert()插入课程信息void *del()删

24、除课程void choose() 选新课程 - 学生选课函数void search() 课程信息查询void Students()学生登录入口4.2.1 各函数的实现的具体算法本系统程序中主要用到的算法有:二分法、冒泡排序法等算法。其中,在新增课程信息,查找课程信息,修改课程信息,浏览可选课程等多种以管理员方式进入的课程 信息操作都运用了二分法。 以学生身份登录的进入的课程信息操作则主要运用了冒泡排序法。冒泡排序法和二分法作为 C 语言中最为基础的算法, 运用却相当的广泛, 本系统主要运用了分法和冒泡排序法的查找功能5.调试及分析过程5.1各模块运行结果开始运行程序开始运行进入登录界面,输入1

25、:以管理员身份登录输入密码1,输入2:以 学生身份登录,输入3 :退出登录界面。menZ 犬迎进凡学生选擀课程系1 一茂管+里茂身倘豊录5"空如讹旅退出版杈所有t臧晖年 锵文涛 朱逼IChicise yniiF nnmihFCl-3>:1图5-1运行结果图管理员菜单进入管理员菜单。输入1 :录入所有要选择的课程,输入2 :浏览所有录入的课程,输入3 :查询录入的课程,输入4 :删除录入的课程,输入5 :返回主菜单。按1进入录入课程模块进入录入课程界面,输入课程编号、课程名称、课程性质、总学时、授课学时、实践或上机学时、学分、开课学期,添加完毕后点击回车继续添加,输入0结束添加C

26、hiose yolil* nUmbei'Cl5> 2(1输入要插入的课程信息:请输入课程编号油谙输入课程名称嘅代医学请输入课稈件质:人文请输入总学时:30请输入授课学时:鮎请输入实践或上机学时;丄5请输入学分呼£请输入开课学期;1打加完毕新信息存入文件中继续描入请按回车结束殛加课程按0: C0课ng# 课程名称 课程性质 池学时 接课学时 实验或上机学时 学分 开课学期 请按住意縄継结-_图5-3录入课程模块运行结果图输完课程信息后进入管理员浏览模块开课学期111111输入完课程信息程序将自动对课程编号进行排序,将录入的课程信息结果表示出 来,按任意键退出此界面。1质1

27、 2 3 4 fi 任陵请2性文文>=程人人自自人人-S课1be齧HHlfW - 屛 sifi: 蔦 牛狂屆J?半 4°意图5-4输完课程信息运行结果图学分302530353025实践或上机学时0510101015授课学时202020201515总学时202530302530按课程性质查询进入课程查询界面,选择查询方式选择1按课程性质查找,将所有课程性质相同的 课程查找出来,选择3退出查找界面。:请选择查询方式*1按课程性质倉找A按学分查找-退出查找UJiiose yaur numJtiei'<l -3 > : LI J ifAf' 课桓編号i蝇蓊青

28、 人文 请按任意施,人文R 忌学时20252530授課学时202H1515实践或上机学时051015学咛3025302:5开譯学期1111图5-5进入管理员浏览模块运行结果图按课程学分查询进入课程查询界面,选择查询方式选择2按课程学分查找,将所有课程学分相同的 课程查找出来,选择3退出查找界面。ICMNlig 梵 K梵:M>E xj 青十先丰辛吉旬 /"工 I * MJtMiXNimJfiMXJtM;1 -技课程性质查找2 学分查找退出直找Chiose j/our nunheF<l-3> : 2 Jl 输人烫查找的课程的学分课程窮号课程名称课程性质- 工 入文诂按任

29、意i五M育总学时2林302S授课学时2315实£戈或丄机学时1010开课学期11按4进行管理员删除模块在管理员菜单栏中输入4进行课程删除,将要删除的课程编号输入完成删除课程, 按回车继续删除,按0结束删除课程。久一淙入课程 靈浏览课程3 -查询课程4 -删徐课程5 -返回主革单Chiose your nunberd-S) : 41输入想要删除的课程编号】继续删除请按回车结束删除课程披0= 03图5-7管理员删除模块运行结果图学生菜单进入学生菜单栏,选择1浏览可选的所有课程,选择2查询所有课程的信息,选择 3选择自己需要选修的课程,选择4浏览自己所选修的课程,选择5删除自己在选课时 选

30、错的课程,选择6返回主菜单。工-一浏览所有课程2 杳询课稈彳g鳥3- 一选择选修课程轉一-浏览我选修的课程石 删除错选課程M-NMJiose youi* nunber(l-fc> : L J图5-8学生菜单运行结果图按1学生浏览所有课程进入学生菜单,选择1进入浏览所有课程界面,可以查看所选择的课程信息1測览所有课程2杳询课稈信息A"选择选修课程4-一浏览我选修的课程 卜一删除错选课程£一_返回主菜单KMM M MX M MM M MX M M M MM M « M M >MK MM « M M >MK MK MMM编 12 3 4- G

31、tf 程 按 果 主目8?1性文文x:>=程人人自自人-G课1-质25303Q3Q授课学时20202015学分开课学期11111实践或上机学时051Q1Q15按学分查询课程进入学生查询界面选择2按学分查找,开始查找需要修习的课程。幵课学期111实3密或上机学时0101U揺课学时2020lb总学时20302bCh lose 如 tn* nmnbei*<l-3> : LZ1 愉入參查找的课程的学分® 课程窮号课程名翘-13请按任意1®课権质査找2按学分查找3-退出查找青 1 先 $ 羊旬 厅工><1<耳 HUM; KiMIC >EX:K

32、 M:03育图5-10按学分查询运行结果图按3进入选修课程模块在学生菜单中选择3进入选择选修课程界面,将需要选修的课程的编号输入按 0 确认所选修的课程,成功选择课程。将选择的课程的信息保存到3.txt文档中。按任意键继续。开课学期1111学分实践或上机学时1Q1S授课学时302Q21315.总学时阿303U30您诜修的课稈稳学分为临叫课稈分别为=*选修成功 ? *梵耳梵HL梵 ><耳梵耳XML梵:MSKJKF梵耳 HJ*弭耳Z 半甲 弭耿耳梵耳梵漣梵冀梵箕耳梵料且光耳梵耳梵恥.质程人自自人课-浏览所有课程2査询课程信息3-一选择选修课程4一-浏览我选修的课程5删除错选课禾呈-一返

33、回主菜单Chioao jyo'ui* nuiniljDi*(lL6 z : L3 J输入要选修的课程的编号,编号之间以空格分开13 4 6如果确认输入完要选修的课程的编号"请输人氐 ®课程編号i果程名称图5-11进入选修课程模块运行结果图按4进入浏览已选修的课程在学生菜单中选择4进入浏览我选修的课程界面,将会将所有已选修的课程信息展示出来,按任意键继续Hmxm x学 生菜单 mcmmphlose youi* numbeT*<JL-6> - E41课程编号 课程名翘 课程性扃13 就谙按纭篇屈总学时20303030援课学时2B202015实践或上机学时IS

34、IS5111孝分303W3525开课学期11111-浏览所有课程旷一査询课程信息3选择选修课程4一浏览我选修的课程一册!除错选课程6-返回王菜单图5-12进入浏览已选修的课程运行结果图按5进入删除错选课程模块在学生菜单中选择5进入删除错选课程界面,将错选的课程的编号成功删除错选课 程,如果继续删除错选课程请按enter,按0结束删除错选课程菜单,删除错选的课程的 信息保存到3.txt文档中。按任意键继续。丄一浏览所有课程2查询课程信息3-一选择选醪课*呈4 一-测览我选修的课程5 删除惜选课程6-返回午業单MKMKMMMMMMKMKMMMMMMMMKMMMMMKMMKMMMKMKMMKMMMK

35、MKMMMMMMChiose your nunbeil-6>:151输入想要删除的课程编号;珏3绅绩删除请按回车结束删除课程按0= 01A -V 存Q - 瓢息继 里稱意创请文件中图 5-12删除错选课程模块运行结果图5.2调试过程中出现的问题问题的提出程序编写完成后,都需要经过调试,看其是否达到了指定的功能。但主要还是修改 其中出现的大大小小的问题。本次设计中出现的问题有:1. 调试过程中无法读取文txt文件。2. 密码不能用户自定义。3. 旦关闭这个变异环境后,所增加的课程信息,学生信息不能长久保存。问题分析1. txt无法读取,输入路径后没有文件显示。解决办法是,向老师求助。最后,

36、在老师细心的指导下,才知道是自己的计算机操作水平缘故,没有很好的了解计算机路径 结构,最后做出了一定的修改,才得以实现2. 密码问题,是由于编写程序的时候就已经将密码定死了。用户无法通过系统平台 改变密码值。因此,这样的密码形同虚设,简直就没有什么用。3. 出现这个问题的原因,是因为信息量的存储设置不太好,运用文件存储的方式存 储信息方便,但是要调用信息就不太方便 。5.2.3 问题解决建议运用数据库将密码信息存储起来,然后用 switch 语句控制密码输入错误次数,当 输入密码错误达到 3 次,就使用一个密码重置申请函数。再将新密码存入数据库,并将 以前设置的密码覆盖掉。建议运用数据库来存储

37、信息,用数据库存储信息比文件存储更 加稳定。6 总结通过本次课程设计, 我们把已经快遗忘的 C 语言知识重新复习了一遍, 这也让我们 认识到了经常总结之前学到知识的重要性。这次看似简单的课程设计,将我们身上的很 多不足之处都暴露了出来,也让我们认识到了自己想要提高自己需要往哪方面继续努 力。本次课设是我们团队一起完成的,大家都有明确的分工,当然在这个过程中我们遇 到了很多问题,并不是一个人去埋头苦干,而是提出来大家一起帮忙想办法去解决的。 编程过程结构体有 float 型数据时系统提示有错误, 用 int 或 char 型代替然后定义可解 决。在调试没运行完自动跳出主界面:主要可能遇到 flo

38、at 型数据时系统错误。插入链 表阅读和输出文件不熟悉;不熟悉如何使形参与实参一一对应。经过查询资料和老师同 学们的帮忙基本解决。经过这样不断的发现错误,改正错误,不断领悟,不断获取终于 顺利完成课程设计。通过这一周的的 C 语言程序设计实训, 不仅巩固了自己之前掌握的 C 程序的设计 基础,而且弥补了在上课期间没有学会的知识; 也让我们的对抽象理论有了具体的认知。 认识到了 C 语言的用途是非常广的,功能也非常强大,是学计算机不可缺少的语言。 更重要的是,让我学到了很多知识,增强了动手能力,积累了经验。同时也我发现了自 己的许多不足之处,有待在以后的学习中进一步完善,掌握和运用更多的知识。最

39、重要 的是此次实训, 让我认识到团队合作的强大力量, 自身的严重不足, 更激发了我对 C 语 言程序设计的兴趣。 C 语言中蕴含着强大的奥妙,等着我们去探索。课程设计是在老师指导下完成的,让我对学生选课系统有了较深的认识,也具备了 一定的实践经验。此次课设让我认识到:团队的不可替代性,知识的重要性,以及遇到 问题积极的动脑、动手,乐于向他人讨教不懂的问题。7 设计优缺点7.1 不足之处与改进之处经过测试,这个系统已经达到了题目中的全部要求。这个程序有很多优点有一个是 界面简明,简洁明了的程序菜单;一个是智能化的模块设计,减少了许多人工操作,如 功能模块操作结束后,均会返回主菜单进行下一模板的运

40、行,并提示是否再进行类似的 操作,这样给用户带来了操作的方便,大大提高了学生选课的效率还有就是提示语言既 简洁又明确,层次分明等等;当然也有缺点如程序仍然存在不合理的地方,例如程序某 些部分输入错误不能立刻返回改正;信息表达方式不丰富,比较单一,缺少图片、音乐 等元化表达方式。编程过程结构体有 float 型数据时系统提示有错误,用 int 或 char 型代替然后定义 可解决。在调试没运行完自动跳出主界面:主要可能遇到 float 型数据时系统错误。有 些字母输入错误,仔细查找就可解决;插入链表阅读和输出文件不熟悉;不熟悉如何使 形参与实参一一对应。经过查询资料和老师同学们的帮忙基本解决了。

41、通过这一周的的 C 语言课程实训,不仅巩固了自己之前掌握的 C 程序的设计基础, 还学弥补了在上课期间没有学会的知识。经过这次课设,我充分认识到了 C 语言的用 途是非常广的,功能也非常强大,是学计算机不可缺少的语言。更重要的是,在这次编 程中熟悉了编写一个比较复杂程序的流程,以及发现问题、解决问题的能力,为下一步 计算机语言的学习做了准备。之前感觉遥不可及的功能,现在可以实现了,非常感谢老 师和同学的热心帮助,这是我得以及时完成这个程序的重要因素。7.2 收获与总结总之,这次设计程序让我受益良多,我会好好珍惜像这种难得的机会。感谢老师这段时间来对我的教导。虽然在这次试训中我遇到了很多困难,但

42、在老师的帮助下都克服了过去。也让我真正学到了平时上理论课时学不到的一些实践性的东西。我会珍惜这次的经历的。再次感谢您对我的教导!7.3 程序的优缺点功能上的优点:1. 简洁明了的程序菜单。程序主要采用了六组层次不同的菜单,相互独立又相互联 系,巧妙相接,符合用户的使用习惯与思维。2. 人性化的程序提示语言, 程序提示语言较人性化, 不仅大多为祈使语句、 疑问句, 而且提示明确,具有较强的明确的指导作用。程序提示不仅层次分明,提示方式多样, 而且提示信息井然有序,更加有利于用户顺利、准确地进行程序的操作。3. 智能化的模块设计。程序的智能化主要体现在减少了许多人工操作。如功能模 块操作结束后,均

43、会返回主菜单进行下一模板的运行,并提示是否再进行类似的操作, 这样给用户带来了操作的方便,大大提高了学生选课的效率。程序的缺点:1. 程序虽然经过多次精简,但仅仅是形式上、小范围的精简,仍 未得到本质上的精简,即未找到更加简单、更加高效、更加合理、更小占用的资 源的算法。2. 程序仍然存在不合理的地方,例如程序某些部分输入错误会导致程序中止或转 向其他功能模块,即程序建议用户注意提示,进行合理的准确的输入,这样更有利于管 理工作。3. 程序功能仍然不够完善。例如信息表达方式不丰富,比较单一,缺少图片、音乐等元化表达方式参考文献1. 王连相 .C/C+ 程序设计 武汉大学出版社 .2013.72

44、. 谭浩强 C 语言程序设计 (第 2 版)学习指导清华大学出版社 .2012.123. 杨莉,龚义建 C 语言程序设计实训指导教程华中科技大学出版 .2009.64. 张小东,郑宏珍 C 语言程序设计与应用人民邮电出版社 .2009.45. 郭翠英 C 语言课程设计案例精编中国水利水电出版社 6 郭有强 C 语言程序设计清华大学出版社 7李丹程 ,刘莹,那俊 C 语言程序设计案例实践清华大学出版社 8 李丽娟 C 语言程序设计教程人民邮电出版社 9武雅丽 ,王永玲,解亚利 C 语言程序设计清华大学出版社 本次课程实训过程中,得到了指导老师的指导与支持。在此特别感谢谢老师的大力 帮助。指导老师

45、在总体结构、功能的把握上给予了非常大的帮助,同时为我们提供了非 常优越的设计环境,并对我在编程、算法设计等细节工作上给予了耐心的指导,对于我 顺利完成这次课程设计起到了关键性的作用。转眼间,一周的课程实训结束了,感谢老师为我们提供的每周数次的到教室上机调 试的机会,在那里,老师为我们解决各种难题,同学之间也可以相互讨论,这才有了今 天的成果,特别是老师的宝贵的意见,给了我很大的启示,同时也要感谢那些给予过我 帮助过我的同学们。同时,感谢校方给予我这样一次机会,能够独立地完成一次课程设 计,并在这个过程当中,给予我们各种方便,使我们在这学期快要结束的时候,能够将 学到的知识应用到实践中,增强了我

46、们实践操作和动手应用能力,提高了独立思考的能 力。感谢所有任课老师和所有同学在这两年来给自己的指导和帮助,是他们教会了我 专业知识,教会了我如何学习。正是由于他们,我才能在各方面取得显著的进步,在此 向他们表示我由衷的谢意。附录: 源程序代码#include "stdio.h"#include "string.h"#include "stdlib.h"#include "malloc.h"void prin1();void choose();typedef struct subjectsint num;char n

47、ame20;char kind10; / 课程编号 / 课程名称 / 课程性质int stime;/ 总学时int ttime;/ 授课学时int etime;/ 实验或上机学时int score;/ 学分int term;/ 开课学期struct subjects *next;SUB;SUB *head=NULL;SUB *create_form() / 创建链表SUB *head,*tail,*p;int num,stime,ttime;int etime,score,term;char name20,kind10;int size=sizeof(SUB);head=tail=NULL;p

48、rintf ("输入选修课程信息 :n"); scanf("%d%s%s%d%d%d%d%d",&num,name,kind, &stime,&ttime,&etime,&score,&term);while(num!=0)p=(SUB *)malloc(size);p->num=num;strcpy(p->name,name);strcpy(p->kind,kind);p->stime=stime;p->ttime=ttime;p->etime=etime;p->

49、score=score;p->term=term;if(head=NULL)head=p;elsetail->next=p;tail=p;scanf("%d%s%s%d%d%d%d%d",&num,name, kind,&stime,&ttime,&etime,&score,&term);tail->next=NULL;return head;void savefile() / 保存文件SUB *p;FILE *fp;fp=fopen("2.txt","w"); if(

50、fp=NULL)exit(0);printf ("课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期 n"); for(p=head;p;p=p->next) fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7dn", p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); fclose(fp);printf ("创建后的信息已放入 '2.txt&#

51、39; 文件中 n"); system("pause");void savefile1() / 保存文件SUB *p;FILE *fp; fp=fopen("3.txt","w");if(fp=NULL)exit(0); for(p=head;p;p=p->next) fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7dn", p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->

52、score,p->term); fclose(fp);printf ("创建后的信息已放入 '3.txt' 文件中 n"); system("pause");void readfile() / 阅读文件void *myInsert(SUB*);SUB *newSub; / 新课程int num,stime,ttime,etime;int score,term;char cname20,kind10,fname20;FILE *fp;fp=fopen("2.txt","r");while(!fe

53、of(fp)newSub=(SUB*)malloc(sizeof(SUB); fscanf(fp,"%d%s%s%d%d%d%d%dn",&newSub->num,newSub->name,newSub->kind, &newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&newSub->term); myInsert(newSub);fclose(fp);void prin() / 浏览所有课程SUB *ptr;

54、head=NULL;readfile();if(head=NULL)printf("nnt*NO RECORDS!*n");return;printf ("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期 n"); for(ptr=head;ptr;ptr=ptr->next) printf("%5d%12s%9s%9d%9d%11d%11d%7dn",ptr->num,ptr->name, ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); system("pause");void prin1() / 浏览所有选修课程SUB *ptr;FILE *fp;if(fp=fopen("3.txt","r")=NULL)printf("Cannot open file.n");choose();printf ("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开

温馨提示

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

评论

0/150

提交评论