学生综合管理系统接口设计(学生成绩管理系统接口设计)

网友投稿 580 2022-12-27


本篇文章给大家谈谈学生综合管理系统接口设计,以及学生成绩管理系统接口设计对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享学生综合管理系统接口设计的知识,其中也会对学生成绩管理系统接口设计进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

用C++语言设计一个简单的学生成绩管理系统

好好看看课本吧。。真是的 现在的孩子学生综合管理系统接口设计,书上有的东西都懒怠打到电脑里。
1、 对C++设计的《学生成绩管理系统》总体说明
系统上采用BC31编译器作为开发环境,这个环境是学生综合管理系统接口设计我们在学习C++的平台,这个编译器功能完善,使用方便。我作的这次课程设计是《学生成绩管理系统》,它的主要功能是对学生的成绩进行修改和管理,而且方便快速,这个程序虽然简单,但是可以作为老师的辅助软件,对学生的各种成绩进行管理。
系统功能要求学生综合管理系统接口设计
(1)界面
****************************
学生成绩管理系统
****************************
************************************
** F1 --帮助 **
** F2 --输入数据并存入文件 **
** F3 --根据学号查询成绩 **
** F4 --根据姓名查询成绩 **
** F5 --输出文件内容 **
** F6 --统计及格和优秀人数 **
** ESC--退出系统 **
************************************
(2)功能
这个程序的主要功能是输入学生的学号、姓名对其进行存储,在存储后可以对学生的成绩按学号和姓名进行查寻。该系统具有存贮学生数据,按学号、姓名查询,列出学生成绩和统计功能。使用方法:系统输入数据后,将在当前目录中建立一个名为stu.dat文件,用于保存输入的数据。学号输入只能用数字输入,并且学号只能是10位。姓名输入符合中国人的姓名,只能用中文,且最长为5个汉字。此程序在BC2.0下运行通过由于是第一次用C++编写,所以水平有限此系统还有许多不够完整和严密性,敬请老师指正!
(3)实用性
《学生成绩管理系统》是对学生的成绩进行修改和管理,而且方便快速,这个程序虽然简单,但是可以作为老师的辅助软件,对学生的各种成绩进行管理。
目的:
通过课程设计培养了我的动手能力以及综合运用所学的C++语言基础理论,基础知识,基本技能,进行程序分析和程序开发,提高在实际开发中解决问题的能力,达到了能够利用C++语言进行应用程序的规划,分析,设计和实施,更能进一步使我对这门语言有深刻的理解和更好的得到巩固,更能对我所学的知识得到检验。
2、对《学生成绩管理系统》的介绍
具体的功能:
(1)帮助
(2)输入数据并存入文件
(3)根据学号查询成绩
(4)根据姓名查询成绩
(5)输出文件内容
(6)统计及格和优秀人数
(7)退出
(1)帮助
运行程序,屏幕出现该程序界面,第一项就是帮助,在按下“F1”后出现帮助信息,“此系统是应老师所布置的作业编制而成,该系统具有存贮学生数据,按学号、姓名查询,列出学生成绩和统计功能。使用方法:系统输入数据后,将在当前目录中建立一个名为stu.dat文件,用于保存输入的数据。学号输入只能用数字输入,并且学号只能是10位。姓名输入符合中国人的姓名,只能用中文,且最长为5个汉字。”
(2)输入数据并存入文件
在界面状态下,按下“F2”后出现“请输入学号:”,若输入“#”,则返回真值结束输入。在其后面可以输入学生的学号,长度要求10位而且必须是数字,这里用到了结构体变量和函数,对输入的字符进行判断,如果输入字母和汉字会出现“非法学号!请重新输入。”,如果学号长度不为10,则返回重新输入提示“学号长度不对。”, 如果学号后面的字符不是回车符,则学号长度大于10提示“学号长度大于10个!请重新输入!” 输入完学号后会出现提示“请输入姓名:”,在其后面可以输入学生的姓名,姓名必须是汉字而且长度必须是5, 这里也用到了结构体变量和函数,对输入的字符进行判断,如果输入为字母和数字会提示“姓名只能用中文,请重新输入!”,如果输入的汉字长度大于5会提示“姓名长度大于5个!请重新输入!”,输入姓名后会出现“请输入数学成绩:”、“ 请输入英语成绩:”和“请输入总评成绩:”输入规则也和前面输入学号、姓名的类似,判断输入的是否为数字,如果不是就会出现提示,重新输入,直到输入正确为止。都输入完成后,改系统会调用写文件函数对指定的文件进行写操作,把输入的学生信息写入到文件中。
(3)根据学号查询成绩
在界面状态下,在按下“F3”后会出现“请输入要查询的学号:” 输入“#”结束查询,若文件打不开则输出下面的信息,“文件打开失败!按任意键返回...”,如果文件打开会按照用户的要求从文件头开始查询满足要求的学号,找到即显示该学生的基本信息和成绩。如果未找到就会显示“无此学号”。
(4)根据姓名查询成绩
在界面状态下,在按下“F4”后会出现“请输入要查询的学生姓名:” 输入“#”结束查询,若文件打不开则输出下面的信息,“文件打开失败!按任意键返回...”,如果文件打开会按照用户的要求从文件头开始查询满足要求的姓名,找到即显示该学生的基本信息和成绩。如果未找到就会显示“无此学生!”。
(5)输出文件内容
输出文件,列出所有学生成绩。如果文件未打开会出现“文件打开失败!按任意键返回...”打开成功会每输出20个学生成绩,停一下提示,“请按任意键继续...”,关闭文件。
(6)统计及格和优秀人数
这里用到结构体函数和变量,判断成绩大于等于60分的为及格,并统计人数,判断成绩大于等于80分的为优秀,并统计人数,最后统计出来,显示在屏幕上。
(7)退出
在界面状态下,按下“ESC”会退出该学生成绩管理系统。返回源程序。
程序清单
/*-------------1-------------*/
#include
#include /*头文件*/
#include
#include
#include
#include
#include
#include
#define NULL 0
#define ESC 0x001b /* 退出 */
#define F1 0x3b00 /* 查看帮助信息,调用HelpMassage()函数 */
#define F2 0x3c00 /*输入学生成绩*/
#define F3 0x3d00 /*按学号查找*/
#define F4 0x3e00 /*按姓名查找*/
#define F5 0x3f00 /*列出所有学生成绩*/
#define F6 0x4000 /*统计*/
struct stuType /*定义结构体变量*/
{
char NO[11]; /*学号长度为10*/
char XM[10];
float CJ[4]; /*包含4门成绩*/
};
/*-------------2-------------*/
int JY_NO(char *stu_num,FILE *fp) /*检验学号的正确性*/
{ struct stuType stud;
int NO;
char *p=stu_num;
if(strcmp(stu_num,"#")==0) return 1; /*若输入"#"返回真值,不再循环输入*/
while(*p!='\0') /*学号必须是数字,否则返回重新输入*/
{ NO=(int)*p;
if(NO57)
{ puts("\t\t\t非法学号!请重新输入!\n");
return 0;
}
else p++; /*指针加1*/
}
if(strlen(stu_num)!=10) /*若学号长度不为10,则返回重新输入*/
{ puts("\t\t\t学号长度不对!\n");
return 0;
}
if(getchar()!='\n') /*若学号后面的字符不是回车符,则学号长度大于10*/
{ printf("\t\t\t学号长度大于10个!请重新输入!\n");
do{}while(getchar()!='\n'); /*用getchar接收多余的字符*/
return 0;
}
else
{
rewind(fp); /*使文件指针指向头*/
while(!feof(fp)) /*若文件指针未到结尾,就继续执行下面的循环,feof遇到文件结束符返回非零值,否则返回0*/
{ fread(stud,sizeof(struct stuType),1,fp); /*读取一定长度的数据*/
if(strcmp(stu_num,stud.NO)==0) /*学号的唯一性*/
{ printf("\t\t\t学号重复,请重新输入!\n");
printf("\t\t\t该学生成绩如下:\n");
printf("\t\t\t语文:%.1f\n",stud.CJ[0]);
printf("\t\t\t数学:%.1f\n",stud.CJ[1]);
printf("\t\t\t英语:%.1f\n",stud.CJ[2]);
printf("\t\t\t总评:%.1f\n",stud.CJ[3]);
return 0;
}
}
}
return 1;
}
/*-------------3-------------*/
int JY_NO2(char *stu_num) /*检验学号*/
{ int NO;
char *p=stu_num;
if(strcmp(stu_num,"#")==0)return 1; /*若输入“#”,则返回真值结束*/
if(strlen(stu_num)!=10) /*学号长度为10*/
{ puts("\t\t\t学号长度不对!\n");
return 0;
}
while(*p!='\0') /*学号必须用数字,若包含有字母,或其它字符则返回假值重新输入*/
{ NO=(int)*p;
if(NO57)
{ puts("\t\t\t非法学号!请重新输入!\n");
return 0;
}
else p++; /*指针加1*/
}
if(getchar()!='\n') /*检验学号长度是否大于10,并把多余的字符去掉*/
{ printf("\t\t\t学号长度大于10个!请重新输入!\n");
do{}while(getchar()!='\n');
return 0;
}
return 1;
}
/*-------------4-------------*/
int JY_XM(char *stu_XM) /*检验姓名*/
{ int PD;
char *p;
p=stu_XM;
while(*p!='\0') /*姓名只能用中文*/
{
PD=(int)*p;
if(PD0)
{ puts("\t\t\t姓名只能用中文,请重新输入!\n");
return 0;
}
else p++; /*使指针加1,指向下一汉字*/
}
if(getchar()!='\n') /*姓名长度不得大于5个*/
{ printf("\t\t\t姓名长度大于5个!请重新输入!\n");
do{}while(getchar()!='\n');
return 0;
}
return 1; /*字符串全为汉字返回真*/
}
/*-------------5-------------*/
int JY_CJ(float stu_CJ) /*学生成绩只能在0~100之间*/
{
if(stu_CJ100)
{ printf("\t\t\t输入错误,成绩只能在0~100之间!\n");
return 0;
}
return 1;
}
/*-------------6-------------*/
void CreatFile() /*输入文件*/
{ FILE *fp;
struct stuType stu,stu0={"","",}; /*对stu0先赋值*/
fp=fopen("stu.dat","wb+"); /*打开或创建一个二进制文件,打开时将原来的内容删除*/
if(fp==NULL)
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return;
}
else
{ while(1)
{ stu=stu0;
do{ printf("\n\t\t\t请输入学号:"); /*输入学号并检验其正确性*/
scanf("%10s",stu.NO);
}while(!JY_NO(stu.NO,fp));
if(strcmp(stu.NO,"#")==0)break;
do{ printf("\n\t\t\t请输入姓名:"); /*输入姓名并检验其正确性*/
scanf("%10s",stu.XM);
}while(!JY_XM(stu.XM));
do{ printf("\n\t\t\t请输入语文成绩:"); /*输入成绩并检验其正确性*/
scanf("%f",stu.CJ[0]);
}while(!JY_CJ(stu.CJ[0]));
do{ printf("\n\t\t\t请输入数学成绩:"); /*同上*/
scanf("%f",stu.CJ[1]);
}while(!JY_CJ(stu.CJ[1]));
do{ printf("\n\t\t\t请输入英语成绩:");
scanf("%f",stu.CJ[2]);
}while(!JY_CJ(stu.CJ[2]));
do{ printf("\n\t\t\t请输入总评成绩:");
scanf("%f",stu.CJ[3]);
}while(!JY_CJ(stu.CJ[3]));
fwrite(stu,sizeof(struct stuType),1,fp); /*写文件*/
}
}
fclose(fp); /*关闭文件*/
}
/*-------------7-------------*/
void Search_Xuehao() /*按学号查询*/
{ FILE *fp;
int flag;
struct stuType stu,stud;
fp=fopen("stu.dat","rb");
if(fp==NULL) /*若文件打不开则输出下面的信息*/
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return;
}
else
{ do{ puts("\n\t\t\t输入“#”结束查询");
do{ printf("\t\t\t请输入要查询的学号:");
scanf("%10s",stu.NO);
}while(!JY_NO2(stu.NO));
if(strcmp(stu.NO,"#")==0)break; /*若输入“#”则结束循环*/
flag=0;
rewind(fp);
while(fread(stud,sizeof(struct stuType),1,fp)) /*检查文件指针结束*/
{ if(strcmp(stu.NO,stud.NO)==0) /*比较学号*/
{ puts("\t\t\t该学生成绩如下:");
printf("\t\t\t学号:%s\n",stud.NO);
printf("\t\t\t姓名:%s\n",stud.XM);
printf("\t\t\t语文:%.1f\n",stud.CJ[0]);
printf("\t\t\t数学:%.1f\n",stud.CJ[1]);
printf("\t\t\t英语:%.1f\n",stud.CJ[2]);
printf("\t\t\t总评:%.1f\n",stud.CJ[3]);
flag=1; /*记录学号是否查到*/
}
}
if(flag==0)puts("\t\t\t无此学号!");
}while(strcmp(stu.NO,"#")!=0);
}
fclose(fp); /*关闭文件*/
}
/*-------------8-------------*/
void Search_Xingming() /*按姓名查找*/
{ FILE *fp;
int flag=0;
struct stuType stu,stud;
fp=fopen("stu.dat","rb");
if(fp==NULL)
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return;
}
else
{ do{
do{ printf("\t\t\t请输入要查询的学生姓名:");
scanf("%10s",stu.XM);
}while(!JY_XM(stu.XM));
rewind(fp); /*文件指针指向头*/
while(fread(stud,sizeof(struct stuType),1,fp))
{ if(strcmp(stu.XM,stud.XM)==0) /*比较姓名是否相同*/
{ puts("\t\t\t该学生姓名如下:");
printf("\t\t\t学号:%s\n",stud.NO);
printf("\t\t\t姓名:%s\n",stud.XM);
printf("\t\t\t语文:%.1f\n",stud.CJ[0]);
printf("\t\t\t数学:%.1f\n",stud.CJ[1]);
printf("\t\t\t英语:%.1f\n",stud.CJ[2]);
printf("\t\t\t总评:%.1f\n",stud.CJ[3]);
flag=1; /*记录姓名是否被查到*/
}
}
if(flag==0)puts("\n\t\t\t无此学生!");
puts("\t\t\t是否继续(y--继续,其他返回)?");
}while(getch()=='y');
}
fclose(fp);
/* puts("\t\t\t请按任意键继续...");*/
/* getch();*/
}
/*-------------9-------------*/
int ListFile(void) /*输出文件,列出所有学生成绩*/
{ FILE *fp;
int REC=0; /*记录学生人数*/
struct stuType stu;
fp=fopen("stu.dat","rb");
if(fp==NULL)
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return 1;
}
else{ printf("\t\t\t学生成绩如下:\n");
printf("\t\t\t学号\t\t姓名\t语文\t数学\t英语\t总评\n");
rewind(fp);
while(fread(stu,sizeof(struct stuType),1,fp))
{ /*每读取一个长度的数据就输出*/
printf("\t\t\t%s",stu.NO);
printf("\t%s",stu.XM);
printf("\t%.1f",stu.CJ[0]);
printf("\t%.1f",stu.CJ[1]);
printf("\t%.1f",stu.CJ[2]);
printf("\t%.1f",stu.CJ[3]);
printf("\n");
REC++;
if(REC%20==0) /*每输出20个学生成绩,停一下*/
{ printf("\t\t\t请按任意键继续...\n");
getch();
}
}
}
fclose(fp); /*关闭文件*/
printf("\t\t\t请按任意键继续...");
getch();
}
/*-------------10-------------*/
void Statistics() /*统计及格和优秀人数*/
{ FILE *fp;
int REC=0,pass[4]={0},good[4]={0}; /*REC--记录个数,即人数,pass--及格人数,good--优秀人数*/
float highest[4]={0},score[4]={0}; /*highest--最高分,score--总分*/
struct stuType stu;
fp=fopen("stu.dat","rb");
if(fp==NULL)
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return;
}
else { rewind(fp);
while(fread(stu,sizeof(struct stuType),1,fp))
{ REC++;
score[0]=score[0]+stu.CJ[0]; /*语文*/
if(stu.CJ[0]=60)pass[0]++;
if(stu.CJ[0]=80)good[0]++;
if(highest[0]<stu.CJ[0])highest[0]=stu.CJ[0];
score[1]=score[1]+stu.CJ[1]; /*数学*/
if(stu.CJ[1]=60)pass[1]++;
if(stu.CJ[1]=80)good[1]++;
if(highest[1]<stu.CJ[1])highest[1]=stu.CJ[1];
score[2]=score[2]+stu.CJ[2]; /*英语*/
if(stu.CJ[2]=60)pass[2]++;
if(stu.CJ[2]=80)good[2]++;
if(highest[2]<stu.CJ[2])highest[2]=stu.CJ[2];
score[3]=score[3]+stu.CJ[3]; /*总评*/
if(stu.CJ[3]=60)pass[3]++;
if(stu.CJ[3]=80)good[3]++;
if(highest[3]<stu.CJ[3])highest[3]=stu.CJ[3];
}
if(REC==0) /*可以防止记录为0是REC作除数而造成的错误*/
{ printf("\t\t\t未输入学生记录!按任意键返回...");
getch();
return;
}
else{
printf("\t\t\t\t 语文\t 数学\t 英语\t 总评\n"); /*输出统计信息*/
printf("\t\t\t平均分: %.1f\t %.1f\t %.1f\t %.1f\n",score[0]/REC,score[1]/REC,score[2]/REC,score[3]/REC);
printf("\t\t\t最高分: %.1f\t %.1f\t %.1f\t %.1f\n",highest[0],highest[1],highest[2],highest[3]);
printf("\t\t\t优秀人数:%d\t %d\t %d\t %d\n",good[0],good[1],good[2],good[3]);
printf("\t\t\t及格人数:%d\t %d\t %d\t %d\n",pass[0],pass[1],pass[2],pass[3]);
}
}
fclose(fp);
printf("\n\t\t\t请按任意键继续...");
getch();
}
/*-------------11-------------*/
void HelpMessage()
{ clrscr();
printf("\n\n\n\n\n 此系统是应老师所布置的作业编制而成,该系统具有存贮学生数据,按学号、姓名查询,列出学生成绩和统计功能。\n \n 使用方法:系统输入数据后,将在当前目录中建立一个名为stu.dat文件,用于保存输入的数据。学号输入只能用数字输入,并且学号只能是10位。姓名输入符合中国人的姓名,只能用中文,且最长为5个汉字。\n 此程序在Turbo C2.0下运行通过\n\n 由于是初学者,水平有限此系统还有许多不够完整和严密性,敬请指正!");
getch();
}
/*-------------12-------------*/
int GetKey(void) /*此函数返回一个按键的数值*/
{ int key;
key=bioskey(0); /*bioskey为调用BIOS键盘接口*/
if(key<<8) /*位移*/
{
key=key0x00ff;
}
return key; /*返回按键*/
}
/*-------------13-------------*/
void main()
{ int key;
struct date d; /*定义时间结构体*/
getdate(d); /*读取系统日期并把它放到结构体d中*/
clrscr(); /*清除屏幕*/
printf("\n\n\n\n\n");
printf("\t\t\t****************************\n"); /*版本信息*/
printf("\t\t\t 学生成绩管理系统1.0 \n");
printf("\t\t\t****************************\n");
printf("\t\t\t 制作人:张春覃 \n");
printf("\t\t\t 指导老师:杨宇晶 于宏伟 \n");
printf("\t\t\t 制作时间:2005年9月 \n");
printf("\t\t\t****************************\n");
printf("\t\t\t请按任意键继续...");
/*while(!kbhit());*/
getch(); /*从键盘读取一个字符,但不显示于屏幕*/
system("cls"); /*调用DOS的清屏函数,TC中可用clrscr代替*/
while(1) /*主菜单*/
{
printf("\n\n\n\n\n");
printf("\t\t\t************************************\n");
printf("\t\t\t**\tF1 --帮助 **\n");
printf("\t\t\t**\tF2 --输入数据并存入文件 **\n");
printf("\t\t\t**\tF3 --根据学号查询成绩 **\n");
printf("\t\t\t**\tF4 --根据姓名查询成绩 **\n");
printf("\t\t\t**\tF5 --输出文件内容 **\n");
printf("\t\t\t**\tF6 --统计及格和优秀人数 **\n");
printf("\t\t\t**\tESC--退出系统 **\n");
printf("\t\t\t************************************\n");
printf("\n\t\t\t请输入选项\t\t%d年%d月%d日\n\n",d.da_year,d.da_mon,d.da_day); /*提示信息,并显示当前系统日期*/
key=GetKey(); /*调用自定义函数,读取一个键*/
switch(key)
{
case F1: HelpMessage(); break;
case F2: CreatFile(); break;
case F3: Search_Xuehao(); break;
case F4: Search_Xingming();break;
case F5: ListFile(); break;
case F6: Statistics(); break;
case ESC:exit(1); break;
/*default: puts("\t\t\t输入错误选项!");
printf("\t\t\t按任意键返回...");
getch();*/
}
clrscr(); /*每执行完一项功能后,自动清屏*/
}
}
1. 总结
通过本次的C++课程设计,让我学会了把书本上的知识应用到了实际中来。虽然在这几周中有过挫折和坎坷,有的问题一直到了最后才被解决,但是我认为这未必就不是好事,这样能锻炼我的意志,磨练我的耐心,失败是成功之母,这话一点都没错,没有失败就没有成功。
让我没有失去信心的是关怀我们的老师,当我们有了问题和疑问,老师就很耐心的给予讲解,让我们有了一个良好的学习氛围。
2. 参考文献
《C++程序设计》 钱能 清华大学出版社
《C++程序设计试验指导》 钱能 清华大学出版社
《C程序设计》 谭浩强 清华大学出版社

如何测试一个学生管理系统——写测试用例·

学生管理系统
详细设计说明书
编写说明
标题:详细设计说明书
类别:文档
密级:内部
编辑软件:Microsoft Word 2000 中文版
版本历史:
版本 作者 日期 备注
V1.01 2002/09/08 详细设计说明书
V1.0.2 2003/08/30 详细设计说明书
编写目的:
本文档详细描述组成系统的各个软件组成部分学生综合管理系统接口设计,包括每个软件模块(或类)的属性、方法、事件,各软件模块的外部接口说明,测试要点等内容。
本文档由项目组维护,供项目组使用。
第1章 引言
1.1. 项目说明
项目名称:乐山师范学院学生管理系统。
项目提出单位:乐山师范学院计算机科学系
项目开发者:乐山师范学院计算机科学系Attract工作室
项目使用部门:乐山师范学院各系科(学院)
项目建设单位:乐山师范学院计算机科学系
1.2. 项目定义
系科综合管理信息系统是为了适应现代化学校管理的需要,加快推进学生综合管理系统接口设计我校数字化校园建设、充分利用校园网,利用网络、多媒体等计算机应用技术和手段,提高办公效率、改善质量的高效管理信息系统。
学生管理系统是系科综合管理信息系统的重要组成部分。
1.3. 编写目的
本文档为“乐山师范学院系科综合管理信息系统(学生管理系统)详细设计说明书”,主要用于为实现系统的功能而进行的系统详细设计说明,详细系统各软件组成模块的实现流程、功能、接口、编译、测试要点等内容,便于对系统的编码进行指导和约束。本文档供项目组全体成员及项目组领导,单元测试人员阅读。
1.4. 参考资料
《学生管理系统_系统软件需求说明书》。
《学生管理系统_系统概要设计说明书》。
《学生管理系统_数据库设计说明书(数据库字典)》。

第3章 系统功能实现
从前面需求分析可以看出,系统功能庞杂,主要分为前台浏览器(B/S)信息发布和数据查询,后台(C/S)数据管理和处理,学生管理功能部分数据分为5类:新生相关;在校生相关;组织社团相关;毕业生相关;学生成绩综合查询相关。从使用和操作的功能上分,有三种用户:普通客户(浏览器浏览、查询);业务数据管理人员(学生工作辅导员、教务干事);系统管理员。为便于整个系统组织管理,把各个相对独立的数据或功能组织到整个大系统中来,我们把各个相对独立的功能完全独立设计,编译成独立的目标(功能)模块(single Executable),各功能模块最后被集成到一个称为虚拟桌面的控制台模块中。相应地将系统结构分为一个控制台程序和五个子系统,各子系统又分为若干各子模块。对应于每一个模块,几乎都有录入、查询、修改、删除、查看详细资料这几个功能。整个业务流程就是由这几种基本功能实现的。在这里每个模块都要用到的功能没必要在每个子模块里重复阐述,在每个子模块里只列出区别于其它子模块的功能实现。
3.1. 系统控制台模块
功能:
各子功能模块的组织和调用;
统一的登陆界面实现到数据库服务器的登陆;
显示系科主页Web的首页(主要是系科重要通知、消息等);学院通知页面;系科每周工作安排。
系统图标。
设计:
1. 登陆数据库:
输入数据库服务器名(ServerIP)、用户账号()UserID、密码(PassWord);以账号DEP_Computer0、密码DEP_Computer0登陆数据库服务器,检索系统权限表,根据权限设置相应功能模块:
①无此用户或禁止权限
Enable := False;
②浏览权限
Enable := True;
修改 UserID := Dep_Computer1;
修改 PassWord := 1111111111111;
③修改权限
Enable := True;
修改 UserID := Dep_Computer2;
修改 PassWord := 222222222222;
2. 采用Win31下程序组、程序项的原理组织各执行模块:
登陆服务器
新生录取数据、入学报道管理
学生信息(在校)管理
学生社团管理
毕业生信息管理
学生成绩综合查询与统计
各程序组、程序项的显示分别可以是分层/树状/大图标/小图标等方式;各程序项或菜单项的名称命名为相应功能模块的目标代码文件名。
3.可执行功能模块的调用执行:通过程序项或菜单项名称获取可执行目标代码文件名,应用API函数CreateProcess开始执行。

哪位朋友有现有软件开发文档的,请帮帮忙。。或在哪个网有的

(学生综合管理系统开发)
软件开发部
2006-03-21
版本:V1.0
目录
VII 引言 3
I 编写目的: 3
II 读者对象 3
III 背景 3
IV 名词术语定义 4
V 参考资料 4
II 任务概述 4
I 目标 4
II 用户的特点 4
III 假定和约束 4
III 需求规定 5
I 业务概述: 5
II 业务流程: 5
III 系统功能: 7
(1)库存盘点数据管理 7
(2)倒算产成品入库数量 7
(3)倒算生产领料数量 7
IV 对性能的规定 7
精度 7
时间特性要求 7
灵活性 8
故障处理要求 8
V 运行环境规定 8
设备 8
支持软件 8
VI 未尽事宜 8
VII 附件 8
VII 引言
I 编写目的:
 明确软件开发的目标和任务
 界定软件开发的功能和性能需求
 便于用户、分析人员和软件设计人员进行理解和交流。用户通过需求规格说明书,即可初步判定目标软件能否满足其原来的期望,设计人员将需求规格说明书作为软件设计的基本出发点。
II 读者对象
 项目经理
 需求设计师
 软件工程师
 软件测试工程师
 终端用户
III 背景
 软件系统名称: 妇女儿童发展中心学籍收费管理系统
 本项目的任务经由***公司及***分公司)提出;用户为妇女儿童发展中心操作人员。
 妇女儿童发展中心**软件环境为 *******
 该软件使用的开发平台:微软DOTNET 平台VISUAL STUDIO .NET 2003数据库管理系统为:SQL Server 2000
 该软件运行于Windows系列平台。
IV 名词术语定义
 无。
V 参考资料
 《客户化开发主要功能需求说明》
II 任务概述
I 目标
 开发本软件的主要意图:同态生成专业及班级.通过对学生入学情况登记及交费情况登记实现学生交费及学员综合管理
 本需求规格说明书界定的功能需求主要为:
(1) 动态生成培训组织架构及班级信息(增,删,改,查,打印);
(2) 学生入学情况综合管理(增,删,改,查, 打印);
(3) 交费情况管理(增,删,改,查,打印);
(4) 权限设置,密码管理.
(5) 系统备份恢复及初始化
II 用户的特点
 操作人员的计算机水平较好,具有较强的计算机操作和业务处理能力。
 维护人员的水平一般,具有基础的网络配置及系统维护能力。
 软件的使用频度:本软件要求准确反应查询结果的相关数据.。
III 假定和约束
 本系统实现无需88产品配套支持。如须开发通用接口,需88产品支持
 需求限制:本软件需求说明书一经确定,双方应本着遵守该《需求规格说明书》的原则,不得随意更改需求,如果确需更改,则在《客户化开发合同》的基础上,经由双方协商解决。
III 需求规定
I 业务概述:
1. 组织架构管理;
2. 学生入学信息管理;
3. 交费管理
4. 系统设置
II 业务流程:
1. 总体描述:
动态生成中心组织架构(专业,班级,教师),实现对学生入学信息登记,交费情况登记功能.实现入学信息及交费情况综合查询.对组织架构,学生入学交费信息实现综合打印.实现权限管理,不同部门不同权限(业务部负责入学信息登记,财务负责交费管理)以及人员密码修改及数据库备份及初始化.
2.模块分类:
III 系统功能:
(1) 组织架构管理
功能说明:
1. 由中心下设培训专业及专业班级实现动态调整,由班级关联上课时间,地点及授课老师,班级容量,班级类型(大,小).
2. 各培训专业及班级可以随意修改及新增.
(2) 学生入学信息管理
功能说明:
1. 记录学生所学专业,及分配班级,上课时间,授课老师,上课地点,班级容量.
2. 并提供修改删除及查询功能.
3. 实现综合数据打印.
(3) 交费管理
功能说明:
1. 对学生交费情况(交费时间,是否交费,退费情况)实时记录
2. 提供对交费情况新增修改及查询功能.针对各专业及班级进行每日交费情况汇总统计.
3. 提供查询及打印功能.
(4) 系统设置
功能说明:
1. 可添加不同权限的操作员并提供对操作员信息修改,删除,查询功能.
2. 提供修改操作员密码功能及操作员权限管理,如新增操作员权限或删除操作员权限功能.
3. 针对中心数据提供数据备份及数据初始化功能.
IV 对性能的规定
精度
 数据传输过程中不能发生事务中断情况,如果是网络原因等不可预料的因素,则保持事务的完整性。
时间特性要求
 响应时间:及时性要求中等;
 更新处理时间: 及时性要求中等;
 数据的转换和传送时间: 及时性要求中等;
灵活性
 运行环境的变化:该软件适用于Windows平台系列,包括(Windows98,Win2000 professinal, Win2000 Server及Win2000 Advanced Server Winxp Professinal,Winxp home edition);不适用于其他非Windows系列操作平台。
 同其他软件的接口的变化:本软件在88系统V8.0基础上开发.
 精度和有效时限的变化:该软件运行于Win32平台,在有效时限范围内,数据精度取决于开发平台的限制。
故障处理要求
 逻辑错误诸如数据计算错误等,维护开发人员能够在大家界定的时间范围内修改。
V 运行环境规定
设备
 最低配置:CPU PIII600以上,内存128M以上,显示器最低分辨率800*600,最低增强16色以上,网卡要求100M以上。
支持软件
 操作系统: 该软件适用于Windows平台系列,包括(Windows98,Win2000 professinal, Win2000 Server及Win2000 Advanced Server Winxp Professinal,Winxp Home Edition);不适用于其他非Windows系列操作平台
 数据库管理系统:Miscrosoft Sql Server 2000
VI 未尽事宜
 本软件需求规格说明书依附于《客户化开发合同》,如有抵触。以《客户化开发合同》为准。
VII 附件
无.

求一个用C+编写的题目为学生学籍信息管理系统设计,整个系统要设计为数据录入、查询,删除,排序模块,

没法传图,自己想一下怎么改吧……
一.开发目的:
总结软件开发过程中的方法和技巧,更好的应用和数据库技术
1.开发内容:开发一套学生成绩管理系统软件
采取的研究方法:采用面向对象的编程,结合网络和数据库技术,实现控制和管理。通过系统分析、需求分析、概要设计、详细设计、编写代码、软件测试、软件维护、经验方法总结等一系列实验方案,实验软件的开发。
2.具体开发方案:
分七个阶段进行:
系统分析、需求收集和分析
概念设计
第一阶段:系统分析、需求收集和分析
这一阶段首先进行系统分析,分析确定系统的规模和范围,确定软件的总体要求以及所需要的硬件和支撑软件,确定待开发软件与外界的接口,根据用户的情况确定软件对操作的要求,以及待开发软件总体上的约束和限制,完善项目计划。
在这之后,这一阶段的大部分时间将被用来进行需求收集和分析。向学校管理人员及学生了解情况,确定软件系统的综合要求,分析软件系统的数据要求,导出系统的逻辑模型,修正项目开发计划。
采用结构化分析方法,生成数据流图、数据词典及加工逻辑说明。
估计阶段跨度:2006年某月初至某月中旬
第二阶段:概要设计
在这一阶段将确定软件系统的结构,对全局数据结构进行设计,进行模块划分,确定每个模块的功能 接口以及模块间的调用关系。
采用与结构化方法衔接的结构化设计方法,生成结构图及概念设计说明书。
估计阶段跨度:2006年某月中旬至某月底
第三阶段:详细设计
为每个模块设计实现的细节将成为这个阶段的主要任务,还要对局部数据结构进行设计。
采用结构化设计方法。采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。使得程序具有良好的结构,增强程序的可读性。生成程序流程图及详细设计说明书。
详细设计时,如果不满意,须回到概要设计中重新完善设计。
估计阶段跨度:2006年某月初至某月中旬
第四阶段:编写代码
这一阶段用来根据详细设计说明书编写代码。
采用计算机语言编写。追求高质量的代码,生成源程序代码、内部文档。
估计阶段跨度:2006年某月中旬至某月底
第五阶段:软件测试
这将是一个很重要也将是一个很耗时间和精力的阶段。
在这一阶段中将尽可能多地发现软件中的错误和缺陷。如果有错,还将退回到编码阶段进行调试。测试过程分为单元测试、集成测试和确认测试。
估计阶段跨度:2006年某月初至某月中旬
第六阶段:完善各项文档及和报告,从整个开发过程和这些文档中总结经验和教训,罗列各种方法和技巧。
估计阶段跨度:2007年某月中旬至某月底。
需求分析说明书
一,引言
21世纪以高科技为核心的知识经济将占主导地位,国家的综合国力和国际竞争力将越来越取决于科学技术创新水平。教育作为知识创新、传播和应用的基础,培养和输送人才的摇篮,已经成为经济发展和社会进步的基础。尽管人类进步的程度随着不同时代,不同地区而有所变化,教育的口径却在不断扩宽,以便使过去仅供少数人使用的教育资源能够为更多各种年龄、不同社会阶层和背景的人们所用。在信息爆炸的时代,传统教学管理面临着诸多挑战。
1.编写目的:
开发基于互联网的学生选课系统,提高管理工作的效率、提高信息的开放性、改善学生和教师对其最新信息查询的准确性。
2.背景说明
随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生选课管理仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低,因此,迫切需要开发基于互联网的体育课信息管理系统来提高管理工作的效率。基于互联网的学生选课管理系统,在学生选课的规范管理、科学统计和快速查询方面具有较大的实用意义。它提高了信息的开放性,大大地改善了学生、教师对其最新信息查询的准确性。
3.术语定义及参考资料
1. (美) Grady Booch,James Rumbaugh,Ivar Jacobson,《UML用户指南》,机械工业出版社,2001年8月
2.Microsoft,MSDN
3.Microsoft, SQL Server2000联机手册
4.Roger S. Pressman。软件工程——实践者的研究方法。机械工业出版社,1997
5.IPL。Software Testing and Software Development Lifecycles。IPL,1996
6.Karl E. Wiegers《软件需求》机械工业出版社,1999
7.张海藩《软件工程导论》清华大学出版社。
4任务概述
4.1. 目标
系统开发的总体任务是实现学生选课信息关系的系统化、规范化和自动化。
4.2. 系统技术
学生选课系统要求具有信息处理的开发性,方便教师上传学生成绩、学生上网选课和查询选课信息及成绩等,因此本系统设计为基于WWW的网络数据库应用系统,使用ASP脚本以Access为数据库的开发技术,运行在支持ASP的服务器上。
4.3基本设计概念和处理流程
采用基于SQL Server 的分布式数据库管理系统。三层结构是目前用得最多的,这种结构比传统的C/S结构增加了一个应用程序服务器,应用程序服务器包括了统一的界面、业务规则和数据处理逻辑等等,这样客户端程序就可以做得比较小,也就是常说的瘦客户,更由于业务规则和数据处理逻辑的集中在服务器上统一管理,客户端无须进行复杂的计算,也不会因为错误的操作而影响到其他的用户,所以他的可靠性、稳定性和效率都比较好。
4.4. 用户的特点
为保证系统安全高效的运行,本系统把用户划分为3类:教务处、教师和学生。不同的用户在系统中的作用和权限也有所不同,所以它所需要完成的功能也就不同。
教务处可以完成本系统所有的功能:
1) 学生信息管理,除学生基本信息外,还可管理学生所选课程、成绩等;
2) 教师信息管理,包括教师个人的基本情况和任课情况;
3) 项目及班数的设定:根据学校教务处所排课进行班级数及人数的统计,然后根据统计结果进行项目及班数的设定;
4) 排课:根据上一步分班情况安排任课教师;
5) 报表生成及输出:生成教师担任课程分班表、按项目生成学生成绩表、按学生行政班生成成绩表及所有报表的输出。
教师在本系统的功能:查询学生选课情况、自己任课情况、获取自己所担任课程分班表、录入及修改成绩等。
学生在本系统的功能:查询本人信息、教师任课信息、选课、选课信息查询、成绩查询。
5.需求规定
5.1. 对功能的规定
1.可实现学生选课注册
2.方便实现学生选课信息查询
3.可对学生成绩档案进行管理,成绩表单生成简便。
4.安全有效的用户区分,管理
5.档案数据的高安全性,保密性
6.有帮助文档
5.2. 对性能的规定
使用稳定,操作性能好,操作方法易于掌握,系统的安全性强
6. 设计思想
用户的需求具体表现在对各种信息的提供、编辑、处理及查询统计上。这就要求数据库结构能充分满足各种信息的输入、处理和输出。通过分析学生选课管理系统的现实需求,学生选课管理系统各环节的基本数据及数据处理流程,在与管理人员沟通、交流与探讨的基础上,得到以下学生选课系统的数据流程图
6.1. 数据库的设计
通过对学生选课管理系统工作内容和相关数据流程分析,根据学生选课管理系统的需要,就可以设计出能满足用户需求的各种实体,以及它们之间的关系,由此得到数据库所支持的数据模型,即数据库的逻辑结构,具体情况如下:
1.学生信息表:开学时将教务处提供的学生信息库按系统的要求修改库结构并导入Access数据库中,应包括如下信息:姓名、学号、院系、班级、性别、所选课程、任课教师、备注等。
2.教师信息表:包括教师姓名、教师代码、性别、年龄、职称、主要教授课程、兼任课程等。
3.课程信息:包括课程目录、课程、课程代码、教学内容、任务与目的、考试方法、要求等。
4.课程表:包括课程名称、课程编号、任课教师、课程学分、上课时间。
5.成绩单列表:包括学生姓名、学号、院系、班级、课程、任课教师、成绩。
6.2. 系统功能特点
1.内容全面 系统全面覆盖了体育课信息,可为学校、教师和学生提供全面准确的信息。
2.层次分明 系统采用模块化程序设计结构。各模块之间既相互独立,又具有一定的联系,各模块可独立编制、调试、查错、修改和执行,结构严谨,便于扩展和维护。
7.系统需求分析
说明:
学校每年新生入学,毕业生离校和各种其它变动,如学籍变动,个人信息修改。每学期学校者要开设一定的课程提供给学生根据自己的情况来选择,最后的选择结果要给出学生的课程表。如何有效的管理这些学生信息,帮助学校和老师管理和掌握这些情况,这就是学生信息管理系统需要完成的任务。下面用软件工程的思想和方法完成该系统的设计过程。
功能:
个人信息查询和修改,包括流动,注册,更新管理
可行性研究报告
1. 编写目的
编写这份可行性研究报告的目的是让读者能够了解本系统的开发可行性。预期的读者包括上级领导,相关开发人员以及管理人员。
一.可行性研究的前提
随着科学技术的进步和社会经济的发展,计算机在现实生活中扮演越来越重要的角色,PC机价格不断的下降和生活水平的提高使得更多的中国家庭能够拥有自己的改变世界的机器,与此同时,我们也已经注意到,在大学校园里,越来越多的计算机已经进入同学们的宿舍,成为他们学习,生活中的一部分。
学生成绩管理方面,进入了信息化时代,我们有能力让我们的生活变的更好,对于学生成绩管理人员每日繁重的工作可以通过计算机来进行缓解,以实现管理自动化,工作人员对资料的管理,信息的发布,用电安全的控制均是人工作业,运作效率较低。因此,建立一个自动化的管理服务的计算机应用软件是十分必要的
1.1 要求
C++.net,传感器,SQL.
1.2 目标
能够快速的查询出学生的各科成绩以及所在班级等各种用途。
1.3 进行可行性研究的方法
对学生和校领导采用问卷调查的方法,询问他们,以确定最佳的可行性研究方案。软件采用现代流行WINDOWS操作界面。是标准的WIN32应用程序,可运行在WIN95\WIN98\WinMe\WIN2000\WINXP\WINNT等系统平台上的多任务应用程序。在运行时可以直观的浏览、查询和掌握学生的成绩,同时能够了解学生的基本信息所在系部、班级、宿舍的具体地址。结束了人工统计的耗时长、工作量大、错误率高的缺点。
1.4 评价尺度
1. 是否功能齐全,运行稳定。2.在网络功能方面是否方便管理。3.设置是否灵活开4.是否具有多任务,高效率的特点。5.是否具有界面友好,操作简单的特点。
2 处理流程和数据流程
2. 所建议的系统
2.1 对所建议系统的说明
我们所建议的系统为学生成绩管理系统。它是为了提高学生成绩管理的自动化程度而开发的。它可以解决一下问题:改变学生成绩输入的麻烦以及查询工作量大的问题还有输出的不便。
3.影响
3.1 对设备的影响
由于以前无自动化管理的方案,所以所有设备都需要购买。
3.2.对软件的影响
由于以前无自动化管理的方案,所以不需要考虑对现存应用软件合支持软件的影像。
3.3.对用户单位机构的影响
为了建立和运行所建议系统,需要提高管理人员的技术水平。
3.4.对系统运行过程的影响
所建议系统没有影响运行过程。
3.5.对开发的影响
所建议系统对软件开发人员要求不高,但是对硬件要求比较高。
3.6.对地点和设施的影响
所建议系统对建筑物无改造,可以利用原有的通信线路。
3.7 技术条件方面的可能性
本软件有计算机系的学生开发,调试,由计算机系老师知道。可完成性很高。
4. 可选择的其他系统方案
由于此系统方案是学生开发,而且资金有限所以暂时无其他系统方案。
5. 投资及效益分析
5.1 支出分析:
5.2 收益分析:
5.3 收益/投资比
5.4 投资回收周期
5.5 敏感性分析
6. 社会因素方面的可能性
所有软件都选用正版。
所有技术资料都由提出方保管。
合同制定确定违约责任。
7.用户使用可行性
由于学校的老师都有一定的计算机基础,不用培训就可以使用,所以用户使用可行性通过。
8. 结论
通过上述分析可以知道这个软件操作简单、功能齐全、功能开放、运行稳定、多任务、高效率等特点。所以说是计算机与学生成绩管理上的好软件!
设计说明书
一.概要设计说明书
1.系统功能设计
2.数据库概念设计
根据以上数据流图导出数据库所需数据项和数据结构
学生:学号,姓名,性别,生日,所在院系,所在班级:
课程:课程号,课程名,讲师,上课时间,地点,课程简介
选课结果:记录号,选课学生,所选课程
学籍变更记录:记录号,变更情况,记录时间,详细描述
2.1数据库概念结构设计的E-R 图
说明:E-R图中矩形代表实体,菱形代表实体间的联系,圆角矩形代表实体的属性
2.2数据库逻辑结构设计
根据以上E-R图,需要五个基本表:学生信息表、课程信息表、选课结果表、奖惩信息表、其中教师信息是处部表,不列出,由于使用打开系统的不光是教务人员,每个学生都要登录到选课系统进行课程的选择,因此,需要对不同的登录人员进行密码的认证和权限的限制,防止越权行为,用户名,密码,权限,保存在一个表中。
1. USER-PASS用户密码信息表字典
字段名
数据类型
是否可空
说明
ID
CHAR
NOT NULL
用户名(主键)
PASSWORD
CHAR
NOT NULL
密码
AUTHORITY
CHAR
NOT NULL
权限
2. COURSE课程信息表数据字典
字段名
数据类型
是否可空
说明
ID
CHAR
NOT NULL
课程号(主键)
NAME
VARCHAR
NULL
课程名
TEACHER
VARCHAR
NILL
讲师
CLASTIME
VARCHAR
NULL
上课时间
CLASSROM
CHAR
NULL
上课地点
INTRO
VARCHAR
NULL
简介
3. COURSE-SELECT选课结果表数据字典
字段名
数据类型
是否可空
说明
ID
SMALL INT
NOT NILL
记录号(主键)
COURSE
CHAR
NULL
课程名
STUDENT
CHAR
NULL
选课学生(外部关键
4. STUDENT学生个人信息表数据字典
字段名
数据类型
是否可空
说明
ID
SMALL INT
NOT NULL
学号(主键)
NAME
VARCHAR
NOT NULL
姓名
SEX
CHAR
NOTNULL
性别
CLASS
CHAR
NULL
班级
DEPARTMENT
CHAR
NULL
院系
BIRTHDAY
VARCHAR
NULL
生日
5. 奖惩记录信息表
字段名
数据类型
是否可空
说明
ID
SMLL INT
NOT NULL
记录号(主键)
STUDENT
CHAR
NOT NULL
学号(外部键)
LEVEL
CHAR
NULL
奖惩代码
TIME
DATA
NULL
时间
DESCRIPTION
VARCHAR
NULL
描述
二主要模块详细设计说明书
1用户身份认证模块
功能:按用户输入的用户名和密码是否合法
合法则进入应用程序
非法则显示出错信息
界面:由总控模块调用
模块说明细化为详细逻辑IPO图
用户身份认证模块
输入 处理 输出
连接数据库表 连接数据库错误中断程序
捕捉错误
用户名 获取用户名
用户密码 获取用户密码
读USER-PAS
判断用户名是否存在
判断密码是否存在 提示信息
捕捉异常
判断用户权限是合法
隐藏登录窗口
显示主窗体
文件
USER-PASS表
2.选课模块
功能:接受学生选课信息
刷新学生课程表
界面:调用添加、删除模块,打印课表模块
将模块说明细化为详细逻辑
选课处理IPO图
输入 处理 输出
课程编号 为课程号过滤 输入课程编号异常提示
接受课程号
打开课程信息表
判断是添加或是删除
添加
检索课程表读该记录
若该记录存在
显示所选课程详细信息 执行添加语句
调用添加模块
将选课结果刷新
删除 执行删除语句
调用删除模块
将稳定课结果刷新
提交 课表:课程编号,课程名
调用打印课表模块文件
课程信息表
选课结果表
3. 课程申请模块
功能:接受输入的新添课程信息
将新课程信息存入课程信息表
删除旧课程
界面:调用已开课程信息表
调用申请修改程序
将模块细化为详细逻辑IPO图
课程管理模块
输入 处理 输出
课程编号 添加新课程
获取当前教师所选课程
打开已开课程表
查询是否存在该记录
若无该记录则是新课程
调用添加模块
提取课程编号
提取课程名称
提取课程简介
提交
若有该记录则不是新课程
出错处理 提示信息
删除旧课程
文件
课程信息表
软件测试
输入数据
有效等价类
无效等价类
证件号码
1、6位数字字符
2、有效数字字符
3、少于6个字符
4、大于6个字符
使用功能
5、选课
6、查询
7、输入其他文字
有效测试用例
测试数据 期望结果 测试范围
123456 输入有效 1
选课 输入有效 5
5
无效测试用例
测试数据
期望结果
测试范围
12jda1
输入无效
2
1234561
输入无效
4
12341
输入无效
3
12t21
输入无效
2、 3
排课
输入无效
7
(折半查找算法测试)2
测试名称:模块输入课程编号过滤的测试方案
a) 规定课程编号为输入4个字符,头两个字符为字母,后2个字符为数字例如TP38
b) 测试方法采用黑盒测试法中的等价类划分法
划分等价类
输入数据
有效等价类
无效等价类
课程号
1 两字母+两数字
2有非数字或字母
字母
3 A--Z
4字母少于两个或多于两个
数字
5 00--99
6数字少于两个或多于两个
为有效等价类和每个无效等价类设计测试用例
测试数据
期望结果
测试范围
HY76
输入有效
1、3、5
@D78
输入无效
2
S86
输入无效
4
MA2
输入无效
6
HY345
输入无效
6
DEH94
输入无效
4
测试名称:课程查找模块设计测试方案
a) 本模块采用的是折半查找算法主要是测试各程序在各种典型情况下是不能有效的进行查找
b) 测试方案采用选择白盒测试法中的路径覆盖法
说明:由于输入的课程编号已经被过滤,所以编号接受的范围为00--99
另外,团IDC网上有许多产品团购,便宜有口碑

C语言 学生成绩管理系统 用单链表

/*-------------1-------------*/
#include<bios.h
#include<dos.h/*头文件*/
#include<conio.h
#include<ctype.h
#include<process.h
#include<stdlib.h
#include<stdio.h
#include<string.h
#define NULL 0
#define ESC 0x001b /* 退出 */
#define F1 0x3b00 /* 查看帮助信息学生综合管理系统接口设计,调用HelpMassage()函数 */
#define F2 0x3c00 /*输入学生成绩*/
#define F3 0x3d00 /*按学号查找*/
#define F4 0x3e00 /*按姓名查找*/
#define F5 0x3f00 /*列出所有学生成绩*/
#define F6 0x4000 /*统计*/

struct stuType/*定义结构体变量*/
{
char NO[11];/*学号长度为10*/
char XM[10];
float CJ[4];/*包含4门成绩*/
};

/*-------------2-------------*/
int JY_NO(char *stu_num,FILE *fp)/*检验学号学生综合管理系统接口设计的正确性*/
{ struct stuType stud;
int NO;
char*p=stu_num;
if(strcmp(stu_num,"#")==0) return 1;/*若输入"#"返回真值,不再循环输入*/
while(*p!='\0')/*学号必须是数字学生综合管理系统接口设计,否则返回重新输入*/
{ NO=(int)*p;
if(NO<48||NO57)
{ puts("\t\t\t非法学号!请重新输入!\n");
return 0;
}
else p ;/*指针加1*/
}
if(strlen(stu_num)!=10) /*若学号长度不为10,则返回重新输入*/
{ puts("\t\t\t学号长度不对!\n");
return 0;
}
if(getchar()!='\n')/*若学号后面的字符不是回车符,则学号长度大于10*/
{ printf("\t\t\t学号长度大于10个!请重新输入!\n");
do{}while(getchar()!='\n'); /*用getchar接收多余的字符*/
return 0;
}

else
{
rewind(fp);/*使文件指针指向头*/
while(!feof(fp)) /*若文件指针未到结尾,就继续执行下面的循环,feof遇到文件结束符返回非零值,否则返回0*/
{ fread(stud,sizeof(structstuType),1,fp); /*读取一定长度的数据*/
if(strcmp(stu_num,stud.NO)==0)/*学号的唯一性*/
{ printf("\t\t\t学号重复,请重新输入!\n");
printf("\t\t\t该学生成绩如下:\n");
printf("\t\t\t语文:%.1f\n",stud.CJ[0]);
printf("\t\t\t数学:%.1f\n",stud.CJ[1]);
printf("\t\t\t英语:%.1f\n",stud.CJ[2]);
printf("\t\t\t总评:%.1f\n",stud.CJ[3]);
return 0;
}
}
}
return 1;

}

/*-------------3-------------*/
int JY_NO2(char *stu_num) /*检验学号*/
{ int NO;
char*p=stu_num;
if(strcmp(stu_num,"#")==0)return 1; /*若输入“#”,则返回真值结束*/
if(strlen(stu_num)!=10) /*学号长度为10*/
{ puts("\t\t\t学号长度不对!\n");
return 0;
}
while(*p!='\0')/*学号必须用数字,若包含有字母,或其它字符则返回假值重新输入*/
{ NO=(int)*p;
if(NO<48||NO57)
{ puts("\t\t\t非法学号!请重新输入!\n");
return 0;
}
else p ;/*指针加1*/
}
if(getchar()!='\n') /*检验学号长度是否大于10,并把多余的字符去掉*/
{ printf("\t\t\t学号长度大于10个!请重新输入!\n");
do{}while(getchar()!='\n');
return 0;
}
return 1;
}

/*-------------4-------------*/
int JY_XM(char *stu_XM)/*检验姓名*/
{ int PD;
char *p;
p=stu_XM;
while(*p!='\0')/*姓名只能用中文*/
{
PD=(int)*p;
if(PD0)
{ puts("\t\t\t姓名只能用中文,请重新输入学生综合管理系统接口设计!\n");
return 0;
}
else p ; /*使指针加1,指向下一汉字*/
}
if(getchar()!='\n')/*姓名长度不得大于5个*/
{ printf("\t\t\t姓名长度大于5个!请重新输入!\n");
do{}while(getchar()!='\n');
return 0;
}
return 1; /*字符串全为汉字返回真*/

}

/*-------------5-------------*/
int JY_CJ(float stu_CJ)/*学生成绩只能在0~100之间*/
{
if(stu_CJ<0||stu_CJ100)
{ printf("\t\t\t输入错误,成绩只能在0~100之间!\n");
return 0;
}
return 1;
}

/*-------------6-------------*/
void CreatFile() /*输入文件*/
{ FILE *fp;
structstuType stu,stu0={"","",}; /*对stu0先赋值*/
fp=fopen("stu.dat","wb ");/*打开或创建一个二进制文件,打开时将原来的内容删除*/
if(fp==NULL)
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return;
}
else
{ while(1)
{ stu=stu0;
do{printf("\n\t\t\t请输入学号:");/*输入学号并检验其正确性*/
scanf("s",stu.NO);
}while(!JY_NO(stu.NO,fp));
if(strcmp(stu.NO,"#")==0)break;
do{printf("\n\t\t\t请输入姓名:");/*输入姓名并检验其正确性*/
scanf("s",stu.XM);
}while(!JY_XM(stu.XM));
do{printf("\n\t\t\t请输入语文成绩:"); /*输入成绩并检验其正确性*/
scanf("%f",stu.CJ[0]);
}while(!JY_CJ(stu.CJ[0]));
do{printf("\n\t\t\t请输入数学成绩:"); /*同上*/
scanf("%f",stu.CJ[1]);
}while(!JY_CJ(stu.CJ[1]));
do{printf("\n\t\t\t请输入英语成绩:");
scanf("%f",stu.CJ[2]);
}while(!JY_CJ(stu.CJ[2]));
do{printf("\n\t\t\t请输入总评成绩:");
scanf("%f",stu.CJ[3]);
}while(!JY_CJ(stu.CJ[3]));
fwrite(stu,sizeof(struct stuType),1,fp); /*写文件*/
}

}
fclose(fp);/*关闭文件*/

}

/*-------------7-------------*/
void Search_Xuehao() /*按学号查询*/
{ FILE *fp;
int flag;
structstuType stu,stud;
fp=fopen("stu.dat","rb");
if(fp==NULL)/*若文件打不开则输出下面的信息*/
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return;
}
else
{ do{ puts("\n\t\t\t输入“#”结束查询");
do{ printf("\t\t\t请输入要查询的学号:");
scanf("s",stu.NO);
}while(!JY_NO2(stu.NO));
if(strcmp(stu.NO,"#")==0)break; /*若输入“#”则结束循环*/
flag=0;
rewind(fp);
while(fread(stud,sizeof(struct stuType),1,fp))/*检查文件指针结束*/
{ if(strcmp(stu.NO,stud.NO)==0) /*比较学号*/
{puts("\t\t\t该学生成绩如下:");
printf("\t\t\t学号:%s\n",stud.NO);
printf("\t\t\t姓名:%s\n",stud.XM);
printf("\t\t\t语文:%.1f\n",stud.CJ[0]);
printf("\t\t\t数学:%.1f\n",stud.CJ[1]);
printf("\t\t\t英语:%.1f\n",stud.CJ[2]);
printf("\t\t\t总评:%.1f\n",stud.CJ[3]);
flag=1; /*记录学号是否查到*/
}
}
if(flag==0)puts("\t\t\t无此学号!");
}while(strcmp(stu.NO,"#")!=0);

}
fclose(fp);/*关闭文件*/
}

/*-------------8-------------*/
void Search_Xingming() /*按姓名查找*/
{ FILE *fp;
int flag=0;
structstuType stu,stud;
fp=fopen("stu.dat","rb");
if(fp==NULL)
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return;
}
else
{ do{
do{ printf("\t\t\t请输入要查询的学生姓名:");
scanf("s",stu.XM);
}while(!JY_XM(stu.XM));
rewind(fp);/*文件指针指向头*/
while(fread(stud,sizeof(struct stuType),1,fp))
{ if(strcmp(stu.XM,stud.XM)==0) /*比较姓名是否相同*/
{puts("\t\t\t该学生姓名如下:");
printf("\t\t\t学号:%s\n",stud.NO);
printf("\t\t\t姓名:%s\n",stud.XM);
printf("\t\t\t语文:%.1f\n",stud.CJ[0]);
printf("\t\t\t数学:%.1f\n",stud.CJ[1]);
printf("\t\t\t英语:%.1f\n",stud.CJ[2]);
printf("\t\t\t总评:%.1f\n",stud.CJ[3]);
flag=1; /*记录姓名是否被查到*/
}
}
if(flag==0)puts("\n\t\t\t无此学生!");
puts("\t\t\t是否继续(y--继续,其他返回)?");
}while(getch()=='y');
}
fclose(fp);
/* puts("\t\t\t请按任意键继续...");*/
/* getch();*/

}

/*-------------9-------------*/
int ListFile(void) /*输出文件,列出所有学生成绩*/
{ FILE *fp;
int REC=0;/*记录学生人数*/
structstuType stu;
fp=fopen("stu.dat","rb");
if(fp==NULL)
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return 1;
}
else{ printf("\t\t\t学生成绩如下:\n");
printf("\t\t\t学号\t\t姓名\t语文\t数学\t英语\t总评\n");
rewind(fp);
while(fread(stu,sizeof(struct stuType),1,fp))
{ /*每读取一个长度的数据就输出*/
printf("\t\t\t%s",stu.NO);
printf("\t%s",stu.XM);
printf("\t%.1f",stu.CJ[0]);
printf("\t%.1f",stu.CJ[1]);
printf("\t%.1f",stu.CJ[2]);
printf("\t%.1f",stu.CJ[3]);
printf("\n");
REC ;
if(REC ==0) /*每输出20个学生成绩,停一下*/
{ printf("\t\t\t请按任意键继续...\n");
getch();
}
}
}
fclose(fp);/*关闭文件*/
printf("\t\t\t请按任意键继续...");
getch();
}

/*-------------10-------------*/
void Statistics() /*统计及格和优秀人数*/
{ FILE *fp;
intREC=0,pass[4]={0},good[4]={0}; /*REC--记录个数,即人数,pass--及格人数,good--优秀人数*/
floathighest[4]={0},score[4]={0}; /*highest--最高分,score--总分*/
structstuType stu;
fp=fopen("stu.dat","rb");
if(fp==NULL)
{ printf("\t\t\t文件打开失败!\n\t\t\t按任意键返回...");
getch();
return;
}
else { rewind(fp);
while(fread(stu,sizeof(struct stuType),1,fp))
{ REC ;
score[0]=score[0] stu.CJ[0]; /*语文*/
if(stu.CJ[0]=60)pass[0] ;
if(stu.CJ[0]=80)good[0] ;
if(highest[0]<stu.CJ[0])highest[0]=stu.CJ[0];
score[1]=score[1] stu.CJ[1]; /*数学*/
if(stu.CJ[1]=60)pass[1] ;
if(stu.CJ[1]=80)good[1] ;
if(highest[1]<stu.CJ[1])highest[1]=stu.CJ[1];
score[2]=score[2] stu.CJ[2]; /*英语*/
if(stu.CJ[2]=60)pass[2] ;
if(stu.CJ[2]=80)good[2] ;
if(highest[2]<stu.CJ[2])highest[2]=stu.CJ[2];
score[3]=score[3] stu.CJ[3]; /*总评*/
if(stu.CJ[3]=60)pass[3] ;
if(stu.CJ[3]=80)good[3] ;
if(highest[3]<stu.CJ[3])highest[3]=stu.CJ[3];
}
if(REC==0) /*可以防止记录为0是REC作除数而造成的错误*/
{ printf("\t\t\t未输入学生记录!按任意键返回...");
getch();
return;
}
else{
printf("\t\t\t\t 语文\t 数学\t 英语\t 总评\n"); /*输出统计信息*/
printf("\t\t\t平均分: %.1f\t%.1f\t %.1f\t%.1f\n",score[0]/REC,score[1]/REC,score[2]/REC,score[3]/REC);
printf("\t\t\t最高分: %.1f\t %.1f\t %.1f\t%.1f\n",highest[0],highest[1],highest[2],highest[3]);
printf("\t\t\t优秀人数:%d\t %d\t %d\t %d\n",good[0],good[1],good[2],good[3]);
printf("\t\t\t及格人数:%d\t %d\t %d\t %d\n",pass[0],pass[1],pass[2],pass[3]);
}
}
fclose(fp);
printf("\n\t\t\t请按任意键继续...");
getch();
}

/*-------------11-------------*/
void HelpMessage()
{ clrscr();
printf("\n\n\n\n\n 此系统是应老师所布置的作业编制而成,该系统具有存贮学生数据,按学号、姓名查询,列出学生成绩和统计功能。\n \n 使用方法:系统输入数据后,将在当前目录中建立一个名为stu.dat文件,用于保存输入的数据。学号输入只能用数字输入,并且学号只能是10位。姓名输入符合中国人的姓名,只能用中文,且最长为5个汉字。\n此程序在Turbo C2.0下运行通过\n\n 由于是初学者,水平有限此系统还有许多不够完整和严密性,敬请指正!");
getch();
}

/*-------------12-------------*/
int GetKey(void) /*此函数返回一个按键的数值*/
{ int key;
key=bioskey(0); /*bioskey为调用BIOS键盘接口*/
if(key<<8)/*位移*/
{
key=key0x00ff;
}
return key; /*返回按键*/
}

/*-------------13-------------*/
void main()
{ int key;
struct date d; /*定义时间结构体*/
getdate(d);/*读取系统日期并把它放到结构体d中*/
clrscr();/*清除屏幕*/
printf("\n\n\n\n\n");
printf("\t\t\t****************************\n");/*版本信息*/
printf("\t\t\t 学生成绩管理系统1.0 \n");
printf("\t\t\t****************************\n");
printf("\t\t\t 制作群: 404 1工作室 \n");
printf("\t\t\t 指导老师:--- \n");
printf("\t\t\t 制作时间:2004年5月 \n");
printf("\t\t\t****************************\n");
printf("\t\t\t请按任意键继续...");
/*while(!kbhit());*/
getch();/*从键盘读取一个字符,但不显示于屏幕*/
system("cls"); /*调用DOS的清屏函数,TC中可用clrscr代替*/
while(1)/*主菜单*/
{
printf("\n\n\n\n\n");
printf("\t\t\t************************************\n");
printf("\t\t\t**\tF1 --帮助  **\n");
printf("\t\t\t**\tF2 --输入数据并存入文件  **\n");
printf("\t\t\t**\tF3 --根据学号查询成绩  **\n");
printf("\t\t\t**\tF4 --根据姓名查询成绩  **\n");
printf("\t\t\t**\tF5 --输出文件内容 **\n");
printf("\t\t\t**\tF6 --统计及格和优秀人数  **\n");
printf("\t\t\t**\tESC--退出系统  **\n");
printf("\t\t\t************************************\n");
printf("\n\t\t\t请输入选项\t\t%d年%d月%d日\n\n",d.da_year,d.da_mon,d.da_day);/*提示信息,并显示当前系统日期*/
key=GetKey(); /*调用自定义函数,读取一个键*/
switch(key)
{
case F1:HelpMessage(); break;
case F2:CreatFile(); break;
case F3:Search_Xuehao(); break;
case F4:Search_Xingming();break;
case F5:ListFile(); break;
case F6:Statistics(); break;
caseESC:exit(1);break;
/*default:puts("\t\t\t输入错误选项!");
printf("\t\t\t按任意键返回...");
getch();*/
}
clrscr(); /*每执行完一项功能后,自动清屏*/
}

}

智慧校园一体化解决方案选什么?

假如你在很多厂商之间感觉很难选择的话,我推荐锐捷的智慧校园建设方案。因为锐捷智慧校园一体化解决方案非常齐全,涵盖了学校向智慧化迈步的方方面面。
锐捷智慧校园解决方案包括安全大数据分析平台、网站安全解决方案、云课堂办公解决方案、云课堂多媒体教室解决方案、智慧校园服务平台、无线智能服务(WIS)极简运维解决方案以及无线网络覆盖解决方案。
特点很明显,锐捷智慧校园一体化解决方案非常全面,几乎涵盖了学校教学、安全、网络等方方面面。 关于学生综合管理系统接口设计和学生成绩管理系统接口设计的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 学生综合管理系统接口设计的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于学生成绩管理系统接口设计、学生综合管理系统接口设计的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:到底如何设置Java线程池的大小的方法示例
下一篇:JAVA字符串类型switch的底层原理详析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~