#include<stdlibh>
#include<stdioh>
#include<stringh>
#include<conioh>
#define N 10
/定义结构体/
typedef struct students /标记为students/
{
char num[10]; /学生学号/
char name[10]; /学生姓名/
int age; /年龄/
char sex[10]; /性别/
float cyy; /C语言成绩/
float computer; /计算机成绩/
float english; /英语成绩/
float pj; /平均成绩/
}STU;
STU temp;
void sort(STU students[],int n); //排序
void save(STU students[] ,int n);//导出
int Locate(STU students[],int n);//查询
/--------------显示菜单--------------------/
char displaymenu()
{
char k;
system("cls");
printf(" 学生成绩管理 \n");
printf("-----------------------------------应用菜单-------------------------------------\n");
printf(" 1 输入学生成绩\n\n");
printf(" 2 输出学生成绩\n\n");
printf(" 3 查询学生成绩\n\n");
printf(" 4 修改学生成绩\n\n");
printf(" 5 查看成绩排序\n\n");
printf(" 6 查看成绩统计\n\n");
printf(" 7 保存数据\n\n");
printf(" 8 读取数据\n\n");
printf(" 9 退出系统\n\n");
printf(" 请选择你想进行的 *** 作:");
k=getchar();
return k;
}
/定义输出函数/
void printheader() /格式化输出表头/
{
printf("\n\n学生成绩管理系统\n\n\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | C语言成绩 |计算机成绩 | 英语成绩| 平均成绩 | \n");
}
void printdata(STU pp) /格式化输出表中数据/
{
STU p;
p=&pp;
printf("| %-5s| %-5s | %-4d| %-4s| %-60f| %-60f| %-50f| %-60f|\n",p->num,p->name,p->age,p->sex,p->cyy,p->computer,p->english,p->pj);
}
/添加学生信息/
int add(STU students[] ,int n)
{
int i=0;
system("cls");
printf(" \n");
printf(" 请输入学生信息 \n");
printf(" 退出请在学生号处输入:0 \n");
printf("请输入学生学号:\n ");
scanf("%s",students[i]num);
while(strcmp(students[i]num,"0") )//当输入的学号为0时结束输入
{
printf("请输入学生姓名:\n ");
scanf("%s",students[i]name);
printf("\n\n\n");
printf("请输入学生年龄:\n ");
scanf("%d",&students[i]age);
printf("\n\n\n");
printf("请输入学生性别:\n");
scanf("%s",students[i]sex);
printf("\n\n\n");
printf("请输入C语言成绩:\n ");
scanf("%f",&students[i]cyy);
printf("\n\n\n");
printf("请输入计算机成绩:\n ");
scanf("%f",&students[i]computer);
printf("\n\n\n");
printf("请输入英语成绩:\n ");
scanf("%f",&students[i]english);
printf("\n\n\n");
students[i]pj=(students[i]cyy+students[i]computer+students[i]english)/3;
printf("学生平均成绩: %-80f\n",students[i]pj);
i++;
printf("\n\n\n");
printf("请输入学生学号:\n ");
scanf("%s",students[i]num);
}
n=i;
save(students ,i);
return i;
}
/查询学生信息函数/
int Locate(STU students[],int n)
{
int k,m=-1;
char num[10],name[20];
int i=0;
system("cls");
printf(" 退出请输入:0 \n");
printf("请选择以什么方式查询:1)按学生学号查询 2)按学生姓名查询 \n");
scanf("%d",&k);
if(k==1)
{
printf("请输入你要查询的学生学号:\n");
scanf("%s",num);
while(i<n)
{
if(strcmp(students[i]num,num)==0) /若找到学号/
{
printf(">>学生学号:%s\n学生姓名:%s\n学生年龄:%d\n学生性别:%s\n>C语言成绩:%-80f\n>计算机成绩:%-80f\n>>英语成绩:%-80f\n>>平均成绩:%-80f\n",students[i]num,students[i]name,students[i]age,students[i]sex,students[i]cyy,students[i]computer,students[i]english,students[i]pj);
m=i;
getchar();
break;
}
i++;
}
if(i>=n)
printf("没有所找学生信息\n");
getchar();
}
else if(k==2)
{
printf("请输入你要查询的学生姓名:\n");
scanf("%s",name);
while(i<n)
{
if(strcmp(students[i]name,name)==0) /若找到姓名/
{ printf("学生学号:%s\n学生姓名:%s\n学生年龄:%d\n学生性别:%s\n学生C语言成绩:%-80f\n计算机成绩:%-80f\n英语成绩:%-80f\n平均成绩:%-80f\n",students[i]num,students[i]name,students[i]age,students[i]sex,students[i]cyy,students[i]computer,students[i]english,students[i]pj);
m=i;
getchar();
break;
}
i++;
}
if(i>=n)
printf("没有所找学生信息\n");
}
return m;/返回一个根m便于修改学生信息/
getchar();
}
/显示函数/
void input(STU students[],int n)
{
int i;
system("cls"); //清屏
if(n==0) /表示没有学生信息记录/
{
printf("\n没有学生记录!\n");
}
printf("\n\n");
printheader(); /输出表格头部/
i=0;
while(i<n) /逐条输出数组中存储的学生信息/
{
printdata(students[i]);
i++;
}
getchar();
}
/修改子程序/
void Modify(STU students[],int n)
{
int i;
if(n<=0)
{
system("cls");
printf(" \n退出请输入:0 \n");
printf("\n----------not found!----------\n");
getchar();
return ;
}
system("cls");
printf("修改学生信息");
input(students,n);
i=Locate(students,n); /查询到该数组元素,并返回下标值/
if(i!=-1) /若i!=-1,表明已经找到该数组元素/
{
printf("请输入新的学生信息: \n");
printf(" 学号: ");
scanf("%s",students[i]num);
printf(" 姓名: ");
scanf("%s",students[i]name);
printf(" 年龄: ");
scanf("%d",&students[i]age);
printf(" 性别: ");
scanf("%s",students[i]sex);
printf(" C语言: ");
scanf("%f",&students[i]cyy);
printf(" 英语: ");
scanf("%f",&students[i]english);
printf(" 计算机: ");
scanf("%f",&students[i]computer);
students[i]pj=(students[i]cyy+students[i]english+students[i]computer)/3;
printf("平均成绩: %-90f\n",students[i]pj);
save(students ,n);
printf("\n-------------修改成功!-------------\n");
}
else
printf("not found!\n");
getchar();
}
/学生成绩排序子程序/
void sort(STU students[],int n)
{
int i,j,a,b,c,d,e,f,k;
float p;
printf(" \n退出请输入:0 \n");
printf("成绩排序方式选择: 1按C语言 2按英语 3按平均 \n ");
scanf("%d",&k);
if(k==1) /用选择法对C语言排序/
{
for(i=0; i<n; i++)
for(j=0;j<n-1;j++)
{
if(students[i]english<students[j+1]english)
{
temp=students[i];
students[i]=students[j+1];
students[j+1]=temp;
}
}
}
else if(k==2)/英语用冒泡法/
{
for(a=0; a<n-1; a++)
{
c=a;
for(b=a+1; b<n; b++)
if(students[b]cyy>students[c]cyy)
c=b;
if (c!=a)
{
temp=students[a];
students[a]=students[c];
students[c]=temp;
}
}
}
if(k==3) /平均成绩用插入法/
{
for(d=1;d<n;d++)
{
p=students[d]pj;
for(e=0;e<d;e++)
if(students[e]pj<p)
break;
if(e==d)
continue;
for(f=d;f>e;f--)
students[f]=students[f-1];
students[e]=temp;
}
}
input(students,n); /显示排序后的所有记录/
save(students ,n);
printf("\n 排序完成!\n");
}
/统计学生分数在各等级的人数子程序/
void Tongji(STU students[],int n)
{
int count6085=0,count85=0,count60=0;
int i=0;
system("cls");
printf(" \n退出请输入:0 \n");
input(students,n);
i=0;
while(i<n)
{
if(students[i]pj>85) {count85++;i=i+1;continue;} /平均成绩=>85/
if(students[i]pj>=60&&students[i]pj<=85) {count6085++;i=i+1;continue;} /60<平均成绩<85/
if(students[i]pj<60) {count60++;i=i+1;continue;} /平均成绩<60/
}
printf("\n统计结果\n\n");
printf("平均成绩高于85分的人数:%d \n",count85);
printf(" \n");
printf("平均成绩在65分和80分之间的人数:%d \n",count6085);
printf(" \n");
printf("平均成绩低于60分的人数:%d \n",count60);
printf(" \n");
printf("\n\n统计结束");
getchar();
}
/导出或保存数据/
void save(STU students[],int n)
{
FILE fp;
int i=0;
fp=fopen("students","wb+");/以读写方式打开创建一个二进制文件/
if(fp==NULL) /打开文件失败/
{
printf("\n打开文件错误!\n");
return ;
}
for(i=0;i<n;i++)
{
if(fwrite(&students[i],sizeof(STU),1,fp)==1)/每次写一条记录或一个结构数组元素至文件/
{
continue;
}
else
{
break;
}
}
if(i>0)
{
getchar();
printf("\n\n共导出%d个学生信息\n",i);
getchar();
}
else
{
system("cls");
printf("没有信息导出\n");
getchar();
}
fclose(fp); /关闭此文件/
}
/导入数据/
void Read(STU students[],int n)
{
FILE fp;
int i=0;
fp=fopen("students","rb");/以只读方式打开一个已有的二进制文件/
if(fp==NULL) /打开文件失败/
{
printf("\n打开文件错误!\n");
exit(0);
}
for(i=0;i<N;i++)
{
if(fread(&students[i],sizeof(STU),1,fp)==1)/每次读一条记录或一个结构数组元素至文件/
continue;
else
break;
}
n=i;
if(i>0)
{
printf("\n\n共导入:%d 个学生信息 \n",i);
getchar();
}
else
{ system("cls");
printf("没有信息导入!\n");
getchar();
}
getchar();
fclose(fp); /关闭此文件/
}
/主函数/
void main()
{
STU students[N];
int n;
char s1[3],s2[3]={"1"};
int i,k;
printf("\n\n");
printf("\n");
printf("^ < 欢迎使用本软件> ^\n\n");
printf("^ <版本 : oooo> ^\n\n\n");
printf("^ <姓名>:卢景光 <班级>: 09623 <学号>:34 ^\n");
printf("^ ^\n");
printf("\n");
printf("\n\n");
for(i=0;i<3;i++)
{
printf("\n请输入密码:");
gets(s1);
if(strcmp(s1,s2)==0)
break;
else
printf("\n>密码错误,请重新输入");
}
if(i>2)
{
printf("\n您已连续3次输错,系统将退出!\n");
exit(0);
}
else
{
while(1)
{
k=displaymenu();
switch(k)
{
case '1' : add(students,&n); break;
case '2' : Read(students,&n);input(students,n) ;break;
case '3' : Read(students,&n);Locate(students,n);break;
case '4' : Read(students,&n);Modify(students,n);;break;
case '5' : Read(students,&n);sort(students,n);break;
case '6' : Read(students,&n);Tongji(students,n); break;
case '7' : save(students,n) ;break;
case '8' : Read(students,&n);break;
case '9' : system("cls");
printf("\n 谢谢您的使用\n");exit(0);break;
default : printf("\n\n输入错误,输入必须是0~9之间的一个数字!请重新输入\n");getchar();getchar();
}
}
}
}
1、企业的设计资源缺乏合理的配置,各部门间缺乏有效的协调,需要设计管理;
2、设计项目缺乏统一、合理、系统地计划、组织、监督与控制,需要设计管理。于是设计管理者做什么就很明白了:一个是横向的,对象是设计团队、设计师等各种设计资源及企业其他部门,重心是协调;一个是纵向的,对象是设计项目,重心是策划管理。各罗列如下:
横向:
a. 设计师的选择
b. 培养激发设计师的创造潜力与设计热情
c. 与企业其他部门沟通且共同制订企业的发展策略与设计标准
d. 使设计的概念在公司内外得到推广与重视
e. 建立完整的设计资讯与市场的研究计划方法
f. 建立完整的设计资料库,强化产品开发前置作业
g. 设计设备及设计工具的整合和最佳化
纵向:
a. 针对项目选择设计师构建团队
b. 制订设计项目目标及管理计划
c. 组织收集设计资讯并进行评价研究
d. 监督与控制设计项目的进度,保持进程与项目目标保持一致
e. 每一设计步骤与其他相关部门之间的沟通检讨与确认
f. 组织设计方案的评价、审核、修改与最终递交
当然,有些工作如团队的管理、与其他部门的协调等有时兼具有横向和纵向的作用,但明白了工作对象与重心也就自然能够在工作中游刃有余了。
由上面的分析我们自然得出了设计管理者所需要的能力:一、设计能力;二、管理能力;三、专门的设计管理能力,包括:
a. 选择设计师的能力
b. 制订企业产品发展策略与订立设计标准的能力
c. 能同时很好地与设计师及企业其它部门职员沟通交流的能力
d. 进行设计稽核、评价的能力
e. 使行销与设计紧密联系的能力
f. 懂得设计相关的法律知识
g. 最重要的不断学习的能力
MIS的开发方式有自行开发、委托开发、联合开发、购买现成软件包进行二次开发几种形式。一般来说根据企业的技术力量、资源及外部环境而定。 补充: 管理信息系统的开发策略
不可行的开发方法:组织结构法,机械的按照现有组织机构划分系统,不考虑MIS的开发原则。
数据库法,开发人员从数据库设计开始对现有系统进行开发。
想象系统发,开发人员基于对现有系统进行想象为基础进行开发。
可行的开发方法:自上而下(Top__Down),从企业管理的整体进行设计,逐渐从抽象到具体,从概要设计到详细设计,体现结构化的设计思想。自下而上(Bottom__Up),设计系统的构件,采用搭积木的方式组成整个系统,缺点在于忽视系统部件的有机联系。
两者结合是实际开发过程中常用的方法。通过对系统进行分析得到系统的逻辑模型, 进而从逻辑模型求得最优的物理模型。逻辑模型和物理模型的这种螺旋式循环优化的设计模式体现了自上而下、自下而上结合的设计思想。
管理信息系统的开发方法
完整实用的文档资料是成功MIS的标致。科学的开发过程从可行性研究开始,经过系统分析、系统设计、系统实施等主要阶段。每一个阶段都应有文档资料,并且在开发过程中不断完善和充实。目前使用的开发方法有以下两种:
1瀑布模型(生命周期方法学)
结构分析、结构设计,结构程序设计(简称SA—SD—SP方法)用瀑布模型来模拟。各阶段的工作自顶向下从抽象到具体顺序进行。瀑布模型意味着在生命周期各阶段间存在着严格的顺序且相互依存。瀑布模型是早期MIS设计的主要手段。
2快速原型法(面向对象方法)
快速原型法也称为面向对象方法是近年来针对(SA—SD—SP)的缺陷提出的设计新途径,是适应当前计算机技术的进步及对软件需求的极大增长而出现的。是一种快速、灵活、交互式的软件开发方法学。其核心是用交互的、快速建立起来的原型取代了形式的、僵硬的(不易修改的)大快的规格说明,用户通过在计算机上实际运行和试用原型而向开发者提供真实的反馈意见。快速原型法的实现基础之一是可视化的第四代语言的出现。
以上就是关于请设计一个学生证的管理程序。全部的内容,包括:请设计一个学生证的管理程序。、简述设计管理的主要工作内容、管理信息系统 程序设计方法有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)