学生信息管理系统设计.docx

上传人:b****2 文档编号:24115333 上传时间:2023-05-24 格式:DOCX 页数:31 大小:321.52KB
下载 相关 举报
学生信息管理系统设计.docx_第1页
第1页 / 共31页
学生信息管理系统设计.docx_第2页
第2页 / 共31页
学生信息管理系统设计.docx_第3页
第3页 / 共31页
学生信息管理系统设计.docx_第4页
第4页 / 共31页
学生信息管理系统设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

学生信息管理系统设计.docx

《学生信息管理系统设计.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统设计.docx(31页珍藏版)》请在冰豆网上搜索。

学生信息管理系统设计.docx

学生信息管理系统设计

中南民族大学管理学院

学生课程设计报告

课程名称:

C程序设计语言

选题名称:

学生信息管理系统设计

年 级:

  2010    

专 业:

信息管理与信息系统

学  号:

   

姓  名:

    

指导教师:

   

完成地点:

管理学院综合实验室

完成日期:

2011年12月

2011学年至2012学年度第1学期

Ø题目描述:

学生信息管理系统设计

●基本要求:

试设计一学生信息管理系统,使之能提供以下功能:

(1)系统以菜单方式工作;

(2)学生信息录入功能(学生信息用文件保存)---输入;

(3)学生信息浏览功能---输出;

(4)查询、排序功能---算法;

a)按学号查询;

b)按姓名查询;

(5)学生信息的删除与修改(可选项)。

●创新要求:

在基本要求达到后,可进行创新设计。

●信息描述:

学生信息包括:

学号、姓名、年龄、性别、出生年月、地址、电话、E-mail等。

Ø问题分析:

(1)本问题是设计学生信息管理系统,主要用到结构体类型和文件;

(2)设计的第一个要求为“系统以菜单方式工作”这就要求程序中要使用大量的循环结

构,已完成设计要求。

(3)学生信息的录入要求用文件保存,这里就会涉及C语言中文件的使用。

(4)系统的其它功能每一项都可以写一函数,通过函数的调用实现设计要求。

Ø系统设计:

(1)程序总体结构:

程序有:

主函数voidmain()

打开文件函数intopen()

保存函数voidsave(intn)

输入学生信息函数voidinput()

输出学生信息函数voidoutout()

查询总函数voidsearch()

按学号查询函数voidsearch_num()

按姓名查询函数voidsearch_name()

排序总函数voidorder()

按学号排序函数voidorder_num()

按姓名排序函数voidorder_name()

按出生年月排序函数voidorder_brith()

修改函数voidmodity()

删除函数voiddel()组成。

总结构图:

(2)重要数据的数据结构设计:

a)结构体类型structstudent中定义的所有类型为字符数组,这样做是为了操作方

便,因函数中不涉及数据计算,全部数据定义为字符型可防止编写程序时出错。

b)在打开文件函数voidopenn()中,函数会返回一数值,该数值为保存在文件中

学生信息的个数,返回该值是为了调用该函数的函数使用学生数这一数值,避免了定义全局变量,降低了出错的可能,是程序更加清晰。

c)在保存函数voidsave(intn)中,函数要求传入一数值,该数值为学生信息的

个数,要求传入该数值是因为在执行删除等函数后,学生信息的个数会发生改变,传入一数值告诉保存函数要保存学生信息个数,使程序有效地执行。

d)在输入函数voidinput()函数中,函数没有调用打开文件函数voidopenn()和保存函数voidsave(intn),因为它输入学生信息包括新建文件的情况,即第一次输入学生信息,因打开文件函数和保存函数都是针对已存在文件的发挥作用,因此输入函数编写了自己的打开文件和保存文件函数。

e)在其它的函数中,函数都是既无返回值又无传入值的类型,这样避免了传值时造成的错误与不便,使程序清晰、简单。

f)其它数据结构的设计都比较基本,很容易明白,在这里就不都写了。

(3)函数设计:

#include

#include

#include

structstudent/*定义结构体类型数据类型全为字符型*/

{

charnum[9],name[20];

charage[3];

charsex[2];

charbrith[9],add[16],phone[12],Email[18];

};

typedefstructstudentSTU;

STUstu[100];

 

voidinput();/*声明输入函数*/

voidoutput();/*声明输出函数*/

voidsearch();/*声明查询函数*/

voidsearch_num();/*声明按学号查询函数*/

voidsearch_name();/*声明按姓名查询函数*/

voidorder();/*声明排序函数*/

voidorder_num();/*声明按学号查询函数*/

voidorder_name();/*声明按姓名查询函数*/

voidorder_brith();/*声明按出生日期查询函数*/

voidmodity();/*声明按出生日期查询函数*/

voiddel();/*声明删除函数*/

voidsave(intn);/*声明保存函数*/

intopenn();/*声明打开文件函数*/

 

voidmain()/*主函数*/

{

chara;/*定义字符数据用于选择选项*/

intflag=0;/*定义整型数据用于结束while循环*/

while

(1)

{

printf("\n(AInputstudentsinformation.\n");

printf("(BOutputstudentinformation.\n");

printf("(CSearchstudentsinformation.\n");

printf("(DOrderstudentsinformation.\n");

printf("(EModitystudentsinformation.\n");

printf("(FDeletestudentsinformation.\n");/*输出选项列表*/

printf("(GExitprogram.\n");

printf("Inputyouchoice:

");

scanf("%c",&a);

fflush(stdin);

switch(a)/*调用函数完成各种功能*/

{

case'A':

input();break;

case'B':

output();break;

case'C':

search();break;

case'D':

order();break;

case'E':

modity();break;

case'F':

del();break;

case'G':

flag=1;break;

default:

printf("Error!

\n");break;

}

if(flag)break;

}

}

intopenn()/*定义打开文件函数,并返回文件中学生个数*/

{

inti;

FILE*fp;

if((fp=fopen("stud.txt","r"))==NULL)

{

printf("Cannotopentisfile.\n");

exit(0);

}

for(i=0;!

feof(fp);i++)

fread(&stu[i],sizeof(STU),1,fp);

fclose(fp);

return(i-1);

}

 

voidsave(intn)/*定义保存函数*/

{

FILE*fp;

inti;

if((fp=fopen("stud.txt","w"))==NULL)

{

printf("Savefunctioncannotopenthisfile!

\n");

return;

}

for(i=0;i

if(fwrite(&stu[i],sizeof(STU),1,fp)!

=1)

printf("Fileinputerror!

\n");

fclose(fp);

}

voidinput()/*定义输入函数*/

{

inti,m;

FILE*fp;

printf("\nHowmanystudentinformationyouwenttoputin:

");

scanf("%d",&m);

fflush(stdin);

for(i=0;i

{

printf("Inputthe%dstudentinformation.\n",i+1);

printf("Inputthestudent'snum:

\n");

gets(stu[i].num);

fflush(stdin);

printf("Inputthestudent'sname:

\n");

gets(stu[i].name);

fflush(stdin);

printf("Inputthestudent'sage:

\n");

gets(stu[i].age);

fflush(stdin);

printf("Inputthestudent'ssex:

(MorF)\n");

gets(stu[i].sex);

fflush(stdin);

printf("Inputthestudent'sbrithday:

\n");

gets(stu[i].brith);

fflush(stdin);

printf("Inputthestudent'saddress:

\n");

gets(stu[i].add);

fflush(stdin);

printf("Inputthestudent'sphone:

\n");

gets(stu[i].phone);

fflush(stdin);

printf("Inputthestudent'sEmail:

\n");

gets(stu[i].Email);

fflush(stdin);

}

if((fp=fopen("stud.txt","a"))==NULL)/*打开或新建文件*/

{

printf("Cannotopenthefile!

\n");

return;

}

for(i=0;i

if(fwrite(&stu[i],sizeof(STU),1,fp)!

=1)

printf("Fileinputerror!

\n");

fclose(fp);

printf("Savestudentsinformationsuccess!

\n");

printf("Pressanykeytocomeback!

\n");

getch();

}

voidoutput()/*定义输出函数*/

{

inti,n;

n=openn();/*调用打开文件函数并将学生信息个数赋给n*/

printf("\n%-9s%-12s%-4s%-4s%-9s%-10s%-12s%-18s\n","Nnmber","Name","Age",

"Sex","Brithday","address","Phone","E-mail");

for(i=0;i

{

printf("%-9s%-12s%-4s%-4s%-9s%-10s%-12s%-18s\n",stu[i].num,stu[i].name,

stu[i].age,stu[i].sex,stu[i].brith,stu[i].add,stu[i].phone,stu[i].Email);

}

printf("\nPressanykeytocomeback!

\n");

getch();

}

 

voidsearch()/*定义查询主函数类型与主函数相同*/

{

chara;

intflag=0;

while

(1)

{

printf("\n(ASearchbynumber.\n");

printf("(BSearchbyname.\n");

printf("(CReturnmainmenu.\n");

printf("Inputyouchoice:

");

scanf("%c",&a);

fflush(stdin);

switch(a)

{

case'A':

search_num();break;

case'B':

search_name();break;

case'C':

flag=1;break;

default:

printf("Error!

\n");break;

}

if(flag)break;

}

}

voidsearch_num()/*定义按学号查询函数*/

{

intn,i,flag=0;

charnum[20];

n=openn();

printf("\nThestudent'snumberyouwanttosearch:

\n");

scanf("%s",num);

printf("\n%-9s%-12s%-4s%-4s%-9s%-10s%-12s%-18s\n","Nnmber","Name","Age",

"Sex","Brithday","address","Phone","E-mail");

for(i=0;i

if(strcmp(stu[i].num,num)==0)

{

printf("%-9s%-12s%-4s%-4s%-9s%-10s%-12s%-18s\n",stu[i].num,stu[i].name,

stu[i].age,stu[i].sex,stu[i].brith,stu[i].add,stu[i].phone,stu[i].Email);

flag=1;

}

if(flag==0)

printf("Can'tfindthestudent!

\n");

printf("\nPressanykeytocomeback!

\n");

getch();

fflush(stdin);

}

 

voidsearch_name()/*定义按姓名查询函数*/

{

intn,i,flag=0;

charname[20];

n=openn();

printf("\nThestudent'snameyouwanttosearch:

\n");

scanf("%s",name);

printf("\n%-9s%-12s%-4s%-4s%-9s%-10s%-12s%-18s\n","Nnmber","Name","Age",

"Sex","Brithday","address","Phone","E-mail");

for(i=0;i

if(strcmp(stu[i].name,name)==0)

{

printf("%-9s%-12s%-4s%-4s%-9s%-10s%-12s%-18s\n",stu[i].num,stu[i].name,

stu[i].age,stu[i].sex,stu[i].brith,stu[i].add,stu[i].phone,stu[i].Email);

flag=1;

}

if(flag==0);

printf("Can'tfindthestudent!

\n");

printf("\nPressanykeytocomeback!

\n");

getch();

fflush(stdin);

}

 

voidorder()/*定义排序主函数*/

{

chara;

intflag=0;

while

(1)

{

printf("\n(AOrderbynumber.\n");

printf("(BOrderbyname.\n");

printf("(COrderbybrithday.\n");

printf("(DReturnmainmenu.\n");

printf("Inputyouchoice:

");

scanf("%c",&a);

fflush(stdin);

switch(a)

{

case'A':

order_num();break;

case'B':

order_name();break;

case'C':

order_brith();break;

case'D':

flag=1;break;

default:

printf("Error!

\n");break;

}

if(flag)break;

}

}

 

voidorder_num()/*定义按学号排序函数*/

{

inti,j,n;

chara;

STUtemp;

n=openn();

printf("\n%-9s%-12s%-4s%-4s%-9s%-10s%-12s%-18s\n","Nnmber","Name","Age",

"Sex","Brithday","address","Phone","E-mail");

for(i=0;i

{

for(j=i+1;j

if(strcmp(stu[i].num,stu[j].num)>0)

{

temp=stu[i];

stu[i]=stu[j];

stu[j]=temp;

}

}

for(i=0;i

printf("%-9s%-12s%-4s%-4s%-9s%-10s%-12s%-18s\n",stu[i].num,stu[i].name,

stu[i].age,stu[i].sex,stu[i].brith,stu[i].add,stu[i].phone,stu[i].Email);

printf("\nPressanykeytocoutine.\n");

getch();

printf("DOyouwanttosave?

\n");

printf("Y)SaveN)Notsave.\n");

printf("Yourchoice:

");

scanf("%c",&a);

fflush(stdin);

if(a=='Y')

{

save(n);

printf("Savesuccess!

\n");

}

elseprintf("Exit!

\n");

printf("\nPressanyketocomeback!

\n");

getch();

}

 

voidorder_name()/*定义按姓名排序函数*/

{

inti,j,n;

chara;

STUtemp;

n=openn();

printf("\n%-9s%-12s%-4s%-4s%-9s%-10s%-12s%-18s\n","Nnmber","Name","Age",

"Sex","Brithday","address","Phone","E-mail");

for(i=0;i

{

for(j=i+1;j

if(strcmp(stu[i].name,stu[j].name)>0)

{

temp=stu[i];

stu[i]=stu[j];

stu[j]=temp;

}

}

for(i=0;i

printf("%-9s%-12s%-4s%-4s%-9s%-10s%-12s%-18s\n",stu[i].num,stu[i].name,

stu[i].age,stu[i].sex,stu[i].brith,stu[i].add,stu[i].phone,stu[i].Email);

printf("\nPressanykeytocoutine.\n");

getch();

printf("DOyouwanttosave?

\n");

printf("Y)SaveN)Notsave.\n");

printf("Yourchoice:

");

scanf("%c",&a);

fflush(stdin);

if(a=='Y')

{

save(n);

printf("Savesuccess!

\n");

}

elseprintf("Exit!

\n");

printf("\nPressanyketocomeback!

\n");

getch();

}

voidorder_brith()/*定义按出生年月排序函数*/

{

inti,j,n;

chara;

STUtemp;

n=openn();printf("\n%-9s%-12s%-4s%-4s%-9s%-10s%-12s%-18s\n","Nnmber","Name",

"Age","Sex","Brithday","address","Phone","E-mail");

for(i=0;i

{

for(j=i+1;j

if(strcmp(stu[i].brith,stu[j].brith)>0)

{

temp=stu[i];

stu[i]=stu[j];

stu[j]=temp;

}

}

for(i=0;i

printf("%-9s%-12s%-4s%-4s%-9s%-10s%-12s%-18s\n",stu[i].num,stu[i].name,

stu[i].age,stu[i].sex,stu[i].brith,stu[i].add,stu[i].phone,stu[i].Email);

printf("\nPressanykeytocoutine.\n");

getch();

printf("DOyouwanttosave?

\n");

printf("Y)SaveN)Notsave.\n");

printf("Yourchoice:

");

scanf("%c",&a);

fflush(stdin);

if(a=='Y')

{

save(n);

printf("Savesuccess!

\n");

}

elseprintf("Exit!

\n");

printf("\nPressanyketocomeback!

\n");

getch();

}

voidmodity()/*定义修改函数*/

{

inti,n,m,flag,flag1=0;

cha

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 药学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1