数据结构成绩管理系统.docx
- 文档编号:30050498
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:13
- 大小:106.10KB
数据结构成绩管理系统.docx
《数据结构成绩管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构成绩管理系统.docx(13页珍藏版)》请在冰豆网上搜索。
数据结构成绩管理系统
成绩:
三峡大学
*************
数据结构课程设计报告书
学号:
姓名:
信息管理与信息系统教研室
课程设计报告目录
1.任务书…………………………………………………(?
)
2.课题说明与分析…………………………………………(?
)
3.程序流程图……………………………………………(?
)
4.数据结构与程序模块说明……………………………(?
)
结束语……………………………………………………(?
)
致谢……………………………………………………(?
)
参考文献………………………………………………(?
)
数据结构课程设计:
成绩管理系统
学生姓名:
***
指导老师:
***
三峡大学************
三峡大学
课 程 设 计 任 务 书
2009学年秋季学期
课题名称
成绩管理系统
指导教师
XX
学生姓名
***
性别
*
专业
*********
学号
*********
课题概述:
任何一个学校或者公司都离不开一个高效的管理系统。
对于学校而言,学生的成绩管理系统是最经常使用的一个系统,因而,开发一个高效,方便的成绩管理系统是我们要研究的课题。
设计要求:
1、进行认真、系统的信息采编,取得系统设计与开发的相关资料。
2、要求开发的同一个课题最多不超过20人。
3、制作过程中要求设计成果不得抄袭他人。
4、设计报告书要求详细具体,并按照要求的格式打印。
5、将设计成果中主要页面拷贝到报告书中,报告书中最后应该附程序清单。
6、设计工具语言可以选择C、C++。
7、问题描述:
假设斯瑞公司对学员的成绩进行管理,有关的数据存储在srkcj.dat文件中。
数据结构如下:
字段名
类型
长度
描述
xingming
字符型
10
姓名
chengji
整型
成绩
用C语言完成如下功能:
输入学生的姓名和成绩,保存到srkcj.dat文件中,然后按要求显示出来。
主界面:
学员成绩管理:
(请选择数字)
1、重新输入
2、增加输入
3、按姓名顺序查询
4、按成绩顺序查询
5、退出
请输入:
主要参考资料:
1、《信息系统分析与设计》清华大学出版社。
2、《数据结构》清华大学出版社严蔚敏等编著。
3、《C程序设计》清华大学出版社。
4、《C++程序设计》清华大学出版社。
5、《VB程序设计》清华大学出版社。
设计成果要求:
1、课程设计报告书。
2、设计开发的程序清单或者软件。
进度计划安排
起止日期
要求完成的内容
18周星期一
选定开发对象,收集资料。
18周星期二
整理资料,并进行系统的分析与研究。
18周星期三
系统初步设计,并将设计流程整理存档。
18周星期四
编写程序、调试、运行。
设计成果初步形成。
18周星期五
修改设计成果、修改源程序。
编写设计报告书并上交。
审核(教研室主任)
课题说明与分析
课题概述:
任何一个学校或者公司都离不开一个高效的管理系统。
对于学校而言,学生的成绩管理系统是最经常使用的一个系统,因而,开发一个高效,方便的成绩管理系统是我们要研究的课题。
问题描述:
假设斯瑞公司对学员的成绩进行管理,有关的数据存储在srkcj.dat文件中。
数据结构如下:
字段名
类型
长度
描述
xingming
字符型
10
姓名
chengji
整型
成绩
用C语言完成如下功能:
输入学生的姓名和成绩,保存到srkcj.dat文件中,然后按要求显示出来。
主界面:
学员成绩管理:
(请选择数字)
6、重新输入
7、增加输入
8、按姓名顺序查询
9、按成绩顺序查询
10、退出
请输入:
程序流程图
数据结构与程序模块说明
#include"stdio.h"
#include"string.h"
#defineMAXSIZE100
#defineINCREAMENT10
typedefstruct{
charxingming[10];/*姓名*/
intchengji;/*成绩*/
}Node;
typedefstruct{
Node*elem;
intlast;
intsize;
}xueyuan;/*采用线性表存储结构*/
voidinitlist_xueyuan(xueyuan*XY)/*构造线性表*/
{
XY->elem=(Node*)malloc(MAXSIZE*sizeof(Node));
if(!
XY->elem)printf("initlistfailed");
XY->last=0;
XY->size=MAXSIZE;
}
voidlistinsert_xueyuan(xueyuan*XY,char*xm,intcj){/*向线性表中插入元素*/
Node*newbase;
if(XY->last>=XY->size){
newbase=(Node*)realloc(XY->elem,(MAXSIZE+INCREAMENT)*sizeof(Node));
if(!
newbase)printf("reallocfailed");
XY->elem=newbase;
XY->size+=INCREAMENT;
}
strcpy(XY->elem[XY->last].xingming,xm);/*字符数组赋值*/
XY->elem[XY->last].chengji=cj;
XY->last++;
}
voidmain_screen()/*主界面*/
{
printf("studentachievementmanagement:
(pleasechosethenumber)\n1.re-input\n2.inputnew\n3.selectbynameorder\n4.selectbyachievementorder\n5.back\n\npleaseinput:
");
}
voidsave(xueyuan*XY)/*将输入的数据保存到文件*/
{FILE*fp;
if((fp=fopen("E:
\srkcj.dat","r+"))==NULL)/*fopen("文件名","r+"),读写,打开且该文件已经存在*/
{printf("cannotopenfile\n");
return;}
if(fwrite(XY->elem,sizeof(Node),1,fp)!
=1)/**/
printf("filewriteerror\n");
fclose(fp);
}
voidre_input(xueyuan*XY)/*重新输入*/
{
voidadd_input();/*函数声明*/
FILE*fp;
char*xm;
intcj;
chara;
if(fp=fopen("E:
\srkcj.dat","w")==NULL)/*fopen("文件名","w"),只写,若原文件不存在则新建并打开,若原文件存在则删除原文件再新建并打开*/
{printf("cannotopenfile\n");
return;
}
printf("name:
achievement:
\n");
scanf("%s%d",xm,&cj);
listinsert_xueyuan(XY,xm,cj);
save(XY);
printf("continueinput?
y/n\n");
a=getch();
if(a=='y')add_input(XY);
elseif(a=='n'){printf("\n\n\n");main_screen();}
elseprintf("ERROR\n");
}
voidadd_input(xueyuan*XY)/*增加输入*/
{
FILE*fp;
char*xm;
intcj;
chara;
if(fp=fopen("E:
\srkcj.dat","a")==NULL)/*fopen("文件名","a"),追加,该文件必须已存在,打开文件并向文件尾添加数据*/
{printf("cannotopenfile\n");
return;
}
printf("name:
achievement:
\n");
scanf("%s%d",xm,&cj);
listinsert_xueyuan(XY,xm,cj);
save(XY);
printf("continueinput?
y/n\n");
a=getch();
if(a=='y')add_input(XY);
elseif(a=='n'){printf("\n\n\n");main_screen();}
elseprintf("ERROR\n");
}
voidselect_by_name_order(xueyuan*XY)/*按姓名顺序查询,即按输入的实际存储顺序依次打印在屏幕上*/
{
FILE*fp;
inti;
printf("nameachievement\n");
if(fp=fopen("E:
\srkcj.dat","r")==NULL)/*fopen("文件名","r"),只读,该文件必须已存在才能打开*/
{printf("cannotopenfile\n");
return;
}
for(i=0;i<=XY->last;i++)
printf("%s%d\n",XY->elem[i].xingming,XY->elem[i].chengji);
fclose(fp);}
voidselect_by_achievement_order(xueyuan*XY)/*按成绩顺序查询,即先按成绩顺序排序再依次打印在屏幕上*/
{
FILE*fp;
inti,j,k;
char*b;
Node*a;
printf("nameachievement\n");
if(fp=fopen("E:
\srkcj.dat","r")==NULL)
{printf("cannotopenfile\n");
return;
}
for(i=0;i<=XY->last;i++)
{a[i].chengji=XY->elem[i].chengji;
strcpy(a[i].xingming,XY->elem[i].xingming);/*按成绩查询时不应该改变数据在文件中的存放位置,否则按姓名查询无效,故把文件中的数据赋给结构体数组a再对a进行操作*/
}
for(i=0;i<=XY->last;i++)
for(j=i;j<=XY->last;j++)
if(a[i].chengji<=a[j].chengji)
{k=a[j].chengji;a[j].chengji=a[i].chengji;a[i].chengji=k;
strcpy(*b,a[j].xingming);strcpy(a[j].xingming,a[i].xingming);strcpy(a[i].xingming,*b);
}
for(i=0;i<=XY->last;i++)
printf("%s%d\n",a[i].xingming,a[i].chengji);
fclose(fp);
}
voidmain()/*主函数*/
{
intN;
xueyuan*XY;
main_screen();
scanf("%d",&N);
while(N!
=NULL){
if(N==1)re_input(XY);
elseif(N==2)add_input(XY);
elseif(N==3){select_by_name_order(XY);printf("\n\n\n");}
elseif(N==4){select_by_achievement_order(XY);printf("\n\n\n");}
elseif(N==5)exit(0);
elseprintf("ERROR");
scanf("%d",&N);
}
getch();
}
结束语
通过这次《数据结构课程设计》,我锻炼了动手能力,能把学到的知识加以运用,而不是仅仅像考试那样纸上谈兵,收获很大。
同时也认识到自己所学的知识还很少,今后更应该好好学习。
致谢:
感谢xx老师在课程设计期间对我的指导和帮助,也感谢同学对我的帮助。
参考文献
[1]书籍——严蔚敏吴伟明编著,《数据结构》C语言版,北京清华大学学研大厦,清华大学出版社,1997年4月。
[2]书籍——唐浩强著,《C程序设计》第三版,北京清华大学学研大厦,清华大学出版社,2008年7月,p330。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 结构 成绩管理系统