1、郑州工业应用技术学院 课程设计说明书 题目: 班级档案管理系统 姓 名: 徐朝胜 院 (系): 信息工程学院 专业班级: 15级计算机科学和技术三班 学 号: 指导老师: 王礼云 成 绩: 时间: 年 12 月 5 日至 年 1 月 5 日 郑州工业应用技术学院 课程设计任务书 题目
2、 班级档案管理系统 专业、班级15计算机科学和技术三班学号 姓名 徐朝胜 关键内容: 1.全方面熟悉、掌握C语言基础知识,掌握C程序设计中次序、分支、循环三种结构及数组、函数和C语言基础图形编程等方法,把编程和实际结合起来,增强对不一样问题利用和灵活选择适宜数据结构和算法描述本事,熟悉编制和调试程序技巧,掌握分析结果若干有效方法。 2.深入提升上机动手能力,培养使用计算机处理实际问题能力,养成提供文档资料习惯和规范编程思想,为以后在专业课程中应用计算机系统处理计算、分析、试验和设计等学习步骤打下较扎实基础。
3、 基础要求: 1.设计正确,方案合理; 2.界面友好,使用方便; 3.程序精炼,结构清楚; 4.设计汇报5000字以上,含程序设计说明,用户使用说明,源程序清单及程 序框图。 关键参考资料: [1] 严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,,4. [2] 苏小红,陈惠鹏.C语言大学实用教程(第2版)[M].北京:电子工业出版 社,.6 [3] 苏小红,陈惠鹏. C语言大学实用教程学习指导(第2版)[M].北京: 电子工业出版社,.6 完 成 期 限 : .12.5-.1.5
4、 指导老师署名: 课程责任人署名: 摘要 伴随社会信息量和日俱增和国家招生规模不停扩大,学校需要有一个很好班级档案管理系统,以方便对学生档案进行有效管理。系统应含有既方便老师对学生档案录入和保留还有显示、删除、修改、查询等功效。 班级档案管理系统这个系统名字是在经过和用户商议而确定,在有极 大生存空间下而开始开发,得到了学校和师生们一致好评。 在很多管理系统班级档案管理系统和其它管理系统全部是一个基础系统,本系统含有数据操作方便、高效、快速等优点。该软件是采取
5、功效强大数据库软件开发工具进行开发,含有很好可移植。同时可经过设置密码来控制其访问权限,确保系统数据安全性,使用该系统能够既能把管理人员从繁忙数据统计中解脱出来,使其含有更多精力去从事教务管理政策研究实施,教学计划制订实施和教学质量监督检验,从而全方面提升教学质量,同时也减轻任课老师负担,让其有更多时间投入到教学和科研中,其关键功效是能够便于学校管理。 班级档案系统是学生基础信息数据位主管理,合理管理该系统功效得以顺利实现。 关键字:班级档案;C语言;方便;高效 目 录 摘要 I 目 录 II 第
6、一章 概论 1 1.1 班级档案系统背景 1 1.2 班级档案系统任务和目标 1 第二章 需求分析 2 2.1项目开发目标 2 2.2 系统概述 2 2.3 项目标功效需求 2 2.4 系统开发步骤 3 2.5系统性能要求 3 2.6 系统运行要求 4 第三章 概要设计 5 3.1 程序模块组成 5 3.2 班级档案管理系统 5 3.3 各个程序功效介绍 6 第四章 具体设计 7 4.1 程序模块组成 7 4.2 各个函数关键功效 7 4.3系统功效模块划分 7 第五章 测试 9 5.1 存在问题 9 5.2 测试方案 9 第六章
7、 使用说明书 11 结束语 15 参考文件 16 附录 17 第一章 概论 1.1 班级档案系统背景 在信息技术已经深入人类工作生活今天,计算机软件得到了广泛应用,越来越多政府和企业将其业务纳入计算机软件系统 。 伴随社会进步,体育事业发展,为了提升运动会成绩统计正确,降低设计者们工作量,开发了本系统。 1.2 班级档案系统任务和目标 系统是一个简单班级档案管理系统,能够使老师了解到对应信息。是针对现在现实状况,把管理人员从繁忙数据统计中解脱出来,使其含有更多精力去从事教务管理政策研究实施,教学计划制订实施和教学质量监督检验,从而全方面提升教学质量
8、同时也减轻任课老师负担,让其有更多时间投入到教学和科研中,还有学生档案管理工作关键性,和目前档案管理现实,为了改善这种情况,使档案管理工作真正步入高效,健康轨道从而促进了我们开发了这个系统,以提升级案管理工作效率和满足用户基础需求为目标,实现档案管理工作信息。 第二章 需求分析 2.1项目开发目标 该系统是一个简单班级档案管理系统,能够使老师了解到对应信息。是针对现在现实状况,把管理人员从繁忙数据统计中解脱出来,使其含有更多精力去从事教务管理政策研究实施,教学计划制订实施和教学质量监督检验,从而全方面提升教学质量,同时也减轻任课老师负担,让其有更多时间投入到教学和科研中,还有学
9、生档案管理工作关键性,和目前档案管理现实,为了改善这种情况,使档案管理工作真正步入高效,健康轨道从而促进了我们开发了这个系统,以提升级案管理工作效率和满足用户基础需求为目标,实现档案管理工作信息化。 2.2 系统概述 以广大用户利益为基础,实现对学生或其它用户信息网络化信息化管理,从而实现档案管理工作高效率化,班级档案管理系统是以学生基础信息保留为载体管理系统,它有着很大优越性,是现在市场上同类系统一个有很强竞争力系统,该系统操作简单,每个步骤全部有明确提醒,而去轻易操作,通常见户对其基础操作掌握是完全没有问题,轻易操作时该系统一个亮点。 2.3 项目标功效需求 1
10、管理关键是维护系统正常运行和安全性设置,包含登录用户身份时管理员能够完成添加用户、删除用户、修改密码、查询用户权限和重新登录等功效,和针对未包含到数据库中数据备份和恢复是能够实现根据学号、学生姓名、学生性别、学生年纪、进行查询。 2.修改学生基础信息时候是有限制,不是全部全部能够,在进行学生基础信息修改时,要进行密码确实定,从而为用户信息保护又多了一层。 3.成档案管理基础操作以后,必需有一个能够安全退出系统功效,这么也是确保学生基础信息安全,只有系统安全退出才不会影响系统再次运行。 2.4 系统开发步骤 1.首先因该是对你讲要开发项目进行调研,仔细
11、考察在这个系统开 发过程中可能会碰到问题,还要考察你所要开发项目标可行性,这个项目到底能不能实现,在目前开发环境下是不是有可能将其开发出来,这些全部是必需在决定开发这个系统之前应该做好准备工作。 2.然后是和用户商榷系统名称和部分相关事宜,当然在这个时候还 有一个很关键事情要做就是考虑是不是有足够必需现在去开发这个系统,也就是其用户是不是足够多,市场是在这个系统有很大需求,还有就是考察该系统在生存空间,也就是说到底有多少人在这个系统市场上,用户需求是我们开发这个这个系统目标和基础动机。有一个很关键事情要做就是考虑是不是有足够必需现在去开发这个系统,也就是其用户是不是足够多,市场
12、是在这个系统有很大需求,还有就是考察该系统在生存空间,也就是说到底有多少人在这个系统市场上,用户需求是我们开发这个这个系统目标和基础动机。 3.确定要开发项目和明确要开发项目标名称以后,就是到了要为项目标开发做好早期准备工作时候了,首先要整理相关资料,至于这首先我们能够借住现在互联网和我们学校图书馆,把我们在开发过程可能会用到了东西先有序整理出来这么方便我们在开发时候用。 4.把我们要开发系统划分成多个能够操作模块,尽可能把一个整体问题细化,这么能够一个模块一个模块把问题逐步处理掉,尽可能把每个模块模块图画出来这么话能够方便在开发过程中深入完善和根据模块图上要求进行操作,最
13、终实现我们开发目标。 5.在前面准备工作全部做好了以后就因该进行开发系统源代码依据一个一个模块分析把源代码写好,当然这是一个比较困难过程。 2.5系统性能要求 本系统属于C/S模式构架,本系统数据库系统比较庞大,数据库空间在100MB左右。 2.6 系统运行要求 系统属于模式软件系统,代码使用Delphi编写,数据库管理系统采取了SQL Server数据库管理系统,系统要求在Windows系统下运行。 第三章 概要设计 3.1 程序模块组成 主函数:void main() 录入函数:void GetInfo ()
14、 显示函数 void Display() 保留函数 void Save() 删除函数 void Delete() 修改函数 void Modfiy() 查询函数 void Search() 输出函数:void print() 1. GetInfo()是录入函数,关键是录入学生基础信息。 2. Display()是显示函数,就是把学生基础信息显示在电脑上。 3. Save()是保留函数,就是在把学生基础信息保留下来。 4. Delete()是删除函数,把不要信息删除。 5. Modfiy()是修改函数,修改错误学生
15、基础信息。 6. print() 是输出函数 。 3.2 班级档案管理系统 struct student //设定一个内容为学生信息结构体 { char name[10];//名字长度许可最大为十 char no[10];//学号长度许可最大为十 char sex; int age;//定义年纪为整型 char bnote[100];//备注长度为许可最大100 }; 3.3 各个程序功效介绍 主函数:利用无限
16、次循环比如if(;;)while()和switch()语句实现各函数调用,系统依据输入数字选项来调用对应函数。 录入函数:用来录入学生基础信息。 显示函数:把录入学生基础信息直观显示在桌面上。 保留函数:能够保留学生信息。 删除函数;能够删除学生错误信息。 修改函数:能够修改旧信息,需要输入密码。 查询函数; 方便管理员和学生查询。 退出函数;: 能够用来退出系统以确保学生信息安全。 第四章 具体设计 4.1 程序模块组成 主 函 数:void main( ) 录入函数
17、void GetInfo( ) 显示函数:void Display( ) 保留函数:void save( ) 删除函数:void delete( ) 查询函数:void Search( ) 修改函数:void Modify( ) 菜单函数:void menu select( ) 4.2 各个函数关键功效 录入函数: 随时学生基础信息 菜单函数:显示系统主菜单。 显示函数: 显示全部学生信息。 查询函数: 方便学生查找自己基础信息。 删除函数: 删除
18、某学生信息。 保留函数: 保留好学生基础信息,以免丢失。 4.3系统功效模块划分 保留学生信息 删除学生信息 修改学生信息 查询学生信息 退出系统 结束 整个系统除了主函数外,另外还有14个函数,实现七大功效:录入功效、显示功效、保留功效、删除功效、修改功效、查询功效、退出系统功效。各个函数具体设计说明分别以下: 1.主函数 main() 利用无限次循环for(;;)和swithch()实现各函数调用,系统依据输入数字选项来调用对应函数。 2.菜单选择函数 int menu_select() 这
19、是一个无参函数,关键实现“功效选择”界面,在这个界面里有显示系统九大功效,依据每个功效前面序号进行选择。等实施完每一个函数功效后,返回菜单。 3.代码设计: 初始化函数 STUDENT *init() 这是一个无参函数,里面只有两个语句,它作用是使链表初始化,使head值为NULL和一个清屏语句。比如:没有这个函数话,在你没有输入任何数据情况下,去实施显示功效时候会显示部分乱码! 4.输入统计函数 STUDENT *create() 这是一个无参函数,用来实施学生档案统计输入,当学生为@时停止输入,函数结束后,带回一个链表头指针指向一下个学生信息插在表头。
20、 5.显示统计函数 void print(STUDENT *head) 这是一个不返回值有参函数,形参为“链表头指针”,负责对全部学生成绩统计输出,不足之处就是不能对学生成绩进行分页显示。 6.算法:先将p结点指针指向第一个结点,将p结点(即第一个结点)数据输出。然后再将p结点指针指向p指针指针(即下一结点),将p结点(即第一结点)数据输出。反复实施此步聚直到p指针指向NULL为止。 第五章 测试 5.1 存在问题 在我们编好程序时候其实还有很多问题当然这是一个过程,能够说错误基础上是不可避免,比如说“部分输入格式问题和因为习惯性错误而造成错
21、误等等。 系统调试需要比较扎实基础功和充足细心,c语言中有部分错误并不是直接明了。在这个时候就需要我们有耐心慢慢去找自己错误,有些错误是因为部分不良操作习惯造成,而且往往极难发觉,因为这类错误全部是平时自己不怎么注意,所以就是产生了也极难查出来,这就要求我们平时养成良好习惯。比如花括号使用,我最开始编写一个程序有一个错误,不过我就是怎么也查不出来,而且因为操作习惯不好,整个程序毫无层次感,花括号也是成一列排放,没有一一分层对应。以后实在找不出原因就请教了老师。指导老师看了以后将我程序重新排布了一遍,发觉有一个花括号前后没有对应。其实在简单程序中,花括号缺损能够很快发觉,因为会有直白提醒,不过
22、在较复杂程序中,一个花括号缺损可能会造成其它很多错误产生,假如有良好操作习惯,能够很快发觉这个小问题。所以我认为,我们基础应该牢实!要不然就会犯下很多那种没必需错误。能够说是低级失误! 经过系统调试我学会了很多东西。我们要重视基础,因为我们有时就是因为一个基础知识点没学会,从而产生很多错误。 5.2 测试方案 1. 系统验证技术。 2. 系统确定技术。 3. 系统测试技术。 1.将编好源代码放到C语言运行环境中去运行,经过运行找出其中错误或是输入不规范地方,加以更正,还有就是试一下程序到底能不能运行,是不是满足课程设计题目标要求。 2.把已经整理好源代码放到C语言运行环境去调试一
23、下,就是确定这个源程序代是否正确。 3.用运行系统测试源程序代码。 第六章 使用说明书 根据菜单提醒进行选择。 1表示学生基础信息录入,优异行信息录入完成后,按回车键会弹出第二个界面依据界面进行选择; 2表示信息显示; 3表示信息保留; 4表示信息删除。 5表示信息修改。 6表示信息查询。 7表示安全退出系统。 当保留好学生基础信息是时候你能够经过选择3二保留学生信息,按4时是删除,删除成功以后会弹出你输入学号?假如删除成功话则会说该学生不存在,在按5时会弹出要你输入密码才能修改学生信息,按6时会弹出一个由四个选项组成界面有按1学号查询、2按年纪查询、3按性别查询、按姓
24、名查询。所以只要你依据菜单上提醒操作是不难。欢迎使用!! 输入密码123,进入班级档案管理系统。输入1进行学生基础信息录入,输入7退出学生信息系统,进入下一步操作界面。以下图6.1所表示: 图6.1 输入1,输入学生基础信息,输入第一个学生huang 05 w 20 weida;再输入2就会显示学生基础信息;输入3就会保留学生基础信息;输入4就会删除学生基础信息;输入5就会修改学生基础信息;输入6就会查询学生基础信息;输入7就会退出学生信息系统。以下图6.2所表示: 图6.2 输入2,学生基础信息显示学生信息:hua 01 w 10 jiji;h
25、uang 02 m 11 yougan;再输入2就会显示学生基础信息;输入3就会保留学生基础信息;输入4就会删除学生基础信息;输入5就会修改学生基础信息;输入6就会查询学生基础信息;输入7就会退出学生信息系统。以下图6.3所表示: 图6.3 选择6,查询学生基础信息,输入学生学号02,显示学生基础信息:huang 02 m 11 yougan。再输入2就会显示学生基础信息;输入3就会保留学生基础信息;输入4就会删除学生基础信息;输入5就会修改学生基础信息;输入6就会查询学生基础信息;输入7就会退出学生信息系统。以下图6.4所表示: 图6.4 结束语 经过这次课程设计我学到了
26、很多感觉自己知识不够.这次数据库课程设计“班级档案管理系统”,经过在机房不停调试和修改其中 错误加上验证和测试使得对该系统利用已经能够已经得到了充足应用了。所学数据库知识,并去图书馆查阅了部分书集和上网搜索一部分资粗略设计出该系统。 总体上来说,这次课程设计还是比较成功,充足利用了所学软工程设计,数据库设计,设计出E-R图,步骤图,数据库基础表,从整体计划出系统运行环境和系统实现功效。当然,因为学艺不精,在课程设计过程中也碰到部分问题。其中,画E-R图时,各实体中关系确实定,因为对系统还不够了解而找不到一个正确词来形容;总体计划,材料太多,不易整理;相关数据库技术方面没有多注意,这次课程设
27、计关键只在对整个系统总体思绪设计。其实这些经过最近课程设计认为最关键一点就是:我们一定要自己动手,这么才能真正学到东西。书本知识当然关键,但我们更要学会将书本知识应用到实际中才会发觉错误,也才能改善,才能达成学习最终目标。但我出总结出了一点点经验以下: 1.要对系统功效和要求做出具体分析,并合理分解任务。 2.把分解出来子任务,做给一个相对独立模块。 3.在设计一个模块之前,要简单构想一下总界面显视情况。 4.针对构想出来界面进行程序编写。 即使我课程设计师存在很多问题,究其原因还是因为自己平时没有认真听老师讲课,不过我还是期望老师能够百忙中抽闲看看我课程设计汇报,我将很感
28、谢! 参考文件 [1] 郭翠英.C语言课程设计案例精编[M].北京:中国水利水电出版社..3 [2] 谭浩强.C语言程序设计[M].北京:清华大学出版社..12 [3] 张翔.C语言函数大全[M].北京:清华大学出版社..4 [4] 浦滨.C游戏编程从入门到精通[M].北京: 北京期望电子出版社..5 [5] 陈天洲.C语言高级程序设计[M].北京:人民邮电出版社..4 [6] 杨旭.C语言程序设计案例教程[M].北京: 人民邮电出版社..6 [7] 王为青.C语言高级编程及实例剖析[M].北京:人民邮电出版社..02 [8] 徐慧.C语言实例解析精粹[M].北京:
29、人民邮电出版社..04 [9] 姚大鹏,栾好利,张翼英.C语言程序设计教程习题和上机实训指导[M].北京:中国水利水电出版社..5 [10] 王为青.C语言实例解析[M].北京:人民邮电出版社..02 附录 //**************************************************************************** //**** 说明:密码所在文件在c盘,文件名为1.txt。 //**** 学生基础信息最好保留在C盘,文件名为student.txt。 //*************************
30、
#include
31、r bnote[100];//备注长度为许可最大100 }; void print(bool menu)//打印基础信息 { if (!menu)//主菜单 {printf(" \t \t \t (欢迎使用本班级档案管理系统)\t\t\t\t\n"); printf("★*★*★*★*★*★*★*★*★*★ 欢迎进入我们系统 ★*★*★*★*★*★*★*★*★*★\n\n"); printf("学生基础信息录入 ,press 1\n"); } else { printf("学生基础信息显示 ,press 2\n"); printf
32、"学生基础信息保留 ,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;//文件类型指针型变量 char ch; char a[7]={" "}; int i = 0; if ((fp=fopen("c:\\1.
33、txt","r"))==NULL) //在C盘中建立文件名为1.txt文档来存放密码 { printf("打开文件失败!\n"); exit(0); } ch=fgetc(fp); while (ch!=EOF&&i<6)//循环控制 { a[i] = ch; ch=fgetc(fp); i++;//自加1 } a[6] = '\0';//正常结束标志 if (!strcmp(pas,a)) { return true; } else { printf("密码错误\n"); re
34、turn false;
}
fclose(fp);//关闭一个流,原型是int fclose(FILE*stream)stream为流指针,返回EOF时表示犯错。
}
void GetInfo(struct student *arr,int n)//学生基础信息录入
{
for (int i = 0;i 35、].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 36、
}
}
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 37、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 38、ame no sex age note\n");
printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
printf("please input information:\n");
scanf("%s%s%c%d%s",arr[i].name,arr[i].no,&arr[i].sex,&arr[i].age,arr[i].bnote);
Save(arr,n);
39、flag = true;//设置标志
}
}
if (flag == false)//判定标志
{
printf("该学生不存在!:\n");
}
}
}
void Delete(struct student* arr,int n)//学生基础信息删除
{
char number[10];
bool flag=false;
printf("Delete information:\n");
printf("please input the no:\n");
scanf("%s",number);
for (int 40、 i =0;i 41、h(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- 42、\n");
printf("---------------退出,press 5 ------------\n");
scanf("%d",&temp);
switch (temp)
{
case 1://根据学号查询
{
char num[10];
printf("请输入学号:\n");
scanf("%s",num);
for ( i =0;i 43、
{
printf("%12s%12s%12c%12d%12s\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 44、"please input name:\n");
scanf("%s",num);
for ( i =0;i 45、 {
printf("该学生不存在.\n");
}
}
break;
case 3://根据性别查询
{
char ch;
printf("请输入性别:\n");
//scanf("%c",&ch);
ch = getch();
for ( i =0;i 46、e,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("t该学生不存在.\n");
}
}
break;
case 4://根据年纪查询
{
char num_age;
printf("请输入年纪:\n");
scanf("%d",&num_age);
for ( i =0;i 47、i++)//循环控制
{
if (num_age == arr[i].age)
{
printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
flag = true;
}
}
if (!flag)
{
printf("该学生不存在.\n");
}
}
break;
default 48、
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






