资源描述
学生学籍信息管理系统设计
———————————————————————————————— 作者:
———————————————————————————————— 日期:
13
个人收集整理 勿做商业用途
学生学籍信息管理系统设计
1、需求分析
学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。
2、总体设计
整个系统可以设计为数据录入模块、数据查询模块、数据删除模块和数据排序模块。
3、详细设计
设计学生基本信息和学生成绩基本信息结构体数组.
Struct
{
int stuNo; //学号
char name[20]; //姓名
char sex[2]; //性别
int domNum; //宿舍号
int tel; //电话号码
}StuInfo; //学生基本信息结构体
Struct
{
int stuNo; //学号
char courseNo; //课程编号
char courseName; //课程名称
int creditHour; //学分
Int triGrade; //平时成绩
Int experiGrade; //实验成绩
Int examGrade; //卷面成绩
Float totalGrade; //综合成绩
Float finalCreHour; //实得学分
}StuGraInfo; //学生成绩基本信息结构体
(1)数据录入模块
学生基本信息文件可以在磁盘建立,采用写文件方式录入学生成绩基本信息。综合成绩和实得学分通过计算得到。
(2)查询模块
通过菜单选择查询功能,再选择学生基本情况查询和成绩查询,若选择前者,再通过菜单选择学号、姓名或宿舍号码,按照基本查找算法查找A。TXT,然后把查找结果输出若选择后者,则先在A。TXT中查找学号对应的姓名,再在B.TXT中查找该学生的课程情况,并统计科目和实得总学分,输出结果.
(3)删除模块
通过菜单选择删除学生的功能,输入要删除学生的学号,则分别在A.TXT和B.TXT中查找该生信息,删除之;或者输入学生的姓名,先在A。TXT中得到该生的学号,删除该生信息,再在B。TXT中删除该学号对应的信息。注意:C语言中没有直接删除信息的函数,需要自己实现,可以采取读出数据,判断数据(如果不删除,则进入缓冲区,否则删除),写入数据(把缓冲区中的数据写入文件)的步骤进行。
(4)排序模块
通过菜单选择排序依据,采用排序算法(冒泡、插入、选择等)对数据进行排序并输出结果.
#include <time.h>
#include<stdio。h〉
#include〈conio。h>
#include <stdlib。h>
#include〈string。h>
void input();
void display();
void find();
void delmodify();
void delfile();
void save();
# define MAX 100;
struct employe
{
char jobno[10]; //职工号
char name[20]; //姓名
char sex[10]; //性别
int age; //年龄
char edulevel[10]; //学历
char salary[10]; //工资
char addr[20]; //地址
char tel[11]; //电话
}; //职工信息结构体
struct employe a[100];
int number=0;
main()
{
int n;
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)
{
case 1 : system("cls"); input(); break;
case 2 : system("cls”); display(); break;
case 3 : system(”cls"); find(); break;
case 4 : system("cls"); delmodify(); break;
case 5 : system("cls”); delfile(); break;
case 6 : system(”cls"); save(); break;
case 7 : system(”exit”); exit(0);
default :system("cls”); goto start;
}
}while(1);
}
void input()
{int i=0;
char j;
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("是否继续录入?(Y or N):");
fflush(stdin);
scanf("%s",&j);
}
while(j!=’n'&&j!='N’);
}
void display()
{int i=0;
char ch;
do
{printf(”\n\n");
for(i=0;i<number;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”);
}
void find ()
{void find1();
void find2();
int m;
char ch;
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)
{case 1 :system(”cls"); find1(); break;
case 2 : system("cls"); find2(); break;
default :system("cls”); goto start;
}
printf("\t\t按任意键返回主菜单”);
fflush(stdin);
ch=getchar();
}
while(!ch);
system(”cls”);
}
void find1()
{int i;
char str[20],ch;
do
{
printf(”输入要查询的职工号:");
fflush(stdin);
gets(str);
for(i=0;i〈number;i++)
if(!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");
}
void find2()
{int i;
char str[20],ch;
do
{
printf("输入要查询的职工学历:");
gets(str);
for(i=0;i〈number;i++)
if(!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");
}
void delmodify()
{void del();
void modify();
char ch;
int p;
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)
{case 1 :system("cls”); del(); break;
case 2 : system(”cls”); modify(); break;
default :system(”cls”); goto start;
}
printf("\t\t按任意键返回主菜单”);
fflush(stdin);
ch=getchar();
}
while(!ch);
system("cls");
}
void del()
{char str[20];
int i;
printf("\t\t\t1。输入要删除职工的姓名:\n”);
fflush(stdin);
scanf("%s",&str);
for(i=0;i〈number;i++)
{
if(!strcmp(a[i].name,str))
{
if(i==number) number—=1;
else
{a[i]=a[number—1];
number-=1;
}
break;
}
}
system(”cls”);
}
void modify()
{int i;
char str[20];
printf("\t\t\t2.输入要修改职工的姓名:\n");
fflush(stdin);
scanf("%s”,&str);
for(i=0;i〈number;i++)
if(!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");
}
void save ()
{FILE *fp;
int i;
char filepath[20];
printf(”输入要保存的文件路径:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"w”))==NULL)
{
printf(”\n保存失败!”);
exit(0);
}
for(i=0;i<number;i++)
fprintf(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");
}
void delfile()
{FILE *fp;
char filepath[20];
printf("输入要删除的文件路径:");
fflush(stdin);
gets(filepath);
fp=fopen(filepath,”w");
fclose(fp);
printf(”保存在文件%s中的所有信息已经删除!\n”,filepath);
system(”pause");
system(”cls”);
}
展开阅读全文