课程设计班级档案管理系统方案.docx

上传人:b****4 文档编号:12003380 上传时间:2023-04-16 格式:DOCX 页数:34 大小:599.37KB
下载 相关 举报
课程设计班级档案管理系统方案.docx_第1页
第1页 / 共34页
课程设计班级档案管理系统方案.docx_第2页
第2页 / 共34页
课程设计班级档案管理系统方案.docx_第3页
第3页 / 共34页
课程设计班级档案管理系统方案.docx_第4页
第4页 / 共34页
课程设计班级档案管理系统方案.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

课程设计班级档案管理系统方案.docx

《课程设计班级档案管理系统方案.docx》由会员分享,可在线阅读,更多相关《课程设计班级档案管理系统方案.docx(34页珍藏版)》请在冰豆网上搜索。

课程设计班级档案管理系统方案.docx

课程设计班级档案管理系统方案

《高级语言程序设计》

课程设计报告书

 

题目:

班级档案管理系统

专业:

计算机科学与技术

学号:

学生:

指导教师:

完成日期:

 

一、设计容与设计要求1

1.设计容1

2.设计要求1

二、程序设计目的2

三、程序模块分析2

1.系统控制流程图2

2.部分主要函数算法流程图3

四、函数功能说明6

1.函数说明6

2.用户说明6

五、程序测试7

六、总结14

附录15

 

一、设计容与设计要求

1.设计容

对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。

2.设计要求

(1)本系统采用一个包含N个数据的结构体数组,每个学生的数据应当包括:

学号、、性别、年龄、备注。

(2)本系统显示这样的菜单:

请选择系统功能项:

a从文件中读入学生基本信息

b添加新学生的基本信息

c学生基本信息显示

d学生基本信息保存至文件

e学生基本信息删除

f学生基本信息修改(要求先输入修改密码)

g学生基本信息查询

(1)按学号查询

(2)按查询

(3)按性别查询

(4)按年龄查询

h退出系统

(3)执行一个具体的功能之后,程序将重新显示菜单。

(4)将学生基本信息保存到文件中。

(5)进入系统之前要先输入登录密码。

说明:

登录密码和修改密码使用文件保存。

二、课程设计目的

在平时学习C语言的过程中,通常只是在课堂上跟随老师的讲解来进行学习,因此在练习上较为缺乏,而课程设计恰恰弥补了这点,它不仅是对平时学习的一种检测,同时在做它的过程中也对自己学习的知识进行了巩固和提高,为以后的学习和工作打下了基础。

 

三、程序模块分析

1.系统控制流程图

密码函数

开始

读取学生信息功能

添加学生信息功能

保存信息功能

信息删除功能

信息修改功能

信息查询功能

退出功能

结束

 

2.部分主要函数算法流程图

 

 

图4.1:

read函数图4.2:

input函数

 

 

图4.3:

Delete函数

图4.4:

modi函数

 

 

四、函数功能说明

1.函数说明

main()函数是程序的入口有调取各个模块的的作用,里面包含一个switch语句,实现选择功能;

read():

读取函数,从文件中读取学生信息;

input():

添加函数,学生基本信息的录入;

save():

学生信息保存函数;

Delete():

删除函数;

search():

查找函数;

modi():

信息修改函数;

secretcode():

密码验证函数;

2.用户说明

输入密码进入系统后,通过a~g选项来进行功能选择。

选项a:

调用read函数,将在文件中保存的学生信息读入结构体数组中,然后在屏幕上显示出来,按enter键便重新返回菜单;

选项b:

调用input函数,输入需要添加的学生人数,显示出需要添加的信息,将信息填写完毕后,按enter键重新返回菜单,再通过选项c将新添加的学生信息保存到文件中;

选项c:

调用save函数将新输入或修改后的学生信息保存到文件中,在input函数和modi函数调用之后需要调用此函数,然后按enter键重新返回菜单;

选项d:

通过调用delete函数,输入需要删除的学生的学号,按enter键提示删除成功,该学生信息已被从文件中删除,并重新返回菜单;

选项e:

在调用该函数实现学生信息修改的功能时,需要输入修改密码,当密码错误时,提示密码错误,此时重新输入密码。

密码正确之后,输入需要修改信息的学生的学号,输出该学生信息,确认后输入新的学生信息,按enter键重新返回菜单,此时需要通过选项c将信息保存到文件中;

选项f:

通过调用search函数,在选择该项后,会出现一个子菜单,按照需求可以分别通过学号、、性别和年龄来查询学生信息,按enter键显示查询信息并重新返回菜单。

五、程序测试

输入登陆密码123456进入系统

图5.1

输入a从文件中读入学生信息

 

 

图5.2

 

输入b添加学生的基本信息

图5.3

图5.4

输入c将信息保存至文件

 

图5.5

输入d删除学生信息

图5.6

 

信息删除成功

图5.7

再次从文件输入信息时需要删除的信息已被删除

图5.8

 

输入e进行学生信息修改

图5.9

 

图5.10

输入c将信息保存到文件中

图5.11

输入f学生信息的查询

图5.12

 

图5.13

六、总结

这次的课程设计给了我很大的体会,我能独立的完成这项任务,是对平时的学习和练习的一种肯定,同时也提高了自己的信心。

在完成它的过程中当然会遇到很多的困难,首先是结构体的定义问题,由于刚开始对程序的不熟悉,在定义结构体元素数组时出现了错误,后来经过一次次的检测将数组定义到了一个合适的大小。

其次在input函数中,输入完新学生信息保存至文件中时,对文件原有信息进行了覆盖,因此为了避免这种情况,将for循环中的i从N-n开始,经过测试这种方法是有效的。

最后是删除函数,由于开始定义的年龄是整型变量,在对文件中的结构体数据进行删除时,在年龄的位置会出现数字0,从而使从文件中读取数据时出现乱码,于是便将年龄定义成字符型数组,利用strcpy函数将结构体数组的下一位元素将前一位元素进行覆盖,从而实现删除功能。

虽然较为成功的完成了课程设计,但由于知识和时间的局限性,系统仍然存在缺陷,我认为此系统还能通过链表来进行优化,链表的好处是可以通过指针更好的实现查找、修改和删除功能,因此如果有时间便会通过链表来时、使这个系统更加具有实用性。

 

附录

源程序清单

#include"stdafx.h"

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

#include"conio.h"

#defineN4

structstudent//定义一个包含学生信息的结构体数组

{

charno[10];//学号

charname[8];//

charsex[5];//性别

charage[5];//年龄

charnote[5];//备注

};

structstudentstu[N];//定义全局变量

 

voidmenu()//菜单函数

{

printf("\n");

printf("****************\n");

printf("**\n");

printf("*a.从文件中读入学生基本信息*\n");

printf("*b.添加新学生的基本信息*\n");

printf("*c.学生基本信息保存至文件*\n");

printf("*d.学生基本信息删除*\n");

printf("*e.学生基本信息修改*\n");

printf("*f.学生基本信息查询*\n");

printf("*g.退出系统*\n");

printf("**\n");

printf("****************\n");

printf("\n");

printf("请输入选项:

(a~g)\n");

}

 

voidinput()//学生基本信息的录入

{

inti;

intn;

printf("请输入添加学生数:

");

scanf("%d",&n);

for(i=N-n;i

{

printf("请输入学生的基本信息:

\n");

printf("no:

\n");

scanf("%s",stu[i].no);

printf("name:

\n");

scanf("%s",stu[i].name);

printf("sex:

\n");

scanf("%s",stu[i].sex);

printf("age:

\n");

scanf("%s",stu[i].age);

printf("note:

\n");

scanf("%s",stu[i].note);

}

printf("\n");

printf("请检查信息是否输入正确!

\n");

printf("\n");

for(i=N-n;i

{

printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

}

 

voidsave()//学生信息保存

{

FILE*fp;

inti;

fp=fopen("e:

\\student.txt","w");

if(fp==NULL)

{

printf("文件不存在!

\n");

exit(0);

}

for(i=0;i

{

if(strlen(stu[i].name)==4)

{

fprintf(fp,"%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

if(strlen(stu[i].name)==6)

{

fprintf(fp,"%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

}

fclose(fp);

fflush(fp);

printf("保存成功!

\n");

}

 

voidDelete()//删除函数;

{

FILE*fp;

fp=fopen("e:

\\student.txt","w");

charnumber[10];

intf;

boolflag=false;

printf("删除学生信息:

\n");

printf("请输入学号:

\n");

scanf("%s",number);

for(inti=0;i

{

if(!

strcmp(number,stu[i].no))

{

for(f=i;f

{

strcpy(stu[f].name,stu[f+1].name);

strcpy(stu[f].note,stu[f+1].note);

strcpy(stu[f].no,stu[f+1].no);

strcpy(stu[f].sex,stu[f+1].sex);

strcpy(stu[f].age,stu[f+1].age);

}

flag=true;

}

}

if(!

flag)

{

printf("该学生不存在!

:

\n");

Delete();

}

for(i=0;i

{

fprintf(fp,"%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

printf("删除成功!

\n");

fclose(fp);

}

 

voidsearch()//查找函数

{

intf;

FILE*fp;

fp=fopen("e:

\\student.txt","rb");

for(f=0;f

{

fscanf(fp,"%s%s%s%s%s",stu[f].no,stu[f].name,stu[f].sex,stu[f].age,stu[f].note);

}

boolflag=false;//定义一个bool类型进行判断

intm;

inti;

printf("1按学号查询\n");

printf("2按查询\n");

printf("3按性别查询\n");

printf("4按年龄查询\n");

printf("请输入选项:

");

printf("\n");

scanf("%d",&m);

switch(m)

{

case1:

charnum[10];

printf("请输入学号:

\n");

scanf("%s",num);

for(i=0;i

{

if(!

strcmp(num,stu[i].no))

{

if(strlen(stu[i].name)==4)

{

printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

if(strlen(stu[i].name)==6)

{

printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

flag=true;

}

}

if(!

flag)

{

printf("该学生不存在.\n");

}

break;

case2:

printf("请输入:

\n");

charna[10];//定义一个的数组

scanf("%s",na);

for(i=0;i

{

if(!

strcmp(na,stu[i].name))

{

if(strlen(stu[i].name)==4)

{

printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

if(strlen(stu[i].name)==6)

{

printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

flag=true;

}

}

if(!

flag)

{

printf("该学生不存在.\n");

}

break;

case3:

charch[5];

printf("请输入性别:

\n");

scanf("%s",ch);

for(i=0;i

{

if(!

strcmp(ch,stu[i].sex))

{

if(strlen(stu[i].name)==4)

{

printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

if(strlen(stu[i].name)==6)

{

printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

flag=true;

}

}

if(!

flag)

{

printf("t该学生不存在.\n");

}

break;

case4:

charnum_age[5];

printf("请输入年龄:

\n");

scanf("%s",&num_age);

for(i=0;i

{

if(!

strcmp(num_age,stu[i].age))

{

if(strlen(stu[i].name)==4)

{

printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

if(strlen(stu[i].name)==6)

{

printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

flag=true;

}

}

if(!

flag)

{

printf("该学生不存在.\n");

}

break;

default:

break;

}

}

 

voidmodi()//信息修改函数

{

FILE*fp;//定义修改密码文件的指针

FILE*fp1;//定义学生信息文件的指针

chara[7];

charb[7];

charc[10];

charch;

inti=0;

intf;

booltemp=false;

fp1=fopen("e:

\\student.txt","r");

for(f=0;f

{

fscanf(fp1,"%s%s%s%s%s",stu[f].no,stu[f].name,stu[f].sex,stu[f].age,stu[f].note);

}

fclose(fp1);

printf("请输入修改密码:

\n");

scanf("%s",b);

if((fp=fopen("e:

\\1.txt","r"))==NULL)

{

printf("打开文件夹失败!

");

exit(0);

}

ch=fgetc(fp);

while(ch!

=EOF&&i<6)

{

a[i]=ch;

ch=fgetc(fp);

i++;

}

a[6]='\0';

fclose(fp);

while

(1)

{

if(!

strcmp(a,b))

{

break;

}

else

{

printf("密码错误!

请重新输入密码:

\n");

scanf("%s",b);

}

}

printf("请输入需要修改信息学生的学号:

\n");

scanf("%s",c);

for(f=0;f

{

if(!

strcmp(c,stu[f].no))

{

printf("%s%s%s%s%s\n",stu[f].no,stu[f].name,stu[f].sex,stu[f].age,stu[f].note);

printf("\n");

printf("请输入新的信息:

\n");

printf("no:

\n");

scanf("%s",stu[f].no);

printf("name:

\n");

scanf("%s",stu[f].name);

printf("sex:

\n");

scanf("%s",stu[f].sex);

printf("age:

\n");

scanf("%s",stu[f].age);

printf("note:

\n");

scanf("%s",stu[f].note);

temp=true;

break;

}

}

if(!

temp)

{

printf("该学生不存在!

\n");

}

}

 

intsecretcode(charb[6])//密码验证函数

{

FILE*fp;

charc[7];

inti=0;

charch;

if((fp=fopen("e:

\\2.txt","r"))==NULL)

{

printf("打开文件失败!

\n");

exit(0);

}

ch=fgetc(fp);

while(ch!

=EOF&&i<6)

{

c[i]=ch;

ch=fgetc(fp);

i++;

}

c[6]='\0';

if(!

strcmp(b,c))//判断字符串b和c是否相等,是返回值0,否返回值1

{

return0;

}

else

{

return1;

}

fclose(fp);

}

voidread()//从文件中读取学生信息

{

inti;

FILE*fp;

fp=fopen("e:

\\student.txt","r");

for(i=0;i

{

fscanf(fp,"%s%s%s%s%s",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

if(strlen(stu[i].name)==4)

{

printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

if(strlen(stu[i].name)==6)

{

printf("%s%s%s%s%s\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].age,stu[i].note);

}

}

printf("\n");

printf("读取成功!

\n");

fclose(fp);

}

main(intargc,char*argv[])

{

chara[7];

charn;

intcode;

printf("请输入登陆密码:

\n");

while

(1)

{

scanf("%s",a);

code=secretcode(a);

if(code!

=0)

{

printf("密码错误!

");

printf("\n");

}

else

break;

}

printf("**************欢迎进入班级档案管理系统!

****************\n");

printf("\n\n");

menu();

while(

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

当前位置:首页 > 高等教育 > 艺术

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

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