C课程设计报告--班级档案管理系统
课 程 设 计 报 告
课程名称 C语言课程设计 课题名称 班级档案管理系统
专 业
班 级
学 号
姓 名
指导教师
2014年 01 月 06 日
1
湖南
学院
课 程 设 计 任 务
课程名称 C语言课程设计
课 题 班级档案管理系统
专业班级 纺织工程
学生姓名
学 号
指导老师 田媛
审 批
任务书下达日期 2013 年 12 月 26 日 任务完成日期 2014年 01 月 06 日
2
一、设计内容与设计要求
1(设计内容:
课题二:班级档案管理系统。具体内容见附录。
2(设计要求:
1)设计正确,
合理。
2)界面友好,使用方便。
3)程序精炼,结构清晰。
4)上机演示。
3(设计报告要求:
课程设计报告格式如下:
1)正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体,行距为22。
2)正文的内容:课题的主要功能、课题的功能模块的划分、主要功能的实现、程序调试、总结、附件(所有程序的源代码,要求对程序写出必要的注释),课程设计报告需5000字左右(不含附件)。
3)课程设计报告装订顺序:封面、任务书、目录、正文、评分、程序清单附件。
二、进度安排
星期日 星期一 星期四 星期五 星期日
(17周) (18周) (18周) (18周) (18周)
14:00-17:00 18:00-21:00 18:00-21:00 18:00-21:00 交报告
上课时间另外安排。
3
附录:
设计课题二:班级档案管理系统
一、问题描述:
该系统实现对该班级学生的档案信息进行管理,包括录入、显示、修改、删除、查询、排序、保存等操作。
二、功能要求:
1、本系统采用结构体数组,每个数据的结构应当包括:学号、姓名、性别、年
龄、民族、备注。
2、系统功能:
a. 信息录入:即添加记录。
b. 信息显示:以某种方式显示学生的信息,如按学号显示、按性别显示、
按年龄顺序显示、只显示男生或女生等等多种形式显示。(要求至少有
一种显示方式,不限于已列出的方式。)
c. 信息修改:对已经输入的信息进行修改。
d. 信息删除:删除某个学生记录。
e. 学生基本信息查询:输入学号或姓名,显示其完整信息。
f. 信息保存:当添加、修改、删除信息后,应该将其存入文件。
g. 退出系统
3、系统使用说明:执行一个具体的功能之后,程序将重新显示功能菜单。系统
的功能并不限于上述,可以对其进行扩充完善,如在对信息进行修改和删除时,
可以考虑系统的安全性,在执行前若输入正确密码,才可进行操作。 三、测试数据:
学生人数>=20。
4
目 录
1 系统需求
...............................................6 2 概要设计 ...................................................6 3 详细设计 ...................................................7 4 系统测试 ..................................................13 5 课程设计总结 ..............................................16
5
1 系统需求分析
学生档案管理系统主要管理学生档案的基本信息。在系统中,每个用户是一条记录,包括学号、姓名、性别、年龄、备注。系统要对一个有N个用户的档案统一进行管理。包括了学生信息的录入、删除、修改、查询、插入等操作。本系统主要采用链表,结构体和函数来实现这些基本功能,而且能提供不同方式的查询功能,对学生信息的操作逐个地进行。
2 概要设计
系统功能模块图:
学生档案管理系统
录入 显示 保存 修改 插入 退出 排序 删除
各函数的主要功能:
主函数: void main()
录入函数:void enter()
显示函数:void list() /*直接显示学生信息*/ 保存函数:void save() /*保存学生信息*/ 插入函数:insert()
修改函数:void revise() /*修改录入的学生信息*/ 删除函数:void delete() /*删除录入的学生信息*/ 排序函数:void sort() /*排序录入的学生信息*/ 查找函数:void qseek() /*查找录入的学生信息*/ 读取函数:int load() /* 读取保存在文件中的学生信息*/
6
3 详细设计
3.1程序中的模块机使用功能
模块一:头文件,变量定义,函数的声明
对系统所使用的变量进行定义,对函数进行声明 模块二:学生信息的录入
int enter(STUDENT t[])录入学生的基本信息。 模块三:学生信息的显示
void list(STUDENT t[],int n)就是把学生的基本信息显示在电脑上。
模块四:学生信息的保存
void save(STUDENT t[],int n)就是在把学生基本信息的保存下来。 模块五:学生信息的修改
void revise(STUDENT t[],int n) 插入学生信息。 模块六:学生信息的插入
int insert(STUDENT t[],int n) 修改已经录入的学生信息 模块七:学生信息的删除
int delete(STUDENT t[],int n)删除录入的学生信息 模块八:学生信息的排序
void sort(STUDENT t[],int n)排序录入的学生信息 模块九:学生信息按姓名查找
void qseek(TSTUDENT t[],int n)查找录入的学生信息 模块十:学生信息的读入
int load(STUDENT t[])读取保存在文件中的学生信息 模块十一:退出系统
3.2 主菜单
主菜单部分,用来提醒用户需要选择哪些功能。这部分是来通过一个无限循环来执行上述所有的功能模块,不断的输出菜单项目,用switch语句来执行用户选择的功能模块,每一个case后面就是对应的功能函数。如果用户选择输入的数字范围不在1-9的范围之内,系统会返回主菜单界面,重新输入。
7
menu_select() /*主菜单函数*/
{
char s[80];
int c;
printf("press any key enter menu......\n");
printf("********************MENU*********************\n\n");
printf(" 1. 学生基本信息录入\n");
printf(" 2. 学生基本信息显示\n");
printf(" 3. 学生基本信息保存 \n");
printf(" 4. 学生基本信息修改\n");
printf(" 5. 学生基本信息插入 \n");
printf(" 6. 学生基本信息删除\n");
printf(" 7. 学生基本信息排序\n");
printf(" 8. 学生基本信息查询\n");
printf(" 9. 退出系统");
printf("***********************************************\n");
do{
printf("\n Enter you choice(1~9):");
scanf("%s",s);
c=atoi(s);
}while(c<1||c>9);
return c;
}
3.3 录入
通过选择功能函数1后,屏幕会出现指示,要求依次输入姓名、学号、性别等,输完之后系统会自动返回主菜单界面,如果想继续输入学生信息就输入数字键1继续输入。
int enter(STUDENT t[]) /*录入函数*/
{
int i,n;
printf("\nplease input num \n");
scanf("%d",&n);
printf("please input record \n");
printf("name no sex wYears remark\n");
printf("-------------------------------------------------------------------\n");
for(i=0;i
=i;j--)
{
strcpy(t[j+1].name,t[j].name);
strcpy(t[j+1].no,t[j].no);
strcpy(t[j+1].sex,t[j].sex);
t[j+1].wYears=t[j].wYears;
strcpy(t[j+1].remark,t[j].remark);
}
strcpy(t[i].name,temp.name);
strcpy(t[i].no,temp.no);
strcpy(t[i].sex,temp.sex);
t[i].wYears=temp.wYears;
strcpy(t[i].remark,temp.remark);
n++;
return n;
}
3.5 查找
按学号查找并删除模块的主要功能是用来删除学生基本信息的。在系统保存学生基本信息的前提下,想删除某学生的基本信息,就可以输入学生学号,系统查找该学生资料后,就可以删除了。可以及时对系统进行更新,删除一些没用的信息,可以使系统更加优化。
void search(STUDENT t[],int n)
{
char s[20];
int i;
10
printf("please search name\n");
scanf("%s",s);
i=find(t,n,s);
if(i>n-1)
printf("not found\n");
else
print(t[i]);
}
3.6 修改
按学生学号查找并修改模块的主要功能是用来修改学生基本信息的。在系统保存了某学生的基本信息的前提下,想要查找该学生的基本信息,可以该学生的学号,系统就会显示该学生的基本信息,这样根据提示修改学生的基本信息。
int revise(STUDENT t[])
{
int i,n;
printf("\nplease input num \n");
scanf("%d",&n);
printf("please input record \n");
printf("name no sex wYears remark\n");
printf("-------------------------------------------------------------------\n");
for(i=0;in-1)
printf("no found not deleted\n");
else
{
print(t[i]);
printf("Are you sure delete it(1/0)\n");
scanf("%d",&ch);
if(ch==1)
{
for(j=i+1;j9);
return c;
}
int enter(STUDENT t[])
{
18
int i,n;
printf("\nplease input num \n");
scanf("%d",&n);
printf("please input record \n");
printf("name no sex wYears remark\n");
printf("-------------------------------------------------------------------\n");
for(i=0;in-1)
printf("not found\n");
else
print(t[i]);
}
void print(STUDENT temp)
{
printf("\n\n*****************************TEACHER****************************\n");
printf("name no sex wYears remark\n");
printf("--------------------------------------------------------------------\n");
printf("%-20s%-20s%-20s%-10d%-10s\n",temp.name,temp.no,temp.sex,temp.wYears,temp.remark);
printf("*******************************end*********************************\n");
}
int find(STUDENT t[],int n,char *s) {
int i;
for(i=0;in-1)
printf("no found not deleted\n");
else
{
20
print(t[i]);
printf("Are you sure delete it(1/0)\n");
scanf("%d",&ch);
if(ch==1)
{
for(j=i+1;j=i;j--)
{
strcpy(t[j+1].name,t[j].name);
strcpy(t[j+1].no,t[j].no);
strcpy(t[j+1].sex,t[j].sex);
t[j+1].wYears=t[j].wYears;
strcpy(t[j+1].remark,t[j].remark);
}
strcpy(t[i].name,temp.name);
strcpy(t[i].no,temp.no);
21
strcpy(t[i].sex,temp.sex);
t[i].wYears=temp.wYears;
strcpy(t[i].remark,temp.remark);
n++;
return n;
}
void save(STUDENT t[],int n)
{
int i;
FILE *fp;
if((fp=fopen("record.txt","wb"))==NULL)
{
printf("can not open file\n");
exit(1);
}
printf("\nSaving file\n");
fprintf(fp,"%d",n);
fprintf(fp,"\r\n");
for(i=0;i=0&&id0)
{
flag=1;
strcpy(temp.name,t[j].name);
strcpy(temp.no,t[j].no);
strcpy(temp.sex,t[j].sex);
23
temp.wYears=t[j].wYears;
strcpy(temp.remark,t[j].remark);
strcpy(t[j].name,t[j+1].name);
strcpy(t[j].no,t[j+1].no);
strcpy(t[j].sex,t[j+1].sex);
t[j].wYears=t[j+1].wYears;
strcpy(t[j].remark,t[j+1].remark);
strcpy(t[j+1].name,temp.name);
strcpy(t[j+1].no,temp.no);
strcpy(t[j+1].sex,temp.sex);
t[j+1].wYears=temp.wYears;
strcpy(t[j+1].remark,temp.remark);
}
if(flag==0)break;
}
printf("sort sucess!!!\n"); }
void qseek(STUDENT t[],int n) {
char s[20];
int l,r,m;
printf("\nPlease sort before qseek!\n");
printf("please enter name for qseek\n");
scanf("%s",s);
l=0;r=n-1;
while(l<=r)
{
m=(l+r)/2;
if(strcmp(t[m].name,s)==0)
{
print(t[m]);
return ;
}
if(strcmp(t[m].name,s)<0)
l=m+1;
else
r=m-1;
}
if(l>r)
printf("not found\n"); }
24
int revise(STUDENT t[])
{
int i,n;
printf("\nplease input num \n");
scanf("%d",&n);
printf("please input record \n");
printf("name no sex wYears remark\n");
printf("-------------------------------------------------------------------\n");
for(i=0;i说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日 期: 2014.01.10
27