




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生缴费管理系统长治学院课程设计报告课程名称: 数据结构课程设计 设计题目: 学生缴费管理系统 系 别: 计算机 专 业: 计算机科学与技术(软件技术方向) 组 别: 第十六组 学生姓名: sss 学 号: 000000000 起止日期: 2014年 9月 29日 2015年 1月10日 指导教师: 孙俊杰 第 1 页 共 14 页目 录第一章 需求分析21.1 课程设计题目21.2 课程设计思想21.3 课程设计任务及要求21.4 软硬件运行环境及开发工具3第二章 概要设计32.1 系统目标32.2 设计出友好的界面32.3系统功能分析42.4 设计流程图5第三章 详细设计63.1 硬件设计
2、与软件设计63.2 计算公式及过程63.3 程序代码63.3.1 建立算法程序63.2.2 从磁盘读入算法程序8第四章 调试与操作说明10第五章 课程设计总结与体会10参考文献:12附录13 第一章 需求分析1.1 课程设计题目学生缴费管理系统(采用无头结点带头尾指针的双循环链表类型定义一)1.2 课程设计思想 数据的链接存储方式就是用一组任意的存储单元来存放数据,这组存储单元可以是连续的也可以是不连续的(即可以动态分配的)。此处就是运用单链表的基本结构类型,综合运用各种运算对学生缴费系统进行各种操作以完成设计的任务及要求。1.3 课程设计任务及要求编写学生缴费管理系统:基本结构:学生证号、姓
3、名、年龄、性别、缴费时间、四年学费、确定是否缴费、四年总缴费函数模块:1密码启动修改模块 2数据保存读入模块3数据录入模块 4数据查找模块(按学号查询,姓名(包括模糊查询)查询) 5数据插入模块 6数据统计模块(分别统计每年缴费情况)7数据删除模块8数据排序模块要求: (1)由算法显示某学期是否缴费或欠费及总缴费 (2)当系统中存在一个数据库时,不能重新建立新数据库或不能从磁盘中读取新的数据库 (3)将统计的结果用文件输出 (4)(采用无头结点并且带头尾指针的双循环链表利用类型定义一)1.4 软硬件运行环境及开发工具 Microsoft Visual C+ 6.0 Windows XP和Win
4、dows 7第二章 概要设计2.1 系统目标 开发本系统的目的是为了学生缴费管理在一定程度上得到改善,使学校类人员更方便进行数据的处理。2.2 设计出友好的界面 界面的友好与否是用户评价一个软件优劣的重要因素,友好的界面可以让用户时刻保持一个良好的心情,有利于工作的顺利进行。界面可以适当改变格式,这样不至用户对同一个界面感到厌烦,同时有利于分开各个操作功能,有助于提高工作的效率。2.3系统功能分析 学生缴费的建立模块:用户根据学生信息录入数据,当录入学生证号已存在时,需换另一学生证号,但相同姓名可以录入多次。学生缴费的显示模块:当用户需要时,可以详细显示出学生的缴费信息学生缴费的查找模块:当用
5、户需要时,可以根据已经录入的数据来查找自己所需要的数据,查找时可以根据学生证号来查找,也可以根据学生姓名来查找。学生缴费的插入模块:当在管理需要时,用户可以根据需要,在已建立的数据的任意位置或是数据序列的末尾插入的数据。学生缴费的删除模块:用户可以根据需要,按学生证号或是学生姓名删除所要 删除的数据。学生缴费的修改模块:当在管理需要时,用户可以根据需要,修改已存在的学生缴费信息。学生缴费的统计模块:当在管理需要时,用户可以根据需要,将学生缴费信息中欠费的学生按不同学年依次输出。学生缴费的排序模块:当在管理需要时,用户可以根据需要,按要求对学生缴费信息进行整理排序。2.4 设计流程图密码匹配否?
6、退出登陆N Y进入操作界面选择操作修改操作存盘操作统计操作排序操作查找操作密码修改插入操作删除操作显示操作建立操作 插在任意处插在尾部按姓名删除按学号删除模糊查找按姓名查找按学号查找退出图1系统流程图第三章 详细设计3.1 硬件设计与软件设计 系统设计是把需求转化为软件系统的最重要的环节,系统设计的优劣在于在根本上决定的软件系统的质量,良好的数据结构设计,可以提高数据信息的存储效率,保证数据信息的完整性和一致性。同时,一个合理的数据结构有利于程序的实现。3.2 计算公式及过程设四个学年的缴费依次为:a,b,c,d四年总缴费为w=a+b+c+d3.3 程序代码3.3.1 建立算法程序LNode
7、*setlink(Link *head,LNode *tail) / (采用后插法)建立双循环链表 char numstr15,ch; LNode *q,*p,*r; int i,j; printf("是否录入数据?(y/n)"); scanf("%c%*c",&ch); if(ch='y') printf("输入学生证号,姓名,年龄,性别,学杂费,教材费,住宿费,缴费年度nn"); q=(Link)malloc(sizeof(LNode); q->next=q; q->pre=q; *head=q
8、; tail=q; p=q; while(ch='y') printf("输入学生证号: "); gets(numstr); while(!strlen(numstr) | !flagint(numstr) printf("输入学生证号: "); gets(numstr); r=(*head)->next; while(r!=(*head) && !(strcmp(r->numb,numstr)=0) r=r->next; if(strcmp(r->numb,numstr)=0) printf(&q
9、uot;学生证号以经存在!是否重新录入数据?(y/n): "); scanf("%c%*c",&ch); if(ch='y') continue; else break; strcpy(q->numb,numstr); q->yzzf=0; for(i=0;i<4;i+) strcpy(q->timsi,"末缴"); strcpy(q->timfi," "); /* 日期数组初始化清空 */ for(j=0;j<5;j+) q->yesfij=0; /* 实型
10、数组初始化清零 */ strcpy(q->numb,numstr); printf("输入姓名: "); gets(q->name); while(!strlen(q->name) printf("输入姓名: "); gets(q->name); printf("输入年龄: "); gets(numstr); while(!strlen(numstr) | !flagint(numstr) printf("输入年龄: "); gets(numstr); q->age=atoi(nums
11、tr); printf("输入性别(t/f): "); gets(q->sex); while(1) if(strcmp("t",q->sex)=0 | strcmp("f",q->sex)=0) break; printf("输入性别(t/f): "); gets(q->sex); q=scandata(q); /* 调用缴费函数 */ if(q!=p) q->next=*head; /链接后继指针 p->next=q; q->pre=p; p=q; tail=p; (*
12、head)->pre=tail; printf("是否继续录入数据?(y/n): "); scanf("%c%*c",&ch);if(ch='y'| ch='Y')q=(Link)malloc(sizeof(LNode);return tail;3.2.2 从磁盘读入算法程序void load(Link *head,Link tail) / 在当前目录中打开任意名字的文件Link p,q; char str30; FILE *fp; int i=0; printf("n"); printf
13、("n");printf(" *n"); printf(" * * n"); printf(" * * n"); printf(" * 课程设计单链表文件载入窗口 * n"); printf(" * * n"); printf(" * * n"); printf(" * * n"); printf(" * n"); printf("n"); printf("n"); print
14、f(" 输入载入磁盘文件名(可带路径) : "); gets(str);while(!strlen(str)printf(" 重新输入载入磁盘文件名(可带路径) : ");gets(str); fp=fopen(str,"rb"); while(fp=NULL) i+; if(i=3) printf("n"); printf("n");printf("n"); printf("n"); printf(" * n"); printf(&q
15、uot; * * n"); printf(" * * n"); printf(" * 请建立新链表后存盘保存 * n"); printf(" * * n"); printf(" * 选择新磁盘文件载入 * n") printf(" * * n"); printf(" *n"); scanf("%*c"); exit(0);printf(" 磁盘文件 %s 不存在!n",str); printf(" 输入载入磁盘文件名
16、(可带路径) : "); gets(str);while(!strlen(str) printf(" 重新输入载入磁盘文件名(可带路径) : "); gets(str); fp=fopen(str,"rb"); *head=inilink(*head);*head=(Link)malloc(sizeof(LNode); (*head)->next=(*head); (*head)->pre=(*head); p=*head;while(!feof(fp)q=(Link)malloc(sizeof(LNode);if(fread(q,
17、sizeof(LNode),1,fp)!=1)break;q->next=p->next; p->next=q;q->pre=p;p=q;tail=p;p=*head; *head=(*head)->next; (*head)->pre=tail; tail->next=*head; free(p); fclose(fp);printf("n 磁盘文件 %s 装入内存成功!n",str); printf("nn"); printf(" 按任意键返回到主窗口!"); scanf("%*
18、c");printf("%s%8s%6d%6s%9s%9s%9s%9s%10.2fn",tail->numb,tail->name,tail->age,tail->sex,tail->tims0,tail->tims1,tail->tims2,tail->tims3,tail->yzzf);第四章 调试与操作说明在系统的制作过程中,不免我们会遇到很多的问题。当遇到问题时,系统会提示出是哪一个地方出现了问题,我可以根据提示做出相应的改进。仔细检查代码,有错误时会无法进入界面进行相应的操作。当然由于我的经验还不足,
19、该程序还不是特别的完美。第五章 课程设计总结与体会经过这段期间对数据结构和C语言的学习,让我对计算机这门专业有了进一步的了解,通过对课程设计的完成,也让我对我所学习过的知识有了更深的理解。也让我知道有时候只靠自己是远远不够的,只有相互沟通与合作才能达到我们的要求,共赢才是做好的目标。在本次课程设计结束后也使我们认识到数据结构的主要内容为常用的数据结构的存储结构和核心操作的算法设计与实现,不仅是计算机程序设计的重要理论技术基础,也是计算机学科的核心课程,该课程的学习效果不仅关系到许多后续专业课的学习,也关系到软件设计水平的提高和专业素质的培养。在刚开始知道要编写课程设计时,觉得有些难以置信,一千
20、多行的程序对于涉足未深的我们有些不大可能,但随着期末的临近,每一部分程序逐渐的形成,渐渐地课程设计接近了完成,当然在这过程中也面临着许多困难和挑战,但当最后解决了,又有一种难以抑制的高兴和发自内心的成就感。每当调试程序的时候都觉得很繁琐,但这就是要求我们拥有足够的耐心和细心,如果我们将来要涉足编程这一行,基本素养就要从现在培训起来。凡事欲速则不达,编写课程设计就要将模板依次检查,而这就需要我们平时注重习惯的培养和坚持。课程设计是将我们所学的知识和现实问题相结合而形成的运行的程序,这对于理论联系实际有很大的帮助。正如孙老师说的那样,如果我们能真正做好课程设计,就会对考研起到很大的帮助。这并不是大
21、话,它能让我们构想到现实问题中应该会、可能会发生的各种事件,让我们的思维更加全面,见识更加广阔。除此之外,我认为这次做课程设计让我们也更加了解我们的生活,不论是购房贷款还是图书管理还是学生缴费,都和我们的生活息息相关,通过此次课程设计让我更加了解了,我们平日里没咋在意过的学生缴费原来是可以通过程序的设计让其简单、方便。我自小就认为“态度决定一切”,所以每做一件事不论是大是小都应该怀着严谨仔细的态度对待,每次打开电脑,编写程序时,机器没有思维,它只能认识正确的算法,因此我们编程时决不能想着偷懒,这是我们自己的事情,我们对它不负责就是对自己不负责。更何况这样也得不到正确的答案,对自己没有意义,对事
22、情没有意义,这是得不偿失的,我们应该深刻注意到这个问题。与此同时,我觉得在做什么事的时候先做容易的会比较容易上手,再做难的复杂的就会相对没那么难下手。所以在修改课程问题的时候,我一般从较为简单的模块来修改,有时仅仅是一个定义的问题或是参数调用的错误就会导致全篇的错误。但有时我会一下子从复杂模块入手,找不出问题就会觉得头疼,进而耽搁了当天的任务。随着编程任务的进行,我也发现了这一点,所以每次都从简单的开始抽丝剥茧,即使麻烦却感到有条有理,比以前更有耐心和信心。每个任务的完成过程就像思维的一个旅行,中途会有很多路的选择来到达目的地,我们可以选择捷径来提早到达,也可以选择观赏路途风景在到达。做课程设
23、计也是如此,我们可以拿他人做好的程序稍加修改就完事,也可以选择自己一步一步来编程。毋庸置疑,是后者更有意义。我们虽然都能完成目标,但是选择后者会让我们获益匪浅。我的课程设计题目是学生缴费,要求的是无头结点带头尾指针的双循环链表类型定义一。这必须要求自己有坚实的功底。我必须回顾以前的知识并学习将要用到的新知识。编程就像等阶梯一样,刚开始很容易,但随着高度的增加和问题的隐蔽性增强,编程的难度愈来愈难,这也就需要我时刻保持思路的清晰,这样才能成功解决问题。老实说在临近交作业的前几天我才知道我的课程设计的题要用到二级指针才能完成题目,当时有些担心,因为这一部分学的时候不是很扎实,但在复习了以前的笔记和
24、同学的讲解下,我对这一部分的知识有了更好的掌握。除此之外,学生缴费系统,主要实现学生缴费系统的管理,要求能进行资料的输入和管理,并且每个模块要实现自己的功能。起初不能急于编程,首先是在自己的脑中思考每个模块要干什么,要实现哪些功能,联系所学知识,并画出模板图形,便着手开始编程序。刚开始的时候总会觉得无从下手,但既然自己画出了模板图形,就要利用它相信它。当编有些程序的时候,总会努力复习以前的知识,而且多是自己进行程序推算,虽然很费劲,但总归是收获不少。有时自以为以前的功课还算可以,但碰壁的次数多的超出自己的意料,不得不说自己是真正的半瓶子醋。刚开始做的是自己的程序要有一个大的环境,因为我是根据已
25、有模板改的,所以大的环境是有的。本来以为改别人的会比较简单一些,但是在改的过程中也出现了很多问题,不断的修正就是不断的学习过程,当我们全身心的投入其中时,实际上是一件很有乐趣的事情。我个人感觉,所有模块中插入模块、删除模块和排序模块是比较难的,在这些模块中几乎用到了所有学过的知识。在这个过程中我完成了新旧知识的一次完整的学习与复习而且将它们融合。从中我也知道,我们所学的知识是相互关联的,以前我们在学习交流中总是觉得所学知识的连贯性差,但事实并如此,是我们没有真正理解知识,到用的时候又觉得没有接触过。病症所在就是每当我们学完一个专业课后就将它的内容抛之脑后,并没有想到他是为我们以后的学习打基础,到我们学习新的知识时才觉得有所欠缺。任何事情的作法都在遵循同样的道理和规律,做课程设计是这样,做其它事情也是如此。万事都要善始善终,不能虎头蛇尾更不能置之不理。老师对我们的要求怎样都不为过,因为这些都是我们作为计算机专业应当掌握的知识,如果我们连这点基本素养都没有就难以在IT行业中有立足之地。有些事情是牵一发而动全身的,我们在执行任务时要小心谨慎,不可敷衍交代,敷衍任务就是敷衍自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 本溪市明山区2024-2025学年小升初复习数学模拟试卷含解析
- 云南旅游职业学院《混凝土和砌体结构设计》2023-2024学年第二学期期末试卷
- 广西中远职业学院《形体训练与健美》2023-2024学年第一学期期末试卷
- 宁波财经学院《趣味逻辑学与人生智慧》2023-2024学年第二学期期末试卷
- 兴义民族师范学院《数字系统设计》2023-2024学年第二学期期末试卷
- 渤海理工职业学院《外国电影史》2023-2024学年第二学期期末试卷
- 柱上式无功补偿装置项目风险评估报告
- 广州科技贸易职业学院《心理学核心理论专题研究》2023-2024学年第一学期期末试卷
- 贵州体育职业学院《童装结构与工艺设计》2023-2024学年第二学期期末试卷
- 右江民族医学院《英语学术文献阅读》2023-2024学年第二学期期末试卷
- 【真题】2023年淮安市中考道德与法治试卷(含答案解析)
- (2024年)《蛙泳》说课稿
- 内镜中心护士长如何管理
- 养老保险9大知识讲座
- 太原市2024年高三一模(高三年级模拟考试一)英语试卷(含答案)
- 社区获得性肺炎临床路径全套
- 小学英语学科项目化学习案例-
- 微观经济学复习题
- 老年带状疱疹诊疗专家共识
- 现代汉语词汇学课件
- 大学课件-机电传动控制(完整)
评论
0/150
提交评论