苏惠荣课程设计报告.docx
《苏惠荣课程设计报告.docx》由会员分享,可在线阅读,更多相关《苏惠荣课程设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
苏惠荣课程设计报告
长治学院
课程设计报告
课程名称:
数据结构
设计题目:
学生缴费管理系统
系别:
计算机系
专业:
计算机科学与技术
组别:
27
学生姓名:
苏惠荣学号:
09407122
起止日期:
2011年3月20日~2011年5月25日
指导教师:
孙俊杰
目录
第一章需求分析---------------------------------------------------------------------------3
1.1课程设计题目---------------------------------------------------------------3
1.2课程设计任务及要求------------------------------------------------------3
1.3课程设计思想---------------------------------------------------------------3
1.4程序运行的环境------------------------------------------------------------3
第二章概要设计-----------------------------------------------------------------------------3
2.1系统目标----------------------------------------------------------------------3
2.2设计出友好的界面----------------------------------------------------------3
2.3系统功能分析----------------------------------------------------------------3
第三章详细设计----------------------------------------------------------------------------------4
3.1课程设计的流程图-----------------------------------------------------------------------4
3.2程序代码-----------------------------------------------------------------------5
3.2.1建立算法-------------------------------------------------------------------5
3.2.2读盘算法-------------------------------------------------------------------7
第四章调试与操作说明--------------------------------------------------------------------------8
第五章课程设计总结与体会------------------------------------------------------------9
致谢--------------------------------------------------------------------------------------------------------11
参考文献-----------------------------------------------------------------11
成绩评定-----------------------------------------------------------------11
第一章需求分析
1.1课程设计题目
学生缴费管理系统
1.2课程设计任务及要求
该课程设计要求利用带头结点并且带头尾指针的双向链表(类型定义二)完成一个学生缴费管理系统,算法步骤详细但不繁琐,方便用户更好的使用。
具体要求如下:
结构类型定义包括:
学号、姓名、年龄、性别、缴费时间、四年学费、是否缴费、四年总费。
模块共有八个,包括:
密码启动修改模块,数据保存读入模块,数据录入模块,数据查找模块(按学号查询,姓名(包括模糊)查询),数据插入模块,数据统计模块(分别统计每年交费状况),数据删除模块,数据排序模块。
它实现的功能如下:
1.使用密码启动模块进入界面,并且能修改密码;
2.完成学生的基本资料以及缴费情况的录入;
3.实现学生有关资料的建立,读入,查询,排序,删除,插入以及其它操作
1.3课程设计思想
先分别利用学过的C语言和数据结构双向链表的相关知识编写各个模块,再利用函数调用等方式将这些模块连接起来,然后上机调试最后修改成为符合题目要求的学生缴费管理系统。
1.4程序运行的环境
Turboc2.0软件平台,WindowsXP,记事本等
第二章概要设计
2.1系统目标
开发本系统的目的在于方便学校财务处对学生缴费情况的管理,取代了以前通过人工计算或计算机计算的方式,虽然不是很进步,但是在一定程度上还是很有效的。
2.2设计出友好的界面
界面的友好与否是用户评价一个软件优劣的重要因素,友好的界面可以让用户时刻保持一个良好的心情,有利于工作的顺利进行。
界面可以适当改变格式,这样不至用户对同一个界面感到厌烦,同时有利于分开各个操作功能,有助于提高工作的效率。
2.3系统功能分析
这个程序有八个模块:
1.密码启动修改模块(若密码输入三次错误则退出)
2.数据录入模块(不能输入相同学生学号)
3.数据查找模块(按学号查询,姓名(包括模糊查找)查询)
4.数据插入模块(插入到尾部,插入到任意位置)
5.数据保存和读入模块(保存到文件中)
6.数据统计模块(分别统计每年缴费情况)
7.数据删除模块(按学号、姓名进行删除)
8.数据排序模块(按学号排序,按费用排序)
第三章详细设计
3.1课程设计的流程图
3.2程序代码
3.2.1建立算法程序:
voidsetlink(Linklist*h)
{
inta,c,i=0;
longintnumb;
chars;
Linkp,q,r;
{
printf("确定重新建立新的学生缴费资料?
(1-是/2-否):
");
scanf("%d",&a);
if(a==1)
{
destroylink(h);
printf("建立新的学生缴费资料:
");
p=h->head;
printf("输入数据?
(1:
yes2:
no)\n");
scanf("%d",&i);
while(i<1||i>2)
{
printf("输入有误,请重新输入:
\n");
scanf("%d",&i);
}
if(i==1)
{
printf("学号(输入0时退出):
");
scanf("%ld",&numb);
if(numb==0)
{
printf("是否保存?
(1--是;其他--否)");
scanf("%d",&c);
if(c==1)save(h);
elseinterface2(h);
}
while(numb!
=0)
{
r=h->head->next;
while(r!
=NULL)
{
if(r->num==numb)
{
printf("已存在相同的学号,请重新输入!
\n");
getch();
printf("学号(输入0时退出):
");
scanf("%ld",&numb);
if(numb==0)
{
printf("是否保存?
(1--是;其他--否)");
scanf("%d",&c);
if(c==1)save(h);
elseinterface2(h);
}
}
elser=r->next;
}
q=(Link)malloc(sizeof(LNode));
q->num=numb;
printf("姓名:
");
scanf("%s",&q->name);
printf("性别(g-女;b-男):
");
getchar();
gets(q->sex);
printf("年龄:
");
scanf("%d",&q->age);
printf("第一学年缴费时间:
");
scanf("%s",&q->term1);
printf("第一学年学杂费:
");
scanf("%d",&q->fee1);
printf("第二学年缴费时间:
");
scanf("%s",&q->term2);
printf("第二学年学杂费:
");
scanf("%d",&q->fee2);
printf("第三学年缴费时间:
");
scanf("%s",&q->term3);
printf("第三学年学杂费:
");
scanf("%d",&q->fee3);
printf("第四学年缴费时间:
");
scanf("%s",&q->term4);
printf("第四学年学杂费:
");
scanf("%d",&q->fee4);
q->next=p->next;
p->next=q;
q->pre=p;
p=q;
q=(Link)malloc(sizeof(LNode));
printf("学号:
(输入0时退出!
)");
scanf("%ld",&numb);
}
h->tail=p;
if(numb==0)
{
printf("是否保存?
(1--是;其他--否)");
scanf("%d",&c);
if(c==1)save(h);
elseinterface2(h);
}
}
elseinterface2(h);
}
else
interface2(h);
}
printf("是否显示录入情况?
(y/n)");
getchar();
scanf("%c",&s);
switch(s)
{
case'y':
case'Y':
printlink(h);break;
case'n':
case'N':
interface2(h);break;
default:
printf("你的输入有误,请重新输入!
");
getch();
getchar();
}
}
3.2.2从磁盘往出读函数程序:
voidreadinto(Linklist*h)
{
FILE*fp;
Linkp,q;
charfilename[20];
destroylink(h);
initlink(h);
p=((Link)malloc(sizeof(LNode)));
q=h->head;
h->head->next=p;
printf("请输入路径及文件名:
");
scanf("%s",filename);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("打开文件失败!
\n");
exit(0);
getch();
}
else
{
while(q->next!
=NULL)
if(fread(p,sizeof(LNode),1,fp)!
=1)
{
printf("文件读出错误!
!
!
");
exit(0);
}
else
{
p->pre=q;
q->next=p;
q=p;
h->tail=q;
if(q!
=NULL)
p=((LNode*)malloc(sizeof(LNode)));
else
{
printf("文件读入成功!
\n");
fclose(fp);
getch();
initlink(h);
}
}
printf("文件读入成功!
\n");
fclose(fp);
getch();
printf("\n");
}
}
第四章调试与操作说明
进入TURBOC2.0系统,运行,先是密码启动,进入界面,再选择相应的编号操作。
例如:
1.建立新的学生资料,在录入的时候,不能录入相同编号的学生资料,否则会提示“已存在相同的学号,请重新输入!
”;
2.插入新的学生资料,进入插入操作界面时,可以选择插入到尾部或插入到任意位置处;
3.选择操作九,将操作结果存盘,以便将来使用学生档案时,直接进行使用;4.选择操作十一,退出程序。
第五章课程设计总结与体会
课程设计结束了,但是体会的事物我想我一辈子都不会忘。
从开始觉得这是一个不可能完成的项目到后来有了点眉目,再到后来基本上编的差不多,一直到最后结束,说是课程设计的完成倒不如说是心灵的历练来的准确,在还没找老师看之前,看着自己努力一个月的劳动成果,真的是一种前所未有的充实,因为只有你付出了,你才能体会到其中的点点滴滴。
上了几节课后,老师正式把课程设计抬到了桌面上来,一开始,老师给我们演示了一下他编写的算法,我觉得很是神奇,虽然自己学的是计算机专业,鉴于软件领域发展前景不错,以后有可能涉足于软件这个行业,但这还是第一次看到软件的原程序代码,并且自己要最后做出这样一个庞大的项目。
一个从没涉及的的方面——这给我了很大的积极性和热情。
虽然说是很亢奋,但也正是这样的亢奋,让我怀疑自己是否有这样的能力。
于是早早就进入了编课程设计的阶段,什么都不会,也是第一次发现大脑竟然真会游离到这种程度,竟然还真是什么都没有。
看笔记,网上查资料,问学长,学姐们,终于知道了学号、姓名、年龄、性别、缴费时间、四年学杂费、是否缴费、四年总费应该写到哪里了,原来它就是结构定义的内容,哎!
不识庐山真面目,只缘身在此山中。
这才是小小的一步,但就是这样小的成果让我开心了好长时间,接下来要解决的任务是编写每个模块的程序。
又是一系列的困难,最头疼的是:
我是类型定义二,子程序中的指针怎么解决,难道用Linklist定义,那就算定义了怎么用也还是个问题啊,好几天的心情总是灰蒙蒙的,有次和同学闲聊,说到这个话题,本是一句无心之话,但就是这样的无心解决了这个问题,真的谢谢这个同学啊,这个解决了后,我赶快进入编写子程序的进程,这个也不容易,因为当时我没电脑,往往是借别人的电脑一用就是一天,饭也没想过要吃,就连晚上我也睡不着,干脆就编程序,一连的通宵啊,我终于知道了计算机系的女生好难活啊,人家都是往脸上扑粉,而我们脸上却积满了辐射的something。
编完子程序代码后,怎么连接啊,一盘散沙,可什么用都没有的!
,自己的人际交往范围在比自己大一届中少之又少啊,所以我就只能是厚着脸皮抓住一个学姐不放,见了人家就问,见不着就去人家宿舍,我估计课程设计这么多天下来,人家再不敢见我了,还有连带她的舍友。
当然每个人又不是神通,只解决了一些问题,剩下的就是和同学交流,最后终于是编的差不多了。
此时大家也都已经编的差不多了,我和同宿舍的同学进行比较,这时候我发现我们的算法还是有很多的不足之处的。
我没有插入到任意位置处,也没有按姓名查找,这是不符合老师的要求的,所以我们开始借鉴舍友的。
很快我的课程设计告一段落了。
看着自己的课程设计,我真是非常的高兴。
因为这是我们努力的结果,我体会到了团队合作的重要性,同时我的编程技巧和编程思路也大大的开阔了。
我想的东西也多了很多。
我想QQ是怎么编写的,它的原代码都是怎么样的。
总而言之,这次课程设计,不仅给我锻炼自己的机会,而且让我学到了很多东西,这是我这次编程获得的最大体会。
老师开始查课程设计了。
我信心满满的去了机房。
我认为我第一次肯定过了,老师查到这,我认真的给老师找我的每一个模块。
但当查到我的建立算法的时候,老师说我的不对。
就这样我的自信心被打击的不复存在。
我又开始修改。
当时我是非常的纳闷,建立怎么会有问题呢,那它为什么可以运行的这么好呢?
当然,我最相信的是我的课堂笔记。
所以我认真的看我的笔记本,但是双链表用类型定义二没有建立的算法,我想单链表不是编的算法多么,肯定可以找到类似的,可是当真正实施的过程中发现,算法很多,但基本上全是类型定义一,而当我仔仔细细检查我的建立算法时,我觉得错误的原因主要是因为类型二这出了问题,找老师之前我想过无数中可能,好的、坏的,为了防止坏的发生,我找已经让老师检查的同学,让他模拟老师的流程走一遍,第一个错误出现了,我编的程序密码必须是六位才能修改成功,而老师要求的是任意位数,接下来就一直在处理这个问题,好不容易解决了,我拜托他再走一遍,这次发现我的删除算法,只有按学号删除,而没有按姓名删除。
查找算法中,每次显示同名者就全显示出来了,而这样是不合理的,假如有一百个学生,那前面的还没有看就过去了,所以正确的应该弄成每次只显示一个,按任意键继续显示。
感觉没什么问题了,但到学校机房,运行几次后发现,课程设计不能统计了,很显然统计模块出问题了,但用记事本打开后看了一遍,没有任何问题,我又找同学看,她也说没有问题,就这样本来想早早给老师检查,但是又耽误了,回宿舍后,我把别人的建立打开一个一个的对,但还是没发现什么问题,我有些慌了,不会花了这么长时间的课程设计,就这样与世无缘吧,过了一天,同学给我打电话说,我问过他后,他回去又检查了一遍,他把可能出现的错误都改了一遍,最后发现是类型定义出问题了,把long改成int就对了,我问他为什么,他说也不知道,自己这时才意识到,做件真是个细活,任何的小错误都演变成一场大灾难,我还是不放心,听说有同学把排序做了两种方法,我也赶快尝试,用姓名排序,我还是没有想明白,所以就换成了用总费用排序,做了这项工作后,我才有勇气让老师检查,我屏住呼吸,特认真按老师的要求走,就害怕自己的手误,最后给错了,可是最后结果是我从没有想到过的,我一直在关注着运行后哪可能出问题,哪不完美,怎么会想到建立这就被卡住了,老师就根本没有查到让我运行哪个模块这里,之前的一切努力再这之后都没有了意义。
调整好心态去上课,老师并没有像我想的那样,他又说起了课程设计,他说,第一遍查完后,他心里已经有数了,哪些人认真编了,哪些人没有认真编。
忽然心很痛,心里一遍遍重复,老师,您是否会知道一个建立都没有过的人私下费了多大的努力,她有多么重视这一次的课程设计,还是如往日一样的忙着弄课程设计的建立算法,只是这一次的心里有了微妙的变化,有点害怕了,又到了上机时间,我终于鼓足勇气,让老师查我的第二遍,不是说我坚强,只是想早死早超生,不想再这样每天下去了。
到了老师那说明了来意,老师说第一遍已经知道你们怎么样了,不必查第二遍了,我有些慌了,说老师我是在建立那出问题了,还没查到模块了,老师还是说不用查了。
我无难的走下来,做到自己的位置上,想了一下,接着又上去了,我告诉老师这个课程设计是自己编的,自己为它费了将近一个月的时间,老师虽然还是说不查,但是他在我那做了个标记,其实我也不知道那有多大的用,但是心理很舒服,毕竟我已经做了一切努力,而且老师也开恩了,呵呵。
通过这次的课程设计,让我明白了有时候一个人的力量真的很不够。
我发现了耐心重要性,发现了合作的重要性,更发现了学习的重要性。
没有什么是不可能的。
这不仅可以用的我的学习生活中,也为我将来的工作提供了一次实践的机会。
让我深刻了解到,我们现在做的是小程序,需要合作,将来我们做大程序,更需要合作。
在刚开始不理解老师为什么要看到我们的错误不指出来,而让我们费那么的劲,再到现在课程设计结束,我终于明白了,如果当初就指出错误,可能我现在就不会学到这么多的东西,在这里谢谢老师的良苦用心。
※谢辞:
该课程设计是我第一次编写程序,一开始真的不知道该怎么做。
为了能更好的完成,我向学长学姐以及同学们请教一些自己不懂的问题。
在此,我要向帮助过我的学长学姐以及同学们表示感谢,感谢你们的支持与帮助。
还要感谢老师的良苦用心,让我学到更多的知识和处事能力。
▲参考文献:
【1】《数据结构使用教程》,徐孝凯编著,清华大学出版社,1999
【2】《C程序设计》(第三版),谭浩强编著,清华大学出版社,2009
【3】《数据结构》(C语言版),严蔚敏,吴伟民编著,清华大学出版社,2010
指导教师评语:
指导教师签名:
年月日
成
绩
评
定
项目
权重
成绩
1、设计过程中出勤、学习态度等方面
0.1
2、设计技术水平
0.4
3、编程风格
0.2
4、设计报告书写及图纸规范程度
0.3
总成绩