版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计课程设计报告设计题目:学生信息管理系统专 业 电子信息工程班 级学 生指导教师.成易ftN次字年 学期设计任务:C语言课程设计任务书及指导书5题目:学生信息管理系统功能:学生信息管理系统,每个学生信息作为一条记录,包括学号、姓名、 性别、出生年月、专业、班级、家庭地址、宿舍号码等。系统要求实现以下功能:1、输入功能:录入学生信息(包括学号、姓名、出生年月、专业等);2、显示功能:完成学生记录的显示;3、查找功能:完成按姓名或姓名查找学生的相关记录,并显示。要求:1、用C语言实现程序设计;2、利用结构体数组实现学生信息的数据结构设计;3、系统的各个功能模块要求用函数的形式实现;4、
2、界面友好(良好的人机交互),程序加必要的注释。第一部分(20%)第二部分(20%)第三部分(30%)第四部分(30%)报告成绩:指导教师:预习报告(20%):平时成绩(10%):验收答辩成绩(50%):设计报告成绩(20%):报告撰写要求:报告内容不能雷同。字体工整,版面整洁,图表规范,格式分明。流程图用钢笔或油性笔画,不能使用铅笔。如不满足以上要求中的任意一条,发回重写;严重者,给予不及格。总评成绩:一、总体设计一.模块划分 总体分为4大板块,分别为:1、输入信息模块:输入信息并将信息保存到文件当中:2、浏览信息模块:显示需要全部的学生信息:3、编辑信息模块:输入密码,修改或删除学生信息:4
3、、修改密码模块:修改系统密码;5、系统初始化模块:删除保存的数据和修改后的密码,初始化系统。二.数据结构#define N 100/*所能容纳的数据数量*/struct student int number;char name10;char gender6;int birthday;char major18;char Class10;char address30;char dormitory10;stuN;三.函数原型声明1、int menu1();主菜单输出函数2、int menu2();浏览选项子菜单输出函数3、int menu3();编辑选项子菜单输出函数4、void input();信
4、息输入函数5、void scan();浏览学生信息子函数6、void display();信息显示函数7、 void save(int n);将输入的信息保存为文件8、void edit();编辑学生信息子函数9、 void search(int s);查找函数10、 void revise_info();信息修改函数11、void code();密码管理函数12、void del();信息删除函数13、void recover();初始化程序二、功能实现main()(流程图)各功能模块详细流程图(1)、输入信息模块输入人数一一输入信息一一保存信息至文件(2)、浏览信息模块、全部显示:从文件中
5、读取信息至结构体一一输出信息、按姓名查找:输入姓名一一从文件中读取信息至结构体一一查找姓名输出信息、按学号查找:输入学号一一从文件中读取信息至结构体一一查找学号输出信息(3)、编辑信息模块、修改信息:输入学号一一从文件中读取信息至结构体一一查找学号 选择修改项目一一修改信息一一保存信息至文件、删除信息:输入学号一一从文件中读取信息至结构体一一查找学号确认删除一一删除信息一一保存剩余信息至文件(4)、修改密码模块从文件中读取旧密码一一输入旧密码一一输入新密码一一保存至文件 修改成功(5)、系统初始化模块删除原文件建立空白文件三、测试及调试(测试方案、存在的问题及解决方法)1、主菜单与子菜单无法建
6、立联系,即输入相应的选项后不能运行相应的子函数。分析与解决:函数的结构出现了一些问题,最终在老师的帮助下得以解决。2、保存数据时无法调用文件(软件提示:cannot open Debug/学生管理系统.exefor writing”)。分析与解决:原以为是程序某个地方有错误,于是检查了好长时间的程序, 还向QQ群好友进行了求助。最终在网上查到的答案的提醒下,删除了 “学 生管理系统.exe ”程序并重新进行了编译,问题因此得以解决。3、用feof()函数判断文件中信息是否读取完毕时导致输出的信息总是比实际信息多一组分析与解决:在网上搜素该函数的具体用法后,才发现这是这个函数的弊 端所在,读到文
7、件中信息的最后,还要多执行一次循环。最终,我采用了 先读出文件中信息的组数,然后在得到的组数的基础上减1的方法从头输 出信息。4、编写密码管理子函数时,每次启动程序时密码都会初始化分析与解决:采用了文件的方法,将密码保存在文件中。5、显示信息时出现乱码分析与解决:该错误是由于给字符数组赋值时使用了“&”的同时使用了 数组名进行赋值,二者发生了冲突导致。在王栋老师的指导下,删除了赋 值符号“&”,问题得以解决。6、运行程序的时候,只有本次存进去的信息才能实现查找功能分析与解决:该错误是由于每次运行程序的时候没有将以前存在文件中的 信息读取到内存当中导致。四、总结1、对C语言知识掌握程度得到了很大
8、的提高,对C语言的编程实践有了比较深刻的认识。2、在遇到程序调试不通过时,学会通过缩小范围的分析来锁定问题所在。3、通过这次实验,熟悉了从自然语言转换成伪代码再转换为流程图的过程。4、在程序中设定合适的全局变量,可以简化程序的编写难度。5、运用函数可以减少编写时的代码量,也使程序条理清晰。6、通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。随着实验的成功与报告的完成,有点微微的成就感使 人难忘。伴随着学习的深入,我发现高深的东西还有很多很多,等待着我 自己去挖掘。对C语言的学习,我会加倍努力。附件:源程序代码/* 学生管理系统 */#include#incl
9、ude#include#include/*控制台输入输出库函数*/int menu1();/*主菜单输出函数*/int menu2();/*浏览选项子菜单输出函数*/int menu3();/*编辑选项子菜单输出函数*/void input();/*信息输入函数*/void scan();/*浏览学生信息子函数*/void display();/*信息显示函数 */void save(int n);/*将输入的信息保存为文件*/void edit();/*编辑学生信息子函数*/void search(int s);/*查找函数*/void revise_info();/*信息修改函数 */vo
10、id code();/*密码管理函数 */void del();/*信息删除函数 */void recover();/*初始化程序*/#define N 100/*所能容纳的数据数量*/struct studentint number;char name10;char gender6;int birthday;char major18;char Class10;char address30;char dormitory10;stuN;/*/学生信息结构体*/性别宿舍int i,n;int a,b,c;int code0=123456;long longBytes;FILE *fp;FILE *
11、co;/*/*/*/*传递选项的全局变量*/初始密码 */读取文件长度的变量*/创建与保存数据的文件student联系的指针变量*/*主函数 */void main()system(color 2e);/*设置文本背景颜色*/co=fopen(code”,ab+);fseek(co,0,SEEK_SET);fseek(co,0,SEEK_END);longBytes=ftell(co);if(longBytes=0)fprintf(co,%d”,code0);fclose(co);/*/*判断是否有code文件,如果不存在则建立*/获取文件code的长度,以判断文件中是否有数据*/fp=fop
12、en(student,ab+);fclose(fp);/*判断是否有student文件,如果不存在则建立*/while(1) a=menu1();/*引入主菜单*/switch(a)case 1:input();break;/*调用信息输入子函数*/case 2:scan();break;/*调用浏览信息子函数*/case 3:edit();break;/*调用编辑信息子函数*/case 4:code();break;/*调用密码管理子函数*/case 5:recover();break;case 0:exit(1);break;/*退出程序 */default:system(CLS);/*
13、主菜单输出函数 */int menu1()int ml;printf(ntt学生管理系统);printf(nnnttt1、录入学生信息,printf(nntt t2、浏览学生信息,printf(nnttt3、编辑已有信息,printf(nnttt4、修改密码”);printf(nnttt5、系统初始化”);printf(nntt 仞、退出系统”);printf(nnntt);printf(nntt请输入您的选择:”);scanf(%d”,&m1);/*读取选项值 */return m1;/*返回选项值 */ /* 浏 览选项子菜单输出函数 */ int menu2()int m2;printf
14、(ntt浏览学生信息);printf(nnnttt1、显示全部信息”);printf(nntt t2、按姓名查找”);printf(nnttt3、按学号查找”);printf(nnttt4、返回主菜单”););printf(nntt 仞、退出系统”);printf(nnnttprintf(nntt请输入您的选择:”);scanf(%d”,&m2);/* 读取选项值 */return m2;/* 返回选项值 */ /* 编 辑选项子菜单输出函数 */ int menu3()int m3;printf(ntt编辑已有信息);printf(nnnttt1、修改信息,printf(nntt t2、删除
15、信息”);printf(nnttt3、返回主菜单”);printf(nntt 仞、退出系统”);printf(nnntt);printf(nntt请输入您的选择:”);scanf(%d”,&m3);/* 读取选项值 */return m3;/* 返回选项值 */ /* 信 息输入函数 */ void input()system(CLS);/* 清屏 */printf(n请输入需要录入信息的学生人数:,scanf(%d”,&n);system(CLS);/* 清屏 */printf(ntt信息录入);for(i=0;in;i+)/* 输入多个学生的信息*/printf(nnttt 学 号:”);
16、scanf(%d”,&stui.number);printf(nttt 姓名:”);scanf(%s”,);printf(nttt 性另 lj:);scanf(%s”,stui.gender);printf(nttt 出生年月:”);scanf(%d”,&stui.birthday); printf(nttt 专业:”);scanf(%s”,stui.major); printf(nttt 班级:”);scanf(%s”,stui.Class);printf(nttt 家庭地址:”);scanf(%s”,stui.address); printf(nttt 宿舍号码:”);s
17、canf(%s”,stui.dormitory);printf(ntt);save(n);/*调用保存信息函数*/printf(ntt数据保存成功!”);printf(nn按任意键返回主菜单!”);getch();system(CLS);/* 清屏 */ /* 浏 览学生信息子函数 */void scan()system(CLS);b=menu2();switch(b)case 1:display();break;case 2:search(2);break;case 3:search(3);break;case 4:system(CLS);break;case 0:exit(1);break
18、;default:system(CLS);/* 清屏 */*引入浏览子菜单*/*调用显示全部信息子函数*/*调用按姓名查找信息函数*/*调用按学号查找信息函数*/* 清屏,返回主菜单 */* 退出程序 */* 编 辑学生信息子函数 */ void edit() int m,n;*/system(CLS);/* 清屏printf(n请输入密码(初始密码123456):,scanf(%d”,&m);co=fopen(”code”,”rb”);fscanf(co,”%d”,&n);fclose(co);if(m=n)/*验证密码是否正确*/system(CLS);/*清屏*/c=menu3(); s
19、witch(c) /*引入编辑选项子菜单*/case 1:revise_info();break;/*调用修改信息子函数*/case 2:del();break;/*调用删除信息子函数*/case 3:system(CLS);break; /*清屏,返回主菜单*/case 0:exit(1);break;default:system(CLS);/*退出程序*/elseprintf(nt 密码错误!”);getch();system(CLS);/* 清屏 */void save(int n)if(fp=fopen(”student”,”ab+”)=NULL)/*打开文件是否失败*/printf(
20、文件student打开失败!n);/*显示打开文件失败信息*/getchar();exit(1);/* 退出程序 */for(i=0;in;i+)/* 向文件 information 中与数据if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(n保存数据失败!”);fclose(fp);/* 关闭文件 */* 信 息保存函数 */* 信 息显示函数 */*/void display() system(CLS);/* 清屏 */n=0; fp=fopen(”student”,”rb”);/* 打开文件 */while(!feof(fp)
21、fread(&stun,sizeof(struct student),1,fp); n+; fclose(fp);/* 关闭文件 */n=n-1;for(i=0;in;i+)printf(nttprintf(nnttt 学printf(nnttt 姓printf(nnttt 性/*读取所有保存的信息*/全部信息号:d,stui.number);名:s”,);另 ij :%s”,stui.gender););printf(nnttt 出生年月:d”,stui.birthday);printf(nnttt 专业:s”,stui.major);printf(nnttt 班级:s”,
22、stui.Class);printf(nnttt 家庭地址:s”,stui.address);printf(nnttt 宿舍号码:s”,stui.dormitory);printf(nntt);printf(-ntt按任意键继续查看下一组学生信息!”);getch();system(cls);printf(ntt全部信息显示完毕!nn按任意键返回主菜单!”);getch();/* 清屏 */system(CLS);/* 按姓名、学号查找信息函数 */ void search(int s)char s_name10;int s_number;/* 清屏 */system(CLS);if(s=2)
23、/*按姓名查找*/printf(n请输入需要显示信息的学生的姓名:,scanf(%s”,s_name);if(s=3)/*按姓名查找 */printf(n请输入需要显示信息的学生的学号:,scanf(%d”,&s_number);fp=fopen(”student”,”rb”);/*打开文件*/system(CLS);/* 清屏 */for(i=0;iN;i+)fread(&stui,sizeof(struct student),1,fp);if(strcmp(s_name,)=0|s_number=stui.number)/*输出所查找的信息*/printf(ntt信息查找
24、);printf(nnttt 学printf(nnttt 姓printf(nnttt 性号:d,stui.number);名:s”,);另 j :%s,stui.gender);printf(nnttt 出生年月:d”,stui.birthday);printf(nnttt 专业:s”,stui.major);printf(nnttt 班 级:s”,stui.Class);printf(nnttt 家庭地址:s”,stui.address);printf(nnttt 宿舍号码:s”,stui.dormitory);printf(nntt);break;/* 关闭文件 */*
25、清屏 */fclose(fp);printf(nn按任意键返回主菜单!”);getch();system(CLS);/* 信 息修改函数 */void revise_info()int x,y;system(cls);printf(n请输入学号:”);scanf(%d”,&x);system(cls);n=0;fp=fopen(student,rb);while(!feof(fp)fread(&stun,sizeof(struct student),1,fp);n+;fclose(fp);n=n-1;for(i=0;in;i+)if(x=stui.number)/*清屏*/*读取需要修改信息的
26、学生的学号*/*清屏*/*打开文件*/*关闭文件*/* 修改所信息*/break;if(i=n)system(CLS);printf(-n无此学生的信息!”); elseprintf(ntt修改信息);printf(nntt1、学号心2、姓名”);printf(nntt3、性别tt4、出生年月”);printf(nntt5、专业tt6、班级”);printf(nntt7、家庭地址tt8、宿舍号码”);printf(nntt);printf(nn请选择需要修改的项目(每次只能修改一项):, scanf(%d”,&y);system(cls);/* 清屏 */printf(n请输入修改后的信息:)
27、;switch(y)case 1:scanf(%d,&stui.number);break;case 2:scanf(%s”,);break;case 3:scanf(%s”,stui.gender);break;case 4:scanf(%d”,&stui.birthday);break;case 5:scanf(%s”,stui.major);break;case 6:scanf(%s”,stui.Class);break;case 7:scanf(%s”,stui.address);break;case 8:scanf(%s”,stui.dormitory);break
28、;default:printf(选项有误!”);printf(ntt 修改完毕!”);fp=fopen(”student”,”wb”);/* 清空文件 student 中的数据 */fclose(fp);save(n);printf(nn按任意键返回主菜单!”);getch();system(CLS);/* 清屏 */ /* 密码管理函数 */ void code()int code1,code2;/* 清屏 */system(CLS);co=fopen(”code”,”rb”);fscanf(co,”%d”,&code0);fclose(co);printf(n请输入原密码(初始密码1234
29、56):,scanf(%d”,&code1);if(code1=code0)system(CLS);printf(n请输入新密码:);scanf(%d”,&code2);printf(n密码修改完毕!”);getch();co=fopen(code,wb);fprintf(co,%d”,code2);fclose(co);elseprintf(n 密码错误!”);getch();system(cls);/*验证密码/* 清屏 */*/* 清屏 */* 信 息删除函数 */ void del()int x;char j;system(cls);/*清屏 */printf(n请输入学号:”);scanf(%d”,&x);/*读取需要删除信息的学生的学号 */system(cls);/*清屏 */fp=fopen(student”,”rb”);/*打开文件*/n=0;while(!feof(fp)fread(&stun,sizeof(struct student),1,fp);n+;n=n-1;for(i=0;in;i+)/* 查找信息 */if(x=stui.number)printf(nttprintf(n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度全国注册税务师执业资格考试工作计划
- Unit 9 Can you come to my party Section A 2a - 2d 英文说课稿2024-2025学年人教版英语八年级上册
- 第2章《物质转化与材料利用》单元练习(解析版)
- 2025年度内部审计计划报告
- 公共城市管理基础知识
- 2025年学校财务出纳工作计划范文
- Unit 6 Lesson 33说课稿 2023-2024学年冀教版英语八年级下册
- 2025年医院护士工作计划范文
- 2025年质检员办公室年度工作计划
- 2025教育培训机构项目创业项目计划书
- 陕西省安康市石泉县2023-2024学年九年级上学期期末考试英语试题
- 2024立式圆筒形钢制焊接常压储罐在用检验技术规范
- 人教版高中生物必修一同步练习全套(含答案解析)
- 2023年非标自动化工程师年度总结及来年计划
- 2023-2024学年甘肃省嘉峪关市酒钢三中高三上数学期末学业质量监测试题含解析
- 水利机械施工方案
- 悬挑式脚手架验收记录表
- 电动叉车安全操作规程
- 静钻根植桩施工组织设计
- 工程精细化管理
- 柴油供货运输服务方案
评论
0/150
提交评论