用C语言编写学生信息管理系统.docx
《用C语言编写学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《用C语言编写学生信息管理系统.docx(21页珍藏版)》请在冰点文库上搜索。
用C语言编写学生信息管理系统
一、设计目的
通过对高级语言程序设计课程设计的学习,来验证自身的学习效果,同时希望利用所学的基本知识和技能,进行简单的C语言程序设计。
希望通过项目实践,熟悉巩固所学知识,以使自己熟练掌握高级语言程序设计,为日后学习计算机科学技术的专业知识能有进一步深入了解,奠定基础。
二、设计内容
1、问题描述:
设计一个学生信息管理系统设计。
学生信息包括:
学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
2、功能要求:
1、系统以菜单方式工作
2、学生信息录入功能(学生信息用文件保存)--输入
3、学生信息浏览功能--输出
4、学生信息查询功能--算法
按学号查询
按姓名查询
5、学生信息的删除与修改(可选项)
三、详细设计
1、菜单:
voidmenu()
{
}
2、建立信息:
voidreadfile()
{
}
3、查找:
voidseek()
{
}
4、修改信息:
voidmodify()
{
}
5、插入函数:
voidinsert()
{
}
6、删除信息:
voiddel()
{
}
7、浏览信息:
voiddisplay()
{
}
1、保存:
voidsave()
{
}
四、调试与测试
1、系统功能菜单
2、选择菜单“0”,进入系统帮助及说明功能
1、选择菜单“4”,添加学生信息
(1)输入增加人数
(2)依次输入学生学号,姓名,年龄,性别,出生年月,地址,电话,E-mail
(3)录入完毕,弹出菜单
1、选择菜单“3”,修改学生信息:
输入被修改者学号
(1)选择子菜单“1",修改姓名
(2)选择子菜单“2”,修改年龄
(3)选择子菜单“3”,修改性别
(4)选择子菜单“4”,修改出生年月
(5)选择子菜单“5”,修改地址
(6)选择子菜单“6”,修改电话
(7)选择子菜单“7”,修改E-mail
2、选择菜单“2”,查询学生信息
(1)选择子菜单“1”,按学号查询
(2)选择子菜单“2”,按姓名查询
(3)选择子菜单“3”,退出子菜单,弹出主菜单
6、选择菜单“6”,显示当前信息
7、选择菜单“5”,按学号删除信息
(1)输入要删除的学生学号
(2)再次输入“6”,确认是否删除该学生信息
五、源程序清单
源程序代码如下
#include
#include
#include
#defineBUFLEN100
#defineLEN15
#defineN100
structrecord
{
charcode[LEN+1];
charname[LEN+1];
intage;
charsex[3];
chartime[LEN+1];
charadd[30];
chartel[LEN+1];
charmail[30];
}stu[N];
intk=1,n,m;
voidreadfile();
voidseek();
voidmodify();
voidinsert();
voiddel();
voiddisplay();
voidsave();
voidmenu();
intmain()
{
while(k)
menu();
system("pause");
return0;
}
voidhelp()
{
printf("\n0.欢迎使用系统帮助!
\n");
printf("\n1.进入系统后,先刷新学生信息,再查询;\n");
printf("\n2.按照菜单提示键入数字代号;\n");
printf("\n3.增加学生信息后,切记保存按;\n");
printf("\n4.谢谢您的使用!
\n");
}
voidreadfile()
{
char*p="student.txt";
FILE*fp;
inti=0;
if((fp=fopen("student.txt","r"))==NULL)
{
printf("Openfile%serror!
Strikeanykeytoexit!
",p);
system("pause");
exit(0);
}
while(fscanf(fp,"%s%s%d%s%s%s%s%s",stu[i].code,stu[i].name,&stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail)==8)
{
i++;
i=i;
}
fclose(fp);
n=i;
printf("录入完毕!
\n");
}
voidseek()
{
inti,item,flag;
chars1[21];
printf("------------------\n");
printf("-----1.按学号查询-----\n");
printf("-----2.按姓名查询-----\n");
printf("-----3.退出本菜单-----\n");
printf("------------------\n");
while
(1)
{
printf("请选择子菜单编号:
");
scanf("%d",&item);
flag=0;
switch(item)
{
case1:
printf("请输入要查询的学生的学号:
\n");
scanf("%s",s1);
for(i=0;iif(strcmp(stu[i].code,s1)==0)
{
flag=1;
printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");
printf("--------------------------------------------------------------------\n");
printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
if(flag==0)
printf("该学号不存在!
\n");break;
case2:
printf("请输入要查询的学生的姓名:
\n");
scanf("%s",s1);
for(i=0;iif(strcmp(stu[i].name,s1)==0)
{
flag=1;
printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");
printf("--------------------------------------------------------------------\n");
printf("%6s%7s%6d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
if(flag==0)
printf("该姓名不存在!
\n");break;
case3:
return;
default:
printf("请在-3之间选择\n");
}
}
}
voidmodify()
{
inti,item,num;
charsex1[3],s1[LEN+1],s2[LEN+1];
printf("请输入要要修改的学生的学号:
\n");
scanf("%s",s1);
for(i=0;iif(strcmp(stu[i].code,s1)==0)
num=i;
printf("------------------\n");
printf("1.修改姓名\n");
printf("2.修改年龄\n");
printf("3.修改性别\n");
printf("4.修改出生年月\n");
printf("5.修改地址\n");
printf("6.修改电话号码\n");
printf("7.修改E-mail地址\n");
printf("8.退出本菜单\n");
printf("------------------\n");
while
(1)
{
printf("请选择子菜单编号:
");
scanf("%d",&item);
switch(item)
{
case1:
printf("请输入新的姓名:
\n");
scanf("%s",s2);
strcpy(stu[num].name,s2);break;
case2:
printf("请输入新的年龄:
\n");
scanf("%d",&stu[num].age);break;
case3:
printf("请输入新的性别:
\n");
scanf("%s",sex1);
strcpy(stu[num].sex,sex1);break;
case4:
printf("请输入新的出生年月:
\n");
scanf("%s",s2);
strcpy(stu[num].time,s2);break;
case5:
printf("请输入新的地址:
\n");
scanf("%s",s2);
strcpy(stu[num].add,s2);break;
case6:
printf("请输入新的电话号码:
\n");
scanf("%s",s2);
strcpy(stu[num].tel,s2);break;
case7:
printf("请输入新的E-mail地址:
\n");
scanf("%s",s2);
strcpy(stu[num].mail,s2);break;
case8:
return;
default:
printf("请在-8之间选择\n");
}
}
}
voidsort()
{
inti,j,*p,*q,s;
chartemp[10];
for(i=0;i{
for(j=n-1;j>i;j--)
if(strcmp(stu[j-1].code,stu[j].code)>0)
{
strcpy(temp,stu[j-1].code);
strcpy(stu[j-1].code,stu[j].code);
strcpy(stu[j].code,temp);
strcpy(temp,stu[j-1].name);
strcpy(stu[j-1].name,stu[j].name);
strcpy(stu[j].name,temp);
strcpy(temp,stu[j-1].sex);
strcpy(stu[j-1].sex,stu[j].sex);
strcpy(stu[j].sex,temp);
strcpy(temp,stu[j-1].time);
strcpy(stu[j-1].time,stu[j].time);
strcpy(stu[j].time,temp);
strcpy(temp,stu[j-1].add);
strcpy(stu[j-1].add,stu[j].add);
strcpy(stu[j].add,temp);
strcpy(temp,stu[j-1].tel);
strcpy(stu[j-1].tel,stu[j].tel);
strcpy(stu[j].tel,temp);
strcpy(temp,stu[j-1].mail);
strcpy(stu[j-1].mail,stu[j].mail);
strcpy(stu[j].mail,temp);
p=&stu[j-1].age;
q=&stu[j].age;
s=*q;
*q=*p;
*p=s;
}
}
}
voidinsert()
{
inti=n,j,flag;
printf("请输入待增加的学生数:
\n");
scanf("%d",&m);
do
{
flag=1;
while(flag)
{
flag=0;
printf("请输入第%d个学生的学号:
\n",i+1);
scanf("%s",stu[i].code);
for(j=0;j
if(strcmp(stu[i].code,stu[j].code)==0)
{
printf("已有该学号,请检查后重新录入!
\n");
flag=1;
break;
}
}
printf("请输入第%d个学生的姓名:
\n",i+1);
scanf("%s",stu[i].name);
printf("请输入第%d个学生的年龄:
\n",i+1);
scanf("%d",&stu[i].age);
printf("请输入第%d个学生的性别:
\n",i+1);
scanf("%s",stu[i].sex);
printf("请输入第%d个学生的出生年月:
(格式:
年.月)\n",i+1);
scanf("%s",stu[i].time);
printf("请输入第%d个学生的地址:
\n",i+1);
scanf("%s",stu[i].add);
printf("请输入第%d个学生的电话:
\n",i+1);
scanf("%s",stu[i].tel);
printf("请输入第%d个学生的E-mail:
\n",i+1);
scanf("%s",stu[i].mail);
if(flag==0)
{
i=i;
i++;
}
}
while(in+=m;
printf("录入完毕!
\n\n");
sort();
}
voiddel()
{
inti,j,flag=0;
chars1[LEN+1];
printf("请输入要删除学生的学号:
\n");
scanf("%s",s1);
for(i=0;iif(strcmp(stu[i].code,s1)==0)
{
flag=1;
for(j=i;jstu[j]=stu[j+1];
}
if(flag==0)
printf("该学号不存在!
\n");
if(flag==1)
{
printf("删除成功,显示结果请选择菜单\n");
n--;
}
}
voiddisplay()
{
inti;
printf("所有学生的信息为:
\n");
printf("学生学号学生姓名年龄性别出生年月地址电话E-mail\n");
printf("--------------------------------------------------------------------\n");
for(i=0;i{
printf("%6s%7s%5d%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
}
voidsave()
{
inti;
FILE*fp;
fp=fopen("student.txt","w");
for(i=0;i{
fprintf(fp,"%s%s%d%s%s%s%s%s\n",stu[i].code,stu[i].name,stu[i].age,
stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);
}
fclose(fp);
}
voidmenu()
{
intnum;
printf("\n\n学生信息管理系统\n\n");
printf("*********************系统功能菜单************************\n");
printf("友情提示:
查询前请先刷新系统!
\n");
printf("--------------------------------------------\n");
printf("*********************************************\n");
printf("*0.系统帮助及说明**1.刷新学生信息*\n");
printf("*********************************************\n");
printf("*2.查询学生信息**3.修改学生信息*\n");
printf("*********************************************\n");
printf("*4.增加学生信息**5.按学号删除信息*\n");
printf("*********************************************\n");
printf("*6.显示当前信息**7.保存当前学生信息*\n");
printf("********************************************\n");
printf("*8.退出系统*\n");
printf("**********************\n");
printf("--------------------------------------------\n");
printf("请选择菜单编号:
");
scanf("%d",&num);
switch(num)
{
case0:
help();break;
case1:
readfile();break;
case2:
seek();break;
case3:
modify();break;
case4:
insert();break;
case5:
del();break;
case6:
display();break;
case7:
save();break;
case8:
k=0;break;
default:
printf("请在-8之间选择\n");
}
}