最新数据结构学生成绩管理系统.docx
《最新数据结构学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《最新数据结构学生成绩管理系统.docx(46页珍藏版)》请在冰豆网上搜索。
最新数据结构学生成绩管理系统
10、如果学校开设一家DIY手工艺制品店,你希望_____
中式饰品风格的饰品绝对不拒绝采用金属,而且珠子的种类也更加多样。
五光十色的水晶珠、仿古雅致的嵌丝珐琅珠、充满贵族气息的景泰蓝珠、粗糙前卫的金属字母珠片的材质也多种多样。
(一)上海的经济环境对饰品消费的影响
五、创业机会和对策分析
现在是个飞速发展的时代,与时俱进的大学生当然也不会闲着,在装扮上也不俱一格,那么对作为必备道具的饰品多样性的要求也就可想而知了。
随科技的迅速发展,人们的生活日益趋向便捷、快速,方便,对于我国传统的手工艺制作,也很少有人问津,因此,我组想借此创业机会,在校园内开个DIY创意小屋。
它包括编织、刺绣、串珠等,让我们传统的手工制作也能走进大学,丰富我们的生活。
二、大学生DIY手工艺制品消费分析
而手工艺制品是一种价格适中,不仅能锻炼同学们的动手能力,同时在制作过程中也能体会一下我国传统工艺的文化。
无论是送给朋友还是亲人都能让人体会到一份浓厚的情谊。
它的价值是不用金钱去估价而是用你一颗真诚而又温暖的心去体会的。
更能让学生家长所接受。
1、DIY手工艺市场状况分析
(一)创业机会分析
课程设计
课程名称___数据结构基础__
题目名称_学生成绩管理系统
学生学院____管理学院______
专业班级_
学号___
学生姓名_
指导教师__________
1系统分析
1.1系统性能分析
1、操作界面美观、友好,有必要的容错处理(如:
能判定学号位数和只能由0~9数字字符组成、能判定合理的成绩0~100等);
2、查询应根据查询条件合理选择先进的查询方法
3、排序算法要求采用堆排序实现;
4、分数段统计结果要求保存在单独的文件中;
1.2系统功能需求分析
本系统应具有以下功能:
1、提供身份验证,和使用系统的权限设置、判定。
2、(教师用户)能实现本班同学各学期各科成绩的录入、编辑,数据必须保存在文件中,以便反复使用。
3、(学生用户)提供对学号或姓名,各学科成绩的查询。
4、(学生和教师用户)能按各学期、各学科分数排序输出(每一科都要能排序输出)。
5、(教师用户)能统计各科成绩分数段的分布(60以下、60~70、70~80、80~90、90~100)情况,并输出。
1.3数据分析
1.3.1.问题分析和任务定义:
根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?
(而不是怎么做?
)限制条件是什么?
1.3.2.逻辑设计:
对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。
逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;
1.3.3.详细设计:
定义相应的存储结构并写出各函数的伪码算法。
在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。
详细设计的结果是对数据结构和基本操作作出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;
1.3.4.程序编码:
把详细设计的结果进一步求精为程序设计语言程序。
同时加入一些注解和断言,使程序中逻辑概念清楚;
1.3.5.程序调试与测试:
采用自底向上,分模块进行,即先调试低层函数。
能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。
调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;
2系统设计
2.1总体设计
按系统分析的功能要求将系统划分为以下几个主要功能模块:
1---学生记录录入
2---学生成绩查询:
按学号查询、按姓名查询
3---删除记录
4---排序
5---修改数据
6---显示全部学生记录
7---统计
8---更换用户
9---保存记录
0---退出系统
2.2详细设计
2.2.1界面设计
1、菜单设计
菜单主要有学生成绩录入、成绩查询、成绩排序、更换用户……设计时主要采用switch-case这个结构,从而选择调用相应的函数。
子菜单也是利用这个原理方法设计的
2、信息显示界面的设计
信息显示主要用了for(;;)循环,输出信息,并设置好输出格式,运行时如下:
2.2.2各功能模块的设计
主函数主要作用是控制调用其它函数协调工作。
其流程图如下:
查询窗口
排序窗口
按总分排序
修改窗口
删除窗口
统计窗口
统计结果
2.2.2系统编码设计
3.1预处理命令及结构体类型的声明
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"windows.h"
#defineM100
3.2main函数
voidmain()
{
welcome();
IO_ReadInfo();
Login();
}
3.3程序代码
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"windows.h"
#defineM100
voidLogin();
/*<<<<<<<<<<<<***定义学生结构体***>>>>>>>>>>>>>>>>*/
typedefstructstu{
charStuID[12];
charStudName[12];
floatScore[5];
floatAv;
floatSum;
inttag;
}Stud;
Studstud[M];
intnum=0;
/*<<<<<<<<<<<<***计算总分***>>>>>>>>>>>>>>>>*/
floatsum(Studstud)
{
intj;
floatsum=0;
for(j=0;j<5;j++)
{
sum+=stud.Score[j];
}
returnsum;
}
/*<<<<<<<<<<<<***通过学号返回数组下标***>>>>>>>>>>>>>>>>*/
intStudent_SearchByIndex(charid[])
{
inti;
for(i=0;i{
if(strcmp(stud[i].StuID,id)==0)
{returni;}
}
return-1;
}
/*<<<<<<<<<<<<***通过姓名返回数组下标***>>>>>>>>>>>>>>>>*/
intStudent_SearchByName(charname[])
{
inti;
for(i=0;i{
if(strcmp(stud[i].StudName,name)==0)
{returni;}
}
return-1;
}
/*<<<<<<<<<<<<***解决学号冲突***>>>>>>>>>>>>>>>>*/
intConflictID(Studstud[],intn,charID[])
{
inti;
for(i=0;i{
if(i!
=n)
{
if(strcmp(stud[i].StuID,ID)==0)
{
returnTRUE;
break;
}
}
}
if(i==num)
{returnFALSE;}
}
/*<<<<<<<<<<<<***显示单条学生记录***>>>>>>>>>>>>>>>>*/
voidStudent_DisplaySingle(intindex)
{
printf("\n*◆◆◆◆◆◆◆◆◆◆◆◆学生成绩单◆◆◆◆◆◆◆◆◆◆*\n");
printf("\t\t姓名:
<%s>\t学号:
<%s>",stud[index].StudName,stud[index].StuID);
printf("\n\t\t计算机操作系统:
<%.2f>",(&stud[index])->Score[0]);
printf("\n\t\t大学英语:
<%.2f>",(&stud[index])->Score[1]);
printf("\n\t\t基础会计:
<%.2f>",(&stud[index])->Score[2]);
printf("\n\t\t数据结构:
<%.2f>",(&stud[index])->Score[3]);
printf("\n\t\tJava语言设计:
<%.2f>",(&stud[index])->Score[4]);
printf("\n\t\t总分:
<%.2f>",(&stud[index])->Sum);
printf("\n\t\t平均分:
<%.2f>\n\n\n",(&stud[index])->Av);
}
/*<<<<<<<<<<<<***显示学生信息***>>>>>>>>>>>>>>>>*/
voidStudent_Display()
{
inti;
printf("\n%-4s%s\t%-8s%-10s%-10s%-10s%-10s%-10s%-9s\n","编号","学号","姓名","操作系统","大学英语","会计基础","数据结构","Java设计","总分");
printf("-------------------------------------------------------------------------------\n");
for(i=0;i{
printf("%-4d%s\t%-8s%-10.2f%-10.2f%-10.2f%-10.2f%-10.2f%-9.1f\n",i+1,(&stud[i])->StuID,(&stud[i])->StudName,(&stud[i])->Score[0],(&stud[i])->Score[1],(&stud[i])->Score[2],(&stud[i])->Score[3],(&stud[i])->Score[4],(&stud[i])->Sum);
printf("-------------------------------------------------------------------------------\n");
}
}
/*<<<<<<<<<<<<***插入学生信息***>>>>>>>>>>>>>>>>*/
voidStudent_Insert()
{
charc;
printf("\n");
printf("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n\n");
while
(1)
{
printf("请输入学号:
");
scanf("%s",&stud[num].StuID);
while(ConflictID(stud,num,stud[num].StuID))
{
getchar();
printf("学号已经存在\2\n请重新输入学号:
");
scanf("%s",&stud[num].StuID);