班级学籍管理系统数据结构课程设计.docx
《班级学籍管理系统数据结构课程设计.docx》由会员分享,可在线阅读,更多相关《班级学籍管理系统数据结构课程设计.docx(17页珍藏版)》请在冰点文库上搜索。
![班级学籍管理系统数据结构课程设计.docx](https://file1.bingdoc.com/fileroot1/2023-6/13/eb8a5a95-c41a-4cf4-a8b2-554e44cce914/eb8a5a95-c41a-4cf4-a8b2-554e44cce9141.gif)
班级学籍管理系统数据结构课程设计
某某大学
课程设计任务书
课程名称:
数据结构课程设计
设计题目:
班级学籍管理系统
系别:
计算机系
专业:
计算机科学与技术
学生姓名:
学号:
起止日期:
指导教师:
课程设计题目
班级学籍管理系统
姓名
学号
班级
系别
计算机系
专业
计算机科学与技术
组员
某某某
指导教师
某某某
课程设计目的
1、为了帮助自己对链表有更深入的理解和使用;
2、为了管理员对学生学籍管理的方便与快捷;
课程设计环境
Turboc2.0、WindowsXP
课程设计任务和要求
学生学籍管理系统以计算机为工具,将学生的信息保存在计算机中,随时可以调出存储在系统中的每个学生的学籍及相关信息,便于管理员查找,给新学生建档等。
课程设计工作进度计划
序号
起止日期
工作内容
1
2008-3-16
需求分析、功能设计
2
2008-3-27
界面设计
3
2008-4-12
密码编写
4
2008-4-20
源代码编写
5
2008-4-26
调试及后续检查
6
2008-5-1
提交作业
教研室审核意见:
教研室主任签字:
年月日
教学院(系)审核意见:
主任签字:
年月日
第一章需求分析----------------------------------------------------------------------1
第二章开发过程----------------------------------------------------------------------2
2.1系统目标---------------------------------------------------------------------2
2.2合理的设计数据库---------------------------------------------------------2
2.3设计出友好的界面---------------------------------------------------------2
2.4实现基本功能和和一些特殊的功能------------------------------------2
2.5功能划分---------------------------------------------------------------------2
2.6系统功能分析---------------------------------------------------------------3
第三章详细设计----------------------------------------------------------------------4
3.1系统设计方法----------------------------------------------------------------4
3.2数据库设计-------------------------------------------------------------------4
3.3系统结构设计----------------------------------------------------------------5
3.4系统界面设计----------------------------------------------------------------5
3.5部分程序代码----------------------------------------------------------------6
第四章调试与操作说明---------------------------------------------------------11
第五章课程设计与体会-----------------------------------------------------------12
致谢
参考文献
第一章需求分析
用户需求分析
该实习完成的是一个简单的学生学籍管理系统,功能比较简单,要在实际中应用还需进一步的改进和功能的进一步的扩充,它实现的功能如下
1、完成学生学籍数据的录入。
2、实现学生学籍信息的简单查询,删除及排序。
使用的开发工具:
Turboc2.0、WindowsXP系统的设计。
第二章开发过程
2.1系统目标
开发本系统的目的在于代替当前系统的手工计算、制表等工作。
我们一般设计系统都要完成以下的几个要求,以便于用户进行操作。
这样才能使系统易学易用。
2.2合理的设计数据库
尽量合理地减少数据库数据的冗余,使重复的数据不得录入,这样将不必要的多占用存储空间,减少产生混乱影响的危险,还能提高计算机的运行速度。
2.3设计出友好的界面
界面的友好与否是用户评价一个软件优劣的重要方面之一,使用户有一个良好的心情。
另外要充分的利用Turboc2.0提供的强大的功能,合理的编程,实现各模块的功能,实现各界面的合理的转换。
2.4实现基本功能和一些特殊功能的操作
该系统要求除了能实现信息的录入,删除,插入,更新等基本功能之外,还要求能够根据用户的需要进行操作。
2.5功能划分
本系统的功能主要划分为:
1.学生学籍信息录入 2.查询,插入,排序,删除模块3.学生学籍信息保存
功能描述如下:
1.学生学籍信息录入:
实现学生学籍信息的录入。
2.查询:
根据学生学籍信息进行查询、修改当前信息。
插入:
可将任一学生学籍信息插入到想要插入的位置。
排序:
实现按学号进行排序。
删除:
实现将数据库中已有学生的学籍信息删除,有按学号和姓名删除两种方法。
3.学生学籍信息保存:
实现学生学籍信息的保存。
2.6系统功能分析
开发这个系统的目的就是要帮助学校学生的学籍管理人员提高工作效率,实现学生学籍管理系统的系统化、规范化和自动化。
根据这个系统所要实现的目的和任务,总结出这个系统最终要实现的主要功能如下:
●数据设置部分:
主要包括学籍信息的内容。
●数据采集部分:
主要完成学生信息的录入。
●数据查询部分:
主要包括学生学籍信息查询、修改(插入、删除)、排序。
学生学籍模块具体功能及数据流图
A、学生学籍管理数据概况列表如下。
输入:
学号、姓名、成绩
处理:
学籍信息的查询、修改、排序。
数据存储:
学籍信息。
输出:
进行下一条记录。
B、人口登记基本情况操作数据流图:
C、学生学籍查询数据概况:
输入:
输入查询学生学号
处理:
查询所需学生信息
数据存储:
学生学籍基本信息
输出:
所查学生信息
第三章系统设计
3.1系统设计的方法
系统设计是把需求转化为软件系统的最重要的环节。
系统设计的优劣在根本上决定了软件系统的质量。
系统设计的五个方面的内容:
体系结构设计、模块设计、数据库设计数据结构与算法设计、用户界面设计。
3.2数据库设计
3.2.1数据库设计概述
数据库是信息管理系统的后台,存储着所有的信息,在信息管理系统中有着很重要的地位。
数据库设计的好与坏,直接影响到这个系统的运行效率。
良好的数据库设计,可以提高数据信息的存储效率,保证数据信息的完整性和一致性。
同时,一个合理的数据库结构有利于程序的实现。
这里选用WindowsXP作为后台数据库。
3.2.2数据实体字典
节点定义:
每个节点包括数据域data,指针域pre,next,结点示意图如下:
Node:
Data:
数据
链表定义:
链表h,有头结点,链表部分示意图如下:
数据表定义:
学生学籍信息
类型
学号
int
姓名
char[10]
成绩
int
3.3系统的结构设计
流程图
3.4系统的界面设计
密码登陆系统窗口,如图3.4-1
****************数据结构课程设计**********************
*计算机一班*
*作者:
某某某*
*原始密码:
000000*
图3.4-1
系统窗口,如图3.4-2
**********欢迎进入学生学籍管理系统**********
|*1数据录入2数据查找*|
|*3数据删除4数据插入*|
|*5显示数据6数据排序*|
|*7密码修改8退出系统*|
图3.4-2
3.5部分程序代码
(1)结构类型定义
structstudent
{/*student结构体定义*/
intnum;/*学号*/
charname[10];/*姓名*/
intgrade;/*成绩*/
};
typedefstructnode
{/*双向链表定义*/
structstudentdata;/*数据域*/
structnode*pre;/*指向前驱的指针*/
structnode*next;/*指向后继的指针*/
}*link;
(2)主函数模块
main()/*主函数模块*/
{
linkhead;intm,n,flag=1;charstr[6]="000000";
if((fp=fopen("d:
\\code.txt","r"))==NULL)
{
fp=fopen("d:
\\code.txt","w");
fputs(str,fp);
fclose(fp);
}
initlist(head);
if(password()==1)
{gotoxy(30,10);system("cls");
loadfile(head);
while(flag=1)
{
printf("\n\n**********欢迎进入学生学籍管理系统**********\n");
printf("\n\n\n\n");
printf("|*1数据录入2数据查找*|\n\n");
printf("|*3数据删除4数据插入*|\n\n");
printf("|*5显示数据6数据排序*|\n\n");
printf("|*7密码修改8退出系统*|\n\n");
printf("请选择准备操作的对应数字:
\n");scanf("%d",&m);system("cls");
switch(m)
{
case1:
setlink(head);clearscreen();break;
case2:
findlink(head);clearscreen();break;
case3:
deletelink(head);clearscreen();break;
case4:
insertlink(head);clearscreen();break;
case5:
printlink(head);clearscreen();break;
case6:
sortlink(head);clearscreen();break;
case7:
if(password()==1)
printf("密码正确!
\n");
printf("欢迎修改密码!
\n");
modifycode();
clearscreen();break;
case8:
flag=0;exit(0);break;
default:
printf("请输入正确的数字\n");
clearscreen();break;
}
}
}
}
(3)录入模块
voidsetlink(linkhead)/*录入模块*/
{
intn,i,j=0;charch;linkp,q;structstudentst[10];
p=head->next;
ma:
printf("您想录入几条信息?
\n");
scanf("%d",&n);
for(i=0;i{
printf("请插入第%d条信息\n",i+1);
printf("姓名:
");scanf("%s",st[i].name);
printf("\n学号:
");scanf("%d",&st[i].num);
printf("\n成绩:
");scanf("%d",&st[i].grade);
printf("\n");
}
for(i=0;i{
for(j=i+1;j{
if(st[i].num==st[j].num)
{
printf("您输入了相同的学号,请重输!
");gotoma;
}
}
}
for(i=0;i{
p->data=st[i];p->next=(link)malloc(sizeof(structnode));
p->next->pre=p;
p=p->next;
}
q=p;p=p->pre;p->next=NULL;q->pre=NULL;free(q);
save(head);printf("\n学生档案录入完毕!
\n");
}
(4)插入模块
voidinsertlink(linkhead)/*插入信息模块*/
{
intm,n,k,i;linkp,q;charstr[10];structstudentst;
p=head->next;
printf("请插入信息!
!
\n");
bao:
printf("姓名:
");scanf("%s",st.name);
printf("\n学号:
");scanf("%d",&st.num);
printf("\n成绩:
");scanf("%d",&st.grade);
p=head->next;
while(p!
=NULL)
{
if(p->data.num==st.num)
{
printf("此学号的学生已经存在,请重输\n");
gotobao;
}
p=p->next;
}
printf("插入的信息应该放在哪个学号后面?
\n");
scanf("%d",&n);
p=head->next;
while(p&&p->data.num!
=n)
{
p=p->next;
}
if(!
p)printf("未在数据库中找到相关学号!
\n");
else
{
q=(link)malloc(sizeof(structnode));
q->data=st;
q->next=p->next;q->pre=p;
p->next=q;p->next->pre=q;
p=q;
}
save(head);
}
(5)排序模块
voidsortlink(linkhead)/*排序模块*/
{
linkq,p,t;
q=head->next;
p=q->next;
t=(link)malloc(sizeof(structstudent));
while(q!
=NULL)
{
while(p!
=NULL)
{
if(q->data.num>p->data.num)
{
t->num=p->data.num;
strcpy(t->name,p->data.name);
t->grade=p->data.grade;
p->data.num=q->data.num;
strcpy(p->data.name,q->data.name);
p->data.grade=q->data.grade;
q->data.num=t->num;
strcpy(q->data.name,t->name);
q->data.grade=t->data.grade;
}
p=p->next;
}
q=q->next;
p=q->next;
}
save(head);
printf("恭喜你按学号从小到大排序完成!
");
}
第四章调试与操作说明
在系统的制作过程中,我们遇到了很多错误.出现错误时,按提示进行初步定位错误在什么地方进而仔细检查是代码错误还是其他系统性的错误从而根据错误进行修改,操作时一定要注意规范程度免的带来不必要的麻烦,给系统的正常运行又设置了障碍。
调试时出现没定义之类的错误,经发现是代码出错。
第五章课程设计总结与体会
通过这次数据结构课程设计使我认识到自己经验不足及阅历颇浅,在该系统的设计方面还有很多不足,比如功能过少,代码不够优化等问题,我会在以后的学习、工作的过程中,根据工作的具体要求不断的修改,完善,争取使该系统慢慢趋向完美。
一般来说,应用程序有两部分组成,一部分是界面,另一部分是数据处理,特别是数据库操作。
一个典型的数据库应用程序有数据库、菜单、用户界面和报表等组成。
在设计应用程序时,应仔细考虑每个组件将提供的功能以及该组件与其他组件之间的关系。
谢辞:
这是我入学以来第一次编如此大的系统程序,刚拿到题目及要求时感觉无从下手,脑子里一片空白。
后来经过某某某老师的指导及辛勤的讲解使我有了思路,他放弃了自己的双休日用来给我们作指导,经过一点一滴的学习,及日积月累的工作使我完成了此系统,通过此次工作使我迈出编程路上的一大步。
在此我非常感谢孙老师,想对您说:
您辛苦了。
参考文献:
[1]《数据结构》(C语言版),严蔚敏,吴伟民,清华大学出版社,2007。
[2]《C程序设计》(第三版),谭浩强,清华大学出版社,2007。
指导教师评语:
指导教师签名:
年月日
成绩评定
项目
权重
成绩
1、设计过程中出勤、学习态度等方面
0.1
2、设计技术水平
0.4
3、编程风格
0.2
4、设计报告书写及图纸规范程度
0.3
总成绩
教研室审核意见:
教研室主任签字:
年月日
教学院(系)审核意见:
主任签字:
年月日