班级档案管理系统报告文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:班级档案管理系统
一、设计任务与目标
对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。
功能要求:
(1)本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。
(2)本系统显示这样的菜单:
请选择系统功能项:
a 学生基本信息录入
b 学生基本信息显示
c 学生基本信息保存
d 学生基本信息删除
e 学生基本信息修改(要求先输入密码)
f 学生基本信息查询
(1)按学号查询
(2)按姓名查询
(3)按性别查询
(4)按年龄查询
g. 退出系统
(3)执行一个具体的功能之后,程序将重新显示菜单。
(4)将学生基本信息保存到文件中。
(5)进入系统之前要先输入密码。
二、方案设计与论证
主要采用结构体数组,通过scanf函数从键盘输入学生各种信息,每当修改学生信息时需要调用密码验证函数。
定义了一个文件指针,密码验证函数中,通过fopen打开已有文本文件,然后通过fgetc逐个读取该文件中的字符来实现。
退出系统时向学生信息文件中写入数据并关闭文件就实现了保存文件的功能。
四、全部源程序清单
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define N 3
struct student
{
char name[10];
char no[10];
char sex;
int age;
char bnote[100];
};
void print(bool menu)//打印基本信息
{
if (!menu)
{
printf("学生基本信息录入 ,press 1\n"); }
else
{
printf("学生基本信息显示 ,press 2\n");
printf("学生基本信息保存 ,press 3\n");
printf("学生基本信息删除 ,press 4\n");
printf("学生基本信息修改 ,press 5\n");
printf("学生基本信息查询 ,press 6\n"); }
printf("退出学生信息系统 ,press 7\n");
bool Check(char pas[6])//密码验证
{
FILE *fp;//定义一个文件指针fp,建立一个字符文件
char ch;
char a[7]={" "};
int i = 0;
if ((fp=fopen("c:\\密码.txt","r"))==NULL)//打开密码.txt
{
printf("文件打开失败!\n");
exit(0);
}
ch=fgetc(fp);
while (ch!=EOF&&i<6)
{
a[i] = ch;
ch=fgetc(fp);
i++;
}
a[6] = '\0';
if (!strcmp(pas,a))
{
return true;
}
else
{
printf("密码错误\n");
return false;
}
fclose(fp);
}
void GetInformation(struct student *arr,int n)//学生基本信息录入
{
for (int i = 0;i<n;i++)
{
printf("输入学生的基本信息:name no sex age bnote\n");
scanf("%s %s %c %d %s",arr[i].name,arr[i].no,&arr[i].sex,&arr[i].age,arr[i] .bnote);
}
}
void Display(struct student* arr,int n)//学生基本信息显示
{
printf("学生信息: name nO sex age note\n");
for (int i = 0;i<n;i++)
printf("%5s%5s%5c%5d%5s\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].b note);
}
}
void Save(struct student* arr,int n)//学生基本信息保存,保存在c:\\student.txt {
FILE * fp;
fp= fopen("c:\\student.txt","w+");
if (fp == NULL)
{
printf("文件不存在!\n");
exit(0);
}
fwrite(arr,sizeof(struct student)*n,n,fp);
fclose(fp);
}
void Modfiy(struct student* arr,int n)//学生基本信息修改
{
char number[10];
bool flag=false;
char pass[6];
printf("请输入密码:\n");
scanf("%s",pass);
if (Check(pass))
{
printf("修改学生信息:\n");
printf("请输入学号:\n");
scanf("%s",number);
for (int i =0;i<n;i++)
{
if (!strcmp(number,arr[i].no))
{
printf("学生信息:name no sex age note\n");
printf("%10s%10s%10c%10d%10s\n",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
printf("请输入学生信息:\n");
scanf("%s %s %c %d %s",arr[i].name,arr[i].no,&arr[i].sex,&arr[i].age,arr[i].bno te);
Save(arr,n);
flag = true;
}
if (flag == false)
{
printf("该学生不存在!\n");
}
}
}
void Delete(struct student* arr,int n)//学生基本信息删除
{
char number[10];
bool flag=false;
printf("删除学生信息:\n");
printf("请输入学号:\n");
scanf("%s",number);
for (int i =0;i<n;i++)
{
if (!strcmp(number,arr[i].no))
{
strcpy(arr[i].name," ");
strcpy(arr[i].no," ");
strcpy(arr[i].bnote," ");
arr[i].sex = ' ';
arr[i].age = 0;
Save(arr,n);
flag = true;
}
}
if (flag == true)
{
printf("该学生不存在!:\n");
}
}
void Search(struct student* arr,int n)//学生基本信息查询
{
int temp,i;
bool flag=false;
printf("---------------通过学号查询,press 1-------------\n"); printf("---------------通过姓名查询,press 2-----------\n"); printf("---------------通过性别查询,press 3------------\n"); printf("---------------通过年龄查询,press 4------------\n");
printf("---------------退出,press 5 ------------\n"); scanf("%d",&temp);
switch (temp)
{
case 1://按照学号查询
{
char num[10];
printf("请输入学号:\n");
scanf("%s",num);
for ( i =0;i<n;i++)
{
if (!strcmp(num,arr[i].no))
{
printf("%10s%10s%10c%10d%10s\n",arr[i].name,arr[i].no, arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("该学生不存在.\n");
}
}
break;
case 2://按照姓名查询
{
char num[10];
printf("请输入姓名:\n");
scanf("%s",num);
for ( i =0;i<n;i++)
{
if (!strcmp(num,arr[i].name))
{
printf("%10s%10s%10c%10d%10s",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("该学生不存在.\n");
}
}
break;
case 3://按照性别查询
{
char ch;
printf("请输入性别:\n");
//scanf("%c",&ch);
ch = getch();
for ( i =0;i<n;i++)
{
if (ch == arr[i].sex)
{
printf("%10s%10s%10c%10d%10s\n",arr[i].name,arr[i].no, arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("该学生不存在.\n");
}
}
break;
case 4://按照年龄查询
{
char num_age;
printf("请输入年龄:\n");
scanf("%d",&num_age);
for ( i =0;i<n;i++)
{
if (num_age == arr[i].age)
{
printf("%10s%10s%10c%10d%10s\n",arr[i].name,arr[i].no, arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("该学生不存在.\n");
}
}
break;
default:
break;
}
}
void main()
{
struct student arr[N];
char ps[6];
bool flag =false;
printf("请输入密码:\n");
scanf("%s",ps);
flag = Check(ps);
if (flag)
{
int select;
print(false);
scanf("%d",&select);
while (0<select && select <7 ) {
switch (select)
{
case 1:
GetInformation(arr,N);
print(true);
break;
case 2:
Display(arr,N);
print(true);
break;
case 3:
Save(arr,N);
print(true);
break;
case 4:
Delete(arr,N);
print(true);
break;
case 5:
Modfiy(arr,N);
print(true);
break;
case 6:
Search(arr,N);
print(true);
break;
default:
break;
}
printf("请选择:\n");
scanf("%d",&select);
}
}
}
五、程序运行的测试与分析
六、结论与心得
无论什么只有自己真的懂了,才能说出来个所以然。
整个过程充满了纠结,不过从各种资料中慢慢发现那是很容易的,思路也清楚了很多,最后做起来也挺容易。
七、参考资料
C语言课程设计(第三版)谭浩强著
/view/209670.htm?fr=ala0_1_1
八、致谢
谢谢,谢谢谭浩强老师。
谢谢百度老师
课程设计成绩评定表
制定人:王钲璇,苗雨审定人:陈守孔。