学生学籍信息管理系统设计书.docx
《学生学籍信息管理系统设计书.docx》由会员分享,可在线阅读,更多相关《学生学籍信息管理系统设计书.docx(17页珍藏版)》请在冰豆网上搜索。
学生学籍信息管理系统设计书
学生学籍信息管理系统设计书
一、系统的软硬件环境
1、硬件环境:
一般来说586电脑就可以提供并支持系统的使用及运行,此外,若想打印或成稿还需要使用打印机;U盘、软盘也是程序的必要载体。
2、软件环境:
Windows环境下安装TurboC2.0语言系统,安装完毕后即可使用,而且要用到UCDOS。
二、系统总体框架图
学生学籍信息管理系统是实现对学生学籍信息如学号、、性别、年龄、家庭地址、联系等实现输入、查询有关信息、修改有关信息、输出、添加新生信息等功能的系统,系统框架如图1所示。
学生学籍信息管理系统
输入模块
输出模块
查找模块
修改模块
追加模块
显示模块
按学号查找
按姓名查找
按姓名修改
按学号修改
排序模块
图1学生学籍信息管理系统框架图
三、程序功能简介
(1)输入模块(creat函数)
该模块是实现对学生、性别、学号、成绩、年龄等的录入并保存到文件“stu”中。
(2)修改模块(modify函数)
该模块实现按学号或按对学生所有信息的修改。
修改成功显示已修改后的文件数据。
(3)查找模块(search函数)
实现按学号或查询每个学生的学号、、性别、年龄、地址等信息。
查到后显示所查学生的全部信息,若不存在则显示未找到。
(4)输出模块(output函数)
该模块实现对文件“stu”学生、性别、学号、地址、年龄等的显示。
(5)添加模块(ADD函数)
(6)显示模块(show函数)
该模块实现制作人员相关信息的显示。
(7)退出运行界面(quit)
退出整个函数运行界面。
四、结束语
通过本次课程设计,我学到很多东西,而最大的收获就是:
真正从实践的角度初步体会到了C语言在实际生活中的作用,也深刻体会到了它带来的方便快捷。
美中不足的就是,本程序还处于初级阶段的学生信息管理功能中,只实现了对学生的录入、修改、查询、输出等简单功能,不一定在实际中有大的用途。
在此次程序设计中,出现了各种各样的问题,在完成各自模块建立起程序后运行后,出现了在按照正确形式输入后,不能正确输出结果,而且在运行时也没有提示有错误,无奈之下去找老师解决问题,老师告诉我很有可能是输入函数的问题,经过仔细的检查和调试我最终用把变量定义为外部变量的方式解决了问题。
查询模块是我编写是花费时间最多的一部分,并且在其中加入了子菜单,想实现分别用学号和查找,所以花费了很多精力,也修改了很多次,但在努力下最终成功了;然后仿照查找模块在修改模块中也加入了子菜单,丰富了程序的函数。
程序编排中可能有繁琐之处有待进一步简化,本次设计的困难是在编辑程序时发现自己对C语言的了解还处于初级阶段,不能完美的设计出能够在实际生活中应用的程序,如果有机会我会继续学习,做出更好的程序。
五、参考文献
[1]谭浩强.C程序设计.清华大学.2005年7月
[2]志华.Delphi6.0编程实例.中国水利水电.2002年6月
[3]DavidM.Collopy、罗铁庚.C语言教程:
模块化程序设计.清华大学.2004年9月
[4]邓文新、宏烈.C语言程序设计方法.工业大学.2004年2月
[5]田淑清.全国计算机等级考试二级教程.高等教育.1998年7月
附录:
程序清单
#include
#include
#include
#include
#defineN100
typedefstructstudent
{
charnum[15];
charname[10];
intage;
charsex[5];
charaddr[50];
chartel[15];
}STUDENT;
structstudentstu[N];
intw=0,a,j=0;
voidprint_list()
{
printf("\n学号年龄性别地址\n");
}
voidprint_message(inti,structstudentstu[N])
{
printf("\n%-12s",stu[i].num);
printf("%-7s",stu[i].name);
printf("%-7d",stu[i].age);
printf("%-8s",stu[i].sex);
printf("%-26s",stu[i].addr);
printf("%s",stu[i].tel);
}
intmain()
{
charc;
voidcreat(structstudentstu[N]);
voidmodify(structstudentstu[N]);
voidsearch(structstudentstu[N]);
voidoutput(structstudentstu[N]);
voidadd(structstudentstu[N]);
voidarr(structstudentstu[N]);
voidshow();
do
{
printf("\n\n==============================================\n");
printf("欢迎进入学生学籍信息管理系统!
\n");
printf("==============================================\n");
printf("1--输入记录\n");
printf("2--添加\n");
printf("3--输出记录\n");
printf("4--查找记录\n");
printf("5--修改记录\n");
printf("6--学号排列\n");
printf("7--制作人员\n");
printf("8--退出程序\n");
printf("==============================================\n");
printf("请选择功能种类<1/2/3/4/5/6/7/8>并按回车键执行命令\n");
scanf("%c",&c);
getchar();
switch(c)
{
case'1':
creat(stu);break;
case'2':
add(stu);break;
case'3':
output(stu);break;
case'4':
search(stu);break;
case'5':
modify(stu);break;
case'6':
arr(stu);break;
case'7':
show(stu);break;
case'8':
return;
default:
printf("ERROR!
请正确输入!
\n");continue;
}
}while(w==0);
}
voidcreat(structstudentstu[N])/*输入信息*/
{
FILE*fp;
inti,j;
charch,t[5];
if((fp=fopen("MESSAGE.dat","wb"))==NULL)
{
printf("无信息");
exit(0);
}
i=0;
printf("\t\t=========<<输入信息>>===========\n");
do
{
printf("\t\t输入学号:
");gets(stu[i].num);
printf("\t\t:
");gets(stu[i].name);
printf("\t\t年龄:
");gets(t);stu[i].age=atoi(t);
printf("\t\t性别:
");gets(stu[i].sex);
printf("\t\t住址:
");gets(stu[i].addr);
printf("\t\t:
");gets(stu[i].tel);
printf("\t\t是否继续?
");
scanf("%c",&ch);
getchar();
i++;
}while(ch=='y'||ch=='Y');
for(j=0;j<=i-1;j++)
{
fwrite(&stu[j],sizeof(structstudent),1,fp);
}
fclose(fp);
}
voidmodify(structstudentstu[N])/*修改信息*/
{
FILE*fp;
charname[10],num[15],t[5];
inti,j,m=0,sum;
charch;
if((fp=fopen("MESSAGE.dat","rb"))==NULL)
printf("无信息");
else
{
print_list();
for(i=0;fread(&stu[i],sizeof(structstudent),1,fp);i++)
{
print_message(i,stu);
sum=i;
}
fclose(fp);
}
printf("\t\t\n======================<<修改信息>>======================\n");
do
{
m=0;
printf("\n\t\t1.按学号修改2.按修改");
printf("\n\n\t\t********请选择<1或2>:
");
scanf("%c",&ch);
getchar();
if(ch=='1')
{
printf("\t\t输入要修改的学号:
");gets(num);
for(i=0;i<=sum;i++)
if(strcmp(stu[i].num,num)==0)
{
print_list();
print_message(i,stu);
printf("\n");
printf("\t\t输入新的学号:
");gets(stu[i].num);
printf("\t\t:
");gets(stu[i].name);
printf("\t\t年龄:
");gets(t);stu[i].age=atoi(t);
printf("\t\t性别:
");gets(stu[i].sex);
printf("\t\t住址:
");gets(stu[i].addr);
printf("\t\t:
");gets(stu[i].tel);
printf("\t\t=====================修改后信息=====================\n");
print_list();
print_message(i,stu);
printf("\n");
m=1;
}
}
if(ch=='2')
{
printf("\t\t输入要修改的:
");
gets(name);
for(i=0;i<=sum;i++)
if(strcmp(stu[i].name,name)==0)
{
print_list();
print_message(i,stu);
printf("\n");
printf("\t\t请输入学号:
");gets(stu[i].num);
printf("\t\t:
");gets(stu[i].name);
printf("\t\t年龄:
");gets(t);stu[i].age=atoi(t);
printf("\t\t性别:
");gets(stu[i].sex);
printf("\t\t住址:
");gets(stu[i].addr);
printf("\t\t:
");gets(stu[i].tel);
printf("\t\t======================修改后信息======================\n");
print_list();
print_message(i,stu);
printf("\n");
m=1;
}
}
if(m==0)
printf("\n\t\t无该学生信息");
printf("\n\t\t是否继续(YorN)?
");
scanf("%c",&ch);
getchar();
}while(ch=='y'||ch=='Y');
if((fp=fopen("MESSAGE.dat","wb"))==NULL)
printf("无信息");
else
{
for(j=0;j<=sum;j++)
fwrite(&stu[j],sizeof(structstudent),1,fp);
}
fclose(fp);
}
voidsearch(structstudentstu[N])/*查找信息=*/
{
FILE*fp;
charch,k;
charxm[10],xh[15];
inti,j=0,sum;
intm;
if((fp=fopen("MESSAGE.dat","rb"))==NULL)
printf("无信息");
else
{
print_list();
for(i=0;fread(&stu[i],sizeof(structstudent),1,fp);i++)
{
print_message(i,stu);
sum=i;
}
fclose(fp);
}
do
{
m=0;
printf("\t\t\n===========<<查找信息>>===========\n");
printf("\n\t\t1.按学号查找2.按查找");
printf("\n\n\t\t********请选择<1or2>:
");
scanf("%c",&k);
getchar();
printf("\t\t===========<<查找信息>>===========\n");
if(k=='1')
{
printf("\t\t输入学号:
");gets(xh);
for(i=0;i<=sum;i++)
if(strcmp(stu[i].num,xh)==0)
{
print_list();
print_message(i,stu);
printf("\n");
m=1;
}
}
if(k=='2')
{
printf("\t\t输入:
");gets(xm);
for(i=0;i<=sum;i++)
if(strcmp(stu[i].name,xm)==0)
{
print_list();
print_message(i,stu);
printf("\n");
m=1;
}
}
if(m==0)
printf("\n\t\t无该学生信息");
printf("\n\t\t是否继续(Y/N)?
");
scanf("%c",&ch);
getchar();
}while(ch=='Y'||ch=='y');
}
voidoutput(structstudentstu[N])/*输出信息*/
{
FILE*fp;
inti;
if((fp=fopen("MESSAGE.dat","rb"))==NULL)
printf("无信息");
printf("\t\t===========输出信息===========");
print_list();
for(i=0;fread(&stu[i],sizeof(structstudent),1,fp);i++)
print_message(i,stu);
fclose(fp);
printf("\n按回车返回主菜单");
getchar();
}
voidadd(structstudentstu[N])/*添加信息*/
{
FILE*fp;
inti=0,j;
charch,t[5];
if((fp=fopen("MESSAGE.dat","ab"))==NULL)
printf("无信息");
printf("\t\t=========<<添加信息>>===========\n");
do
{
printf("\t\t输入学号:
");gets(stu[i].num);
printf("\t\t:
");gets(stu[i].name);
printf("\t\t年龄:
");gets(t);stu[i].age=atoi(t);
printf("\t\t性别:
");gets(stu[i].sex);
printf("\t\t住址:
");gets(stu[i].addr);
printf("\t\t:
");gets(stu[i].tel);
printf("\t\t是否继续(Y/N)?
");
ch=getchar();
getchar();
i++;
}while(ch=='y'||ch=='Y');
if((fp=fopen("MESSAGE.dat","ab"))==NULL)
printf("无信息");
else
for(j=0;j<=i-1;j++)
fwrite(&stu[j],sizeof(structstudent),1,fp);
fclose(fp);
}
voidarr(structstudentstu[N])/*信息排列(按学号)*/
{
FILE*fp;
inti,j,sum;
STUDENTt;
if((fp=fopen("MESSAGE.dat","rb"))==NULL)
printf("无信息");
else
{
for(sum=0;fread(&stu[sum],sizeof(structstudent),1,fp);sum++);
fclose(fp);
for(i=0;i{
for(j=i+1;j{
if(atoi(stu[i].num)>atoi(stu[j].num))
{
t=stu[i];
stu[i]=stu[j];
stu[j]=t;
}
}
}
}
print_list();
if((fp=fopen("MESSAGE.dat","wb"))==NULL)
printf("无信息");
else
for(j=0;j{
fwrite(&stu[j],sizeof(structstudent),1,fp);
print_message(j,stu);
}
fclose(fp);
}
voidshow()/*显示制作人员信息*/
{
printf("C语言程序设计\n\n\n\n");
printf("==================学生学籍信息系统====================\n");
printf("指导教师:
**\n");
printf("学生:
**\n");
printf("**学院\n");
printf("**班\n========================================================\n");
printf("<<==按回车键返回==>>\n");
getchar();
}