C语言学生学籍信息管理系统设计.docx
《C语言学生学籍信息管理系统设计.docx》由会员分享,可在线阅读,更多相关《C语言学生学籍信息管理系统设计.docx(15页珍藏版)》请在冰点文库上搜索。
C语言学生学籍信息管理系统设计
学生学籍信息管理系统设计
1、需求分析
学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。
2、总体设计
整个系统可以设计为数据录入模块、数据查询模块、数据删除模块和数据排序模块。
3、详细设计
设计学生基本信息和学生成绩基本信息结构体数组。
Struct
{
intstuNo;//学号
charname[20];//姓名
charsex[2];//性别
intdomNum;//宿舍号
inttel;//电话号码
}StuInfo;//学生基本信息结构体
Struct
{
intstuNo;//学号
charcourseNo;//课程编号
charcourseName;//课程名称
intcreditHour;//学分
InttriGrade;//平时成绩
IntexperiGrade;//实验成绩
IntexamGrade;//卷面成绩
FloattotalGrade;//综合成绩
FloatfinalCreHour;//实得学分
}StuGraInfo;//学生成绩基本信息结构体
(1)数据录入模块
学生基本信息文件可以在磁盘建立,采用写文件方式录入学生成绩基本信息。
综合成绩和实得学分通过计算得到。
(2)查询模块
通过菜单选择查询功能,再选择学生基本情况查询和成绩查询,若选择前者,再通过菜单选择学号、姓名或宿舍号码,按照基本查找算法查找A.TXT,然后把查找结果输出若选择后者,则先在A.TXT中查找学号对应的姓名,再在B.TXT中查找该学生的课程情况,并统计科目和实得总学分,输出结果。
(3)删除模块
通过菜单选择删除学生的功能,输入要删除学生的学号,则分别在A.TXT和B.TXT中查找该生信息,删除之;或者输入学生的姓名,先在A.TXT中得到该生的学号,删除该生信息,再在B.TXT中删除该学号对应的信息。
注意:
C语言中没有直接删除信息的函数,需要自己实现,可以采取读出数据,判断数据(如果不删除,则进入缓冲区,否则删除),写入数据(把缓冲区中的数据写入文件)的步骤进行。
(4)排序模块
通过菜单选择排序依据,采用排序算法(冒泡、插入、选择等)对数据进行排序并输出结果。
#include
#include
#include
#include
#include
voidinput();
voiddisplay();
voidfind();
voiddelmodify();
voiddelfile();
voidsave();
#defineMAX100;
structemploye
{
charjobno[10];//职工号
charname[20];//姓名
charsex[10];//性别
intage;//年龄
charedulevel[10];//学历
charsalary[10];//工资
charaddr[20];//地址
chartel[11];//电话
};//职工信息结构体
structemployea[100];
intnumber=0;
main()
{
intn;
start:
printf("\t\t\t\t欢迎使用职工信息管理系统\n");
do
{
printf("\t\t\t1.职工信息输入\n");
printf("\t\t\t2.职工信息浏览\n");
printf("\t\t\t3.职工信息查询\n");
printf("\t\t\t4.职工信息删除修改\n");
printf("\t\t\t5.删除文件中的职工信息\n");
printf("\t\t\t6.保存职工信息\n");
printf("\t\t\t7.退出\n");
printf("\t\t\t选择功能选项:
");
fflush(stdin);
scanf("%d",&n);
switch(n)
{
case1:
system("cls");input();break;
case2:
system("cls");display();break;
case3:
system("cls");find();break;
case4:
system("cls");delmodify();break;
case5:
system("cls");delfile();break;
case6:
system("cls");save();break;
case7:
system("exit");exit(0);
default:
system("cls");gotostart;
}
}while
(1);
}
voidinput()
{inti=0;
charj;
do
{printf("\t\t\t\t录入职工信息\n输入第%d个职工的信息:
\n",i+1);
printf("输入职工号:
");
fflush(stdin);
gets(a[i].jobno);
printf("输入职工姓名:
");
fflush(stdin);
gets(a[i].name);
printf("输入职工性别:
");
fflush(stdin);
scanf("%s",a[i].sex);
printf("输入职工年龄:
");
fflush(stdin);
scanf("%d",&a[i].age);
printf("输入职工学历:
");
fflush(stdin);
gets(a[i].edulevel);
printf("输入职工工资:
");
fflush(stdin);
gets(a[i].salary);
printf("输入职工地址:
");
fflush(stdin);
gets(a[i].addr);
printf("输入职工电话:
");
fflush(stdin);
gets(a[i].tel);
i++;
number=i;
printf("是否继续录入?
(YorN):
");
fflush(stdin);
scanf("%s",&j);
}
while(j!
='n'&&j!
='N');
}
voiddisplay()
{inti=0;
charch;
do
{printf("\n\n");
for(i=0;i{printf("\t\t第%d个职工的信息:
\n",i+1);
printf("\t职工号%s\n",a[i].jobno);
printf("\t姓名%s\n",a[i].name);
printf("\t性别%s\n",a[i].sex);
printf("\t年龄%d\n",a[i].age);
printf("\t学历%s\n",a[i].edulevel);
printf("\t工资%s\n",a[i].salary);
printf("\t地址%s\n",a[i].addr);
printf("\t电话%s\n",a[i].tel);
}
printf("\t\t按任意键返回主菜单");
fflush(stdin);
ch=getchar();
}
while(!
ch);
system("cls");
}
voidfind()
{voidfind1();
voidfind2();
intm;
charch;
start:
printf("\n\n");
printf("\t\t\t选择查询职工信息的模式\n");
do
{printf("\t\t\t1.通过职工号\n");
printf("\t\t\t2.通过职工学历\n");
printf("\t\t\t选择功能选项:
");
fflush(stdin);
scanf("%d",&m);
switch(m)
{case1:
system("cls");find1();break;
case2:
system("cls");find2();break;
default:
system("cls");gotostart;
}
printf("\t\t按任意键返回主菜单");
fflush(stdin);
ch=getchar();
}
while(!
ch);
system("cls");
}
voidfind1()
{inti;
charstr[20],ch;
do
{
printf("输入要查询的职工号:
");
fflush(stdin);
gets(str);
for(i=0;iif(!
strcmp(a[i].jobno,str))
{
printf("\t职工号%s\n",a[i].jobno);
printf("\t姓名%s\n",a[i].name);
printf("\t性别%s\n",a[i].sex);
printf("\t年龄%d\n",a[i].age);
printf("\t学历%s\n",a[i].edulevel);
printf("\t工资%s\n",a[i].salary);
printf("\t地址%s\n",a[i].addr);
printf("\t电话%s\n",a[i].tel);
}
printf("\t\t按任意键返回查询菜单");
fflush(stdin);
ch=getchar();
}
while(!
ch);
system("cls");
}
voidfind2()
{inti;
charstr[20],ch;
do
{
printf("输入要查询的职工学历:
");
gets(str);
for(i=0;iif(!
strcmp(a[i].edulevel,str))
{
printf("\t职工号%s\n",a[i].jobno);
printf("\t姓名%s\n",a[i].name);
printf("\t性别%s\n",a[i].sex);
printf("\t年龄%d\n",a[i].age);
printf("\t学历%s\n",a[i].edulevel);
printf("\t工资%s\n",a[i].salary);
printf("\t地址%s\n",a[i].addr);
printf("\t电话%s\n",a[i].tel);
}
printf("\t\t按任意键返回查询菜单");
fflush(stdin);
ch=getchar();
}
while(!
ch);
system("cls");
}
voiddelmodify()
{voiddel();
voidmodify();
charch;
intp;
start:
printf("\t\t\t职工信息的删除?
修改?
\n");
do
{printf("\t\t\t1.删除\n");
printf("\t\t\t2.修改\n");
printf("选择功能选项:
");
fflush(stdin);
scanf("%d",&p);
switch(p)
{case1:
system("cls");del();break;
case2:
system("cls");modify();break;
default:
system("cls");gotostart;
}
printf("\t\t按任意键返回主菜单");
fflush(stdin);
ch=getchar();
}
while(!
ch);
system("cls");
}
voiddel()
{charstr[20];
inti;
printf("\t\t\t1.输入要删除职工的姓名:
\n");
fflush(stdin);
scanf("%s",&str);
for(i=0;i{
if(!
strcmp(a[i].name,str))
{
if(i==number)number-=1;
else
{a[i]=a[number-1];
number-=1;
}
break;
}
}
system("cls");
}
voidmodify()
{inti;
charstr[20];
printf("\t\t\t2.输入要修改职工的姓名:
\n");
fflush(stdin);
scanf("%s",&str);
for(i=0;iif(!
strcmp(a[i].name,str))
{system("cls");
printf("\t\t\t2.输入新插入职工的信息:
\n");
printf("输入职工号:
");
fflush(stdin);
gets(a[i].jobno);
printf("输入职工姓名:
");
fflush(stdin);
gets(a[i].name);
printf("输入职工性别:
");
fflush(stdin);
scanf("%s",a[i].sex);
printf("输入职工年龄:
");
fflush(stdin);
scanf("%d",&a[i].age);
printf("输入职工学历:
");
fflush(stdin);
gets(a[i].edulevel);
printf("输入职工工资:
");
fflush(stdin);
gets(a[i].salary);
printf("输入职工地址:
");
fflush(stdin);
scanf("%s",a[i].addr);
printf("输入职工电话:
");
fflush(stdin);
gets(a[i].tel);
printf("\n\n");
break;
}
system("cls");
}
voidsave()
{FILE*fp;
inti;
charfilepath[20];
printf("输入要保存的文件路径:
");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失败!
");
exit(0);
}
for(i=0;ifprintf(fp,"%s%s%s%d%s%d%s%s",a[i].jobno,a[i].name,a[i].sex,a[i].age,a[i].edulevel,a[i].salary,a[i].addr,a[i].tel);
fclose(fp);
printf("职工信息已保存在%s中!
\n",filepath);
fclose(fp);
printf("职工信息已保存在%s中!
\n",filepath);
system("pause");
system("cls");
}
voiddelfile()
{FILE*fp;
charfilepath[20];
printf("输入要删除的文件路径:
");
fflush(stdin);
gets(filepath);
fp=fopen(filepath,"w");
fclose(fp);
printf("保存在文件%s中的所有信息已经删除!
\n",filepath);
system("pause");
system("cls");
}