《2022年课程设计班级档案管理系统.docx》由会员分享,可在线阅读,更多相关《2022年课程设计班级档案管理系统.docx(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选学习资料 - - - - - - - - - 高级语言程序设计课 程 设 计 报 告 书题目:班级档案治理系统专业:电脑科学与技术学号:同学:指导老师:完成日期:名师归纳总结 - - - - - - -第 1 页,共 29 页精选学习资料 - - - - - - - - - 目录一、设计内容与设计要求 . 11.设计内容 . 12.设计要求 . 1二、程序设计目的 . 2三、程序模块分析 . 21.系统掌握流程图 . 22.部分主要函数算法流程图. 3四、函数功能说明 . 61.函数说明 . 62.用户说明 . 6五、程序测试 . 7六、总结 . 14附录 . 15名师归纳总结 - - -
2、 - - - -第 2 页,共 29 页精选学习资料 - - - - - - - - - 一、设计内容与设计要求对一个有 N 个同学的班级,通过该系统实现对该班级同学的基本信息进行录入、显示、修改、删除、储存等操作的治理;1本系统采纳一个包含N个数据的结构体数组,每个同学的数据应当包括:学号、性别、年龄、备注;2本系统显示这样的菜单:请挑选系统功能项:a 从文件中读入同学基本信息 b 添加新同学的基本信息 c 同学基本信息显示d 同学基本信息储存至文件 e 同学基本信息删除 f 同学基本信息修改要求先输入修改密码g 同学基本信息查询 1 按学号查询 2 按查询 3 按性别查询 4 按年龄查询h
3、 退出系统3执行一个详细的功能之后,程序将重新显示菜单;4将同学基本信息储存到文件中;5进入系统之前要先输入登录密码;说明:登录密码和修改密码使用文 件储存;1 名师归纳总结 - - - - - - -第 3 页,共 29 页精选学习资料 - - - - - - - - - 二、课程设计目的在平常学习 C 语言的过程中,通常只是在课堂上跟随老师的讲解来进行学习,因此在练习上较为缺乏, 而课程设计恰恰补偿了这点,它不仅是对平常学习的一种检测, 同时在做它的过程中也对自己学习的学问进行了稳固和提高,为以后的学习和工作打下了基础;三、程序模块分析1.系统掌握流程图开头密码函数读取添加储存信息信息信息
4、退同学同学信息删除修改查询出信息信息功能功能功能功能功功能功能能终止2 名师归纳总结 - - - - - - -第 4 页,共 29 页精选学习资料 - - - - - - - - - 2.部分主要函数算法流程图开头 开头打开文件 输入添加同学数For 循环 for 循环调用 fscanf函数从输出添加同学 信息文件读取信息终止终止:read 函数 :input 函数3 名师归纳总结 - - - - - - -第 5 页,共 29 页精选学习资料 - - - - - - - - - 开头 开头输入学号密打开文件码错查for循环调用误密码函数strcmp 函数找for循环 调用输入学号失败fpr
5、intf函数输出信息终止输入新信息终止:Delete 函数:modi 函数4 名师归纳总结 - - - - - - -第 6 页,共 29 页精选学习资料 - - - - - - - - - 开头调用 fscanf 函数按按按按学查性年号询别龄查查查询询询该同学是否存在是for 循环 调用否 strcmp 函数输出信息终止:search 函数5 名师归纳总结 - - - - - - -第 7 页,共 29 页精选学习资料 - - - - - - - - - 四、函数功能说明1.函数说明main 函数是程序的入口有调取各个模块的的作用,实现挑选功能;read :读取函数,从文件中读取同学信息;i
6、nput:添加函数,同学基本信息的录入;save :同学信息储存函数;Delete :删除函数;search :查找函数;modi :信息修改函数;secretcode:密码验证函数;里面包含一个 switch 语句,输入密码进入系统后,通过 ag 选项来进行功能挑选;选项 a:调用 read 函数,将在文件中储存的同学信息读入结构体数组中,然后在屏幕上显示出来,按 enter 键便重新返回菜单;选项 b:调用 input函数,输入需要添加的同学人数,显示出需要添加的信息,将信息填写完毕后, 按 enter 键重新返回菜单, 再通过选项 c 将新添加的学 生信息储存到文件中;选项 c:调用 s
7、ave 函数将新输入或修改后的同学信息储存到文件中,在 input函数和 modi 函数调用之后需要调用此函数,然后按enter 键重新返回菜单;选项 d:通过调用 delete 函数,输入需要删除的同学的学号,按 示删除胜利,该同学信息已被从文件中删除,并重新返回菜单;enter 键提选项 e:在调用该函数实现同学信息修改的功能时,需要输入修改密码,当 6 名师归纳总结 - - - - - - -第 8 页,共 29 页精选学习资料 - - - - - - - - - 密码错误时,提示密码错误,此时重新输入密码;密码正确之后,输入需要修改信息的同学的学号, 输出该同学信息, 确认后输入新的同
8、学信息, 按 enter 键重新返回菜单,此时需要通过选项c 将信息储存到文件中;选项 f :通过调用 search 函数,在挑选该项后,会显现一个子菜单,根据需求可以分别通过学号、 、性别和年龄来查询同学信息,按 并重新返回菜单;五、程序测试输入登陆密码 123456 进入系统输入 a 从文件中读入同学信息7 enter 键显示查询信息名师归纳总结 - - - - - - -第 9 页,共 29 页精选学习资料 - - - - - - - - - 输入 b 添加同学的基本信息8 名师归纳总结 - - - - - - -第 10 页,共 29 页精选学习资料 - - - - - - - - -
9、 输入 c 将信息储存至文件输入 d 删除同学信息9 名师归纳总结 - - - - - - -第 11 页,共 29 页精选学习资料 - - - - - - - - - 信息删除胜利再次从文件输入信息时需要删除的信息已被删除10 名师归纳总结 - - - - - - -第 12 页,共 29 页精选学习资料 - - - - - - - - - 输入 e 进行同学信息修改11 名师归纳总结 - - - - - - -第 13 页,共 29 页精选学习资料 - - - - - - - - - 输入 c 将信息储存到文件中输入 f 同学信息的查询12 名师归纳总结 - - - - - - -第 14
10、 页,共 29 页精选学习资料 - - - - - - - - - 13 名师归纳总结 - - - - - - -第 15 页,共 29 页精选学习资料 - - - - - - - - - 六、总结这次的课程设计给了我很大的体会,我能独立的完成这项任务,是对平常的学习和练习的一种确定,同时也提高了自己的信心;在完成它的过程中当然会遇到许多的困难,第一是结构体的定义问题,由于刚开头对程序的不熟识, 在定义结构体内元素数组时显现了错误,后来经过一次次的检测将数组定义到了一个合适的大小;其次在 input 函数中,输入完新同学信息储存至文件中时, 对文件原有信息进行了掩盖,因此为了防止这种情形, 将
11、for 循环中的 i 从 N-n 开头,经过测试这种方法是有效的;最终是删除函数,由于开头定义的年龄是整型变量, 在对文件中的结构体数据进行删除时,在年龄的位置会显现数字 0,从而使从文件中读取数据时显现乱码,于是便将年龄定义成字符型数组,利用 strcpy 函数将结构体数组的下一位元素将前一位元素进行覆盖,从而实现删除功能;虽然较为胜利的完成了课程设计,但由于学问和时间的局限性,系统仍旧存在缺陷,我认为此系统仍能通过链表来进行优化,链表的好处是可以通过指针更好的实现查找、 修改和删除功能, 因此假如有时间便会通过链表来时、使这个系统更加具有有用性;14 名师归纳总结 - - - - - -
12、-第 16 页,共 29 页精选学习资料 - - - - - - - - - 附录源程序清单#includestdafx.h #include stdio.h #include stdlib.h #include string.h #include conio.h #define N 4 struct student/ char no10;/定义一个包含同学信息的结构体数组 学号char name8;/ char sex5;/性别定义全局变量char age5;/年龄char note5;/备注; struct student stuN;/void menu/菜单函数 printfn; pri
13、ntf * * * * * * * * * * * * * * * * n; printf * *n; printf * a.从文件中读入同学基本信息 *n; printf * b. printf * c.printf * d. printf * e.printf * f. printf * g.添加新同学的基本信息 *n; 同学基本信息储存至文件 *n; 同学基本信息删除 *n; 同学基本信息修改 *n; 同学基本信息查询 *n; 退出系统 *n; printf * *n; printf * * * * * * * * * * * * * * * * n; printfn; printf 请
14、输入选项 :a gn; void input/ 同学基本信息的录入 15 名师归纳总结 - - - - - - -第 17 页,共 29 页精选学习资料 - - - - - - - - - int i; int n; printf 请输入添加同学数: ; scanf%d,&n; fori=N-n;iN;i+ printf 请输入同学的基本信息 :n; printfno:n; scanf%s,stui.no; printfname:n; scanf%s,stui.name; printfsex:n; scanf%s,stui.sex; printfage:n; scanf%s,stui.age;
15、 printfnote:n; scanf%s,stui.note; printfn; printf请检查信息是否输入正确!n; printfn; fori=N-n;iN;i+ printf%s %s %s %s %sn,stui.no,stui.name,stui.sex, stui.age,stui.note; void save / 同学信息储存 FILE * fp; int i; fp= fopene:student.txt,w; if fp = NULL printf 文件不存在 .n; exit0; fori=0;iN;i+/ 在此处判定所占长度调整同学信息存入文件中的格式ifstr
16、lenstui.name=4 16 名师归纳总结 - - - - - - -第 18 页,共 29 页精选学习资料 - - - - - - - - - fprintffp,%s %s %s %s %sn,stui.no,stui.name,stui .sex, stui.age,stui.note; ifstrlenstui.name=6 fprintffp,%s %s %s %s %sn,stui.no,stui.name,stui.sex, stui.age,stui.note; fclosefp; fflushfp; printf 储存胜利! n; void Delete/ 删除函数;
17、FILE*fp; fp=fopene:student.txt,w; char number10; int f; bool flag=false; printf 删除同学信息 :n; printf 请输入学号 :n; scanf%s,number; for int i =0;iN;i+ if .strcmpnumber,stui.no forf=i;fN;f+/调用 strcpy函数令数组中的下一位元素将上一位覆盖从而实现删除功能 strcpystuf.name,stuf+1.name; strcpystuf.note,stuf+1.note; strcpystuf.no,stuf+1.no;
18、strcpystuf.sex,stuf+1.sex; strcpystuf.age,stuf+1.age; flag=true; 17 名师归纳总结 - - - - - - -第 19 页,共 29 页精选学习资料 - - - - - - - - - if.flag printf 该同学不存在 .:n; Delete; fori=0;iN;i+ fprintffp,%s %s %s %s %sn,stui.no,stui.name,stui.sex, stui.age,stui.note; printf 删除胜利! n; fclosefp; void search/ 查找函数 int f; F
19、ILE*fp; fp=fopene:student.txt,rb; forf=0;fN;f+ fscanffp,%s%s%s%s%s,stuf.no,stuf.name,stuf.sex,stuf.ag e,stuf.note; bool flag=false;/ int m; int i; 定义一个 bool 类型进行判定printf 1 按学号查询 n; printf 2 按查询 n; printf 3 按性别查询 n; printf 4 按年龄查询 n; printf 请输入选项: ; printfn; scanf%d,&m; switchm case 1: char num10; 18
20、 名师归纳总结 - - - - - - -第 20 页,共 29 页精选学习资料 - - - - - - - - - printf 请输入学号 :n; scanf%s,num; for i=0;iN;i+ if .strcmpnum,stui.no ifstrlenstui.name=4 printf%s %s %s %s %sn,stui.no,stui.name,stui.sex, stui.age,stui.note; ifstrlenstui.name=6 printf%s %s %s %s %sn,stui.no,stui.name,stui.sex, stui.age,stui.n
21、ote; flag=true; if.flag printf 该同学不存在 .n; break; case 2: printf 请输入 :n; char na10;/ 定义一个的数组 scanf%s,na; for i =0;iN;i+ if .strcmpna,stui.name ifstrlenstui.name=4 printf%s %s %s %s %sn,stui.no,stui.name,stui.sex, stui.age,stui.note; ifstrlenstui.name=6 19 名师归纳总结 - - - - - - -第 21 页,共 29 页精选学习资料 - - -
22、 - - - - - - printf%s %s %s %s %sn,stui.no,stui.name,stui.sex, stui.age,stui.note; flag = true; if .flag printf 该同学不存在 .n; break; case 3: char ch5; printf 请输入性别 :n; scanf%s,ch; fori=0;iN;i+ if .strcmpch,stui.sex ifstrlenstui.name=4 printf%s %s %s %s %sn,stui.no,stui.name,stui.sex, stui.age,stui.note
23、; ifstrlenstui.name=6 printf%s %s %s %s %sn,stui.no,stui.name,stui.sex, stui.age,stui.note; flag = true; if .flag printft 该同学不存在 .n; break; case 4: char num_age5; printf 请输入年龄 :n; 20 名师归纳总结 - - - - - - -第 22 页,共 29 页精选学习资料 - - - - - - - - - scanf%s,&num_age; for i =0;iN;i+ if .strcmpnum_age,stui.age
24、 ifstrlenstui.name=4 printf%s %s %s %s %sn,stui.no,stui.name,stui.sex, stui.age,stui.note; ifstrlenstui.name=6 printf%s %s %s %s %sn,stui.no,stui.name,stui.sex, stui.age,stui.note; flag = true; if .flag printf 该同学不存在 .n; break; default: break; void modi/ 信息修改函数FILE*fp;/ 定义修改密码文件的指针FILE*fp1;/ 定义同学信息文
25、件的指针 char a7; char b7; char c10; char ch; int i=0; int f; bool temp=false; 21 名师归纳总结 - - - - - - -第 23 页,共 29 页精选学习资料 - - - - - - - - - fp1=fopene:student.txt,r; forf=0;fN;f+/ 从文件中将信息读到结构体中fscanffp1,%s%s%s%s%s,stuf.no,stuf.name,stuf.sex,stuf.a ge,stuf.note; fclosefp1; printf 请输入修改密码 :n; scanf%s,b; i
26、ffp=fopene:1.txt,r=NULL printf 打开文件夹失败! ; exit0; ch=fgetcfp; whilech.=EOF&i6 ai = ch; ch=fgetcfp; i+; a6 = 0; fclosefp; while1 if .strcmpa,b break; else printf密码错误!请重新输入密码:n; scanf%s,b; printf请输入需要修改信息同学的学号:n; scanf%s,c; forf=0;fN;f+ if .strcmpc,stuf.no 22 名师归纳总结 - - - - - - -第 24 页,共 29 页精选学习资料 - -
27、 - - - - - - - printf%s %s %s %s %sn,stuf.no,stuf.name,stuf.sex,stuf .age,stuf.note; printfn; printf 请输入新的信息: n; printfno:n; scanf%s,stuf.no; printfname:n; scanf%s,stuf.name; printfsex:n; scanf%s,stuf.sex; printfage:n; scanf%s,stuf.age; printfnote:n; scanf%s,stuf.note; temp=true; break; if.temp prin
28、tf 该同学不存在! n; int secretcodechar b6/ 密码验证函数 FILE*fp; char c7; int i=0; char ch; if fp=fopene:2.txt,r=NULL printf 打开文件失败 .n; exit0; ch=fgetcfp; while ch.=EOF&i6 23 名师归纳总结 - - - - - - -第 25 页,共 29 页精选学习资料 - - - - - - - - - ci = ch; ch=fgetcfp; i+; c6 = 0; 1 if .strcmpb,c/判定字符串 b 和 c 是否相等,是返回值0,否返回值 re
29、turn 0; else return 1; fclosefp; void read/ 从文件中读取同学信息 int i; FILE*fp; fp=fopene:student.txt,r; fori=0;iN;i+ fscanffp,%s%s%s%s%s,stui.no,stui.name,stui.sex,stui.ag e,stui.note; ifstrlenstui.name=4 printf%s %s %s %s %sn,stui.no,stui.name,stui.sex, stui.age,stui.note; ifstrlenstui.name=6 printf%s %s %s %s %sn,stui.no,stui.name,stui.sex, stui.age,stui.note; printfn; printf 读取胜利! n; 24 名师归纳总结 - - - - - - -第 26 页,共 29 页精选学习资料 - - - - - - - - - fclosefp; mainint argc, char* argv char a7; char n; int code; printf 请输入登陆密码: n; while1 scanf%s,a; code=secretcodea; ifcode.=0 prin