版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 学生基本信息管理系统学生姓名:李俊达学 号:1567159126专 业:软件班 级:1班指导教师:褚燕华日 期:2016 年 1月 5 日内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目学生基本信息管理系统指导教师褚燕华时间一、教学要求1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换
2、。某班学生基本信息管理,包括以下功能:v 从键盘输入包括学号、姓名、性别、出生年月日、籍贯、所在院系、专业、奖惩信息等,并将其保存在磁盘文件里v 具有进行单项查询或多项查询的功能(即按照给定的关键字姓名等找出满足条件的纪录)v 具有插入、修改和删除信息的功能v 具有输出文件数据信息的功能三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少500行代码,不包括注释和花括号)4. 设
3、计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程设计,刘振安,机械工业出版社目 录目 录II
4、I第一章 需求分析41.1 引言41.2 任务概述41.3 数据描述41.4功能需求41.5任务计划5第二章 概要设计62.1 总体设计62.2 数据类型设计(或数据结构设计)82.3接口设计82.3 运行界面设计9第三章 详细设计113.1 输入模块设计113.2 浏览模块设计133.3 查找模块设计153.4 删除模块设计22第四章 测试分析234.1 测试程序执行情况及出现的问题和解决的方法24第五章 课程设计总结24附录:程序代码25参考文献36致谢38第一章 需求分析1.1 引言当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算
5、机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。1.2 任务概述某班学生基本信息管理,包括以下功能:v 从键盘输入包括学号、姓名、性别、出生年月日、籍贯、所在院系、专业、奖惩信息等,并将其保存在磁盘文件里v 具有进行单项查询或多项查询的功能(即按照给定的关键字姓名等找出满足条件的纪录)v 具有插入、修改和删除信息的功能v 具有输出文件数据信息的功能1.3 数据描述struct student long id; 学号char name30; 姓名 int age; 年龄 char
6、sex2; 性别char birthday9; 出生年月日char add80; 地址char faculty15; 院系char major25; 专业;1.4功能需求 输入功能:一次可以输入学生的多种数据的输入 显示功能: 可以浏览多个学生的基本信息 删除功能:对指定学生的指定信息进行删除 修改功能:对指定学生的指定信息进行修改。 查询功能:选择某种方式并输入该信息查询符合条件的学生信息。 文件保存功能:可以将学生基本信息保存到磁盘 文件打开功能:可以打开保存在磁盘中的数据1.5任务计划设计及构思第 18 周 星期一 星期二 星期三 调试及改错 星期四 星期五测试运行 星期六 星期日第二章
7、 概要设计2.1 总体设计 开始是否可行修改合实主菜单1. 录入学生信息2. 浏览学生信息3. 查询学生信息4. 退出系统是否运行 删除 录入 查询 修改 浏览 退出程序设计组成框图:主菜单学生信息录入学生信息浏览信息查询学分查询姓名查询信息编辑信息添加信息删除信息编辑信息添加信息删除2>调用关系 writeinfo()fileopen()editname(int n)editage(int n)editsex(int n)pr()editbir(int n)edit(int n)viewinfo()main()editadd(int n)del(int n)editpr(int n)j
8、sid()edit(int n)(同上)edittel(int n)editemail(int n)del(int n)pr2()editpr(int n)jsname()filesave()3>参数说明 editname(int n)、editage(int n)、editsex(int n) 、editbir(int n) 、editadd(int n) 、edittel(int n)、editemail(int n)、last(int n)、edit(int n)、del(int n)、editpr(int n) 函数中的n都为检索中确定的学生数组下标。2.2 数据类型设计(或数据
9、结构设计)struct student long id; 学号char name30; 姓名 int age; 年龄 char sex2; 性别char birthday9; 出生年月日char add80; 地址char faculty15; 院系char major25; 专业;2.3接口设计表2.1:函数列表函数名函数格式 /即函数首部函数功能 pr();void 输出主界面 fileopen() void 文件打开filesavevoid文件保存pr()void输出检索菜单Jsid()void按姓名检索Jsname()void按学号检索Edit()void 修改Editpr()int
10、修改子菜单Editid()void修改学号Editname()void修改名字Editsex()void 修改性别Editbir()void修改出生年月日Editadd()void修改地址Editfacultyvoid修改院系Editmajorvoid修改专业Lastvoid显示翻页到尾的信息Delvoid删除Writeinfovoid录入信息viewinfovoid查看信息2.3 运行界面设计void main()/主函数int n = 1;char ch;fileopen();/文件打开while (n)pr();ch=getchar();switch(ch)/switch语句选择功能ca
11、se '1':writeinfo();break;case '2':viewinfo();break;case '3':pr2();break;case '4':n=0;break;filesave();void pr()/输出主界面system("cls");printf("*学生信息管理系统*");printf("n-v 1.0.0 -");printf("n您想要:");printf("n 1.录入学生信息");printf(
12、"n 2.浏览学生信息");printf("n 3.检索学生信息");printf("n 4.退出信息管理");printf("n*n");第三章 详细设计3.1 输入模块设计void writeinfo()int a,n=1,m;char ch;while (n)a=stunum;system("cls");printf("ID:");scanf("%d",&stua.id);printf("nName:");scanf(&q
13、uot;%s",&);printf("nAge:");scanf("%d",&stua.age);printf("nSex:");scanf("%s",&stua.sex);printf("nBirthday(E.g 20090101):");scanf("%s",&stua.birthday);printf("nfaculty:");scanf("%s",&stua.
14、add);printf("nTel:");scanf("%s",&stua.faculty);printf("nmajor:");scanf("%s",&stua.major);m=1;while (m)/做一个循环,直到m=0时跳出system("cls");printf("ID:");printf("nName:");printf("%s",);printf("nAge:");p
15、rintf("%d",stua.age);printf("nSex:");printf("%s",&stua.sex);printf("nBirthday:");printf("%s",stua.birthday);printf("nAddress:");printf("%s",stua.add);printf("nfaculty:");printf("%s",stua.faculty);printf(&qu
16、ot;nmajorl");printf("%s",stua.major);printf("n请选择:1.确认并继续 2.重新填写 3.放弃并返回 4.确认并返回");ch=getchar();switch(ch)case '1':m=0;stunum+;break;case '2':stunum,m=0;break;case '3':m=0,n=0;break;/选择此项时,m=0,循环终止case '4':m=0,n=0;a=stunum+;break;3.2 浏览模块设计voi
17、d viewinfo()int count=1,i,n=1,pagenum=1,page=stunum/5+1;/设定变量控制翻页char ch;while (n)system("cls");printf("学号 姓名 年龄 性别 出生年月n");for(i=count-1;i<count+4&&i<stunum;i+)printf("%4d ",stui.id);printf("%12s ",);printf("%4d ",stui.age);pr
18、intf("%4s ",stui.sex);printf("%8s n",stui.birthday);printf("nnn学号 院系 院系 地址n");for(i=count-1;i<count+4&&i<stunum;i+)printf("%4d ",stui.id);printf("%15s ",stui.faculty);printf("%15s ",stui.major);printf("%sn", stui.add
19、);printf("n1.上一页 2.下一页 0.退出 共学生%d人,第%d页,共%d页n",stunum,pagenum,page);ch=getchar();switch(ch)case '1':pagenum-;if(pagenum=0) count=(page-1)*5+1,pagenum=page;else count=(pagenum-1)*5+1;break;case '2':pagenum+;if(pagenum>page) count=1,pagenum=1;else count=(pagenum-1)*5+1;bre
20、ak;case '0':n=0;break;3.3 查找模块设计/*检索界面*void pr2()/输出检索信息界面int a;char ch;while (a)/system("cls");printf("*学生信息管理系统*");printf("n-检 索-");printf("n您想要:");printf("n 1.按学号检索");printf("n 2.按姓名检索");printf("n 3.返回主菜单");printf("
21、;nn-");printf("n*n");ch=getchar();switch(ch)case '1':jsid();break;case '2':jsname();break;case '3':a=0;break;void jsid()int n,i,j=0;/system("cls");printf("*学生信息管理系统*");printf("n-检 索-");printf("n请输入想要检索的学号:");scanf("%
22、ld",&n); for(i=0;i<stunum;i+)if(n=stui.id)printf("学号 姓名 年龄 性别 出生年月n");printf("%4d ",stui.id);printf("%12s ",);printf("%4d ",stui.age);printf("%4s ",stui.sex);printf("%8s n",stui.birthday);printf("nnn学号 院 系 专业 地址n&q
23、uot;);printf("%4d ",stui.id);printf("%15s ",stui.faculty);printf("%15s ",stui.major);printf("%sn", stui.add);j=editpr(i);if(i=stunum)last(n);printf("nError:无此学生。");printf("n*n");void jsname()int n,j,i=0;char m30;/system("cls");pri
24、ntf("*学生信息管理系统*");printf("n-检 索-");printf("n请输入想要检索的姓名:");scanf("%s",m);for(n=0;n<stunum;n+)if(strcmp(m,)=0)/system("cls");printf("学号 姓 名 年龄 性别 出生年月n");printf("%4d ",stun.id);printf("%8s ",);printf(&
25、quot;%4d ",stun.age);printf("%4s ",stun.sex);printf("%8s n",stun.birthday);printf("nnn学号 院 系 专业 地址n");printf("%4d ",stun.id);printf("%15s ",stun.faculty);printf("%15s ",stun.major);printf("%sn", stun.add);i+;if(j=editpr(n)=0)
26、break;if(i=0)printf("nError:无此学生。");if(j!=0)last(n);getchar();getchar();3.4修改模块设计void edit(int n)char ch;int a=1,b;while (a)printf("*学生信息管理系统*");printf("n-修 改-");printf("n请输入你想修改的内容:");printf("n0.学号 1.姓名 2.年龄 3.性别 4.出生年月 5.地址 6.电话 7.majorn");printf(&
27、quot;nn-By dage-");printf("n*n");getchar();ch=getchar();switch(ch)case '0':editid(n);break;case '1':editname(n);break;case '2':editage(n);break;case '3':editsex(n);break;case '4':editbir(n);break;case '5':editadd(n);break;case '6'
28、;:editfaculty(n);break;case '7':editmajor(n);break;b=1;while (b)printf("n确认吗?(y/n)");getchar();ch=getchar();switch(ch)case 'Y':case 'y':b=0;a=0;break;case 'N':case 'n':b=0;break;void editid(int n)printf("n新学号 ");scanf ("%d",&s
29、tun.id);void editname(int n)printf("n新姓名:");scanf("%s",&);void editage(int n)printf("n新年龄:");scanf("%d",&stun.age);void editsex(int n)printf("n新性别:");scanf("%s",&stun.sex);void editbir(int n)printf("n新出生年月");s
30、canf("%s",&stun.birthday);void editadd(int n)printf("n新地址:");scanf("%s",&stun.add);void editfaculty(int n)printf("n院系:");scanf("%s",&stun.faculty);void editmajor(int n)printf("n专业:");scanf("%s",&stun.major);3.4 删除模
31、块设计/*删除*void del(int n)int a;for(a=n;a<stunum;a+)strcpy(,stua+1.name); /拷贝后一个学生信息到前一个人上。stua.age=stua+1.age;strcpy(stua.sex,stua+1.sex);strcpy(stua.birthday,stua+1.birthday);strcpy(stua.add,stua+1.add);strcpy(stua.faculty,stua+1.faculty);strcpy(stua.major,stua+1.major);stunum-;printf(&qu
32、ot;删除成功!press Enter to continue.n"); 第四章 测试分析4.1 测试程序执行情况及出现的问题和解决的方法1>调用pr2()函数(检索界面)一闪而过。解决方法:添加getchar()语句使程序暂停。2>无法有效的控制输出函数循环终止。解决方法:添加全局变量“stunum”,使用该全局变量来记录学生总数,从而控制输出循环的次数。3>查询函数数据量过多时同时输出,先输出的内容无法查看,或需用户自行查看。解决方法:添加getchar()语句使程序暂停,当用户按Enter时继续。4>文件在打开和保存时有问题。 解决方法:调整文件的打开方
33、式,从原来的单纯的w+修改为添加一个if语句,当没有文件时执行w+的操作,否则执行r+。避免了原存储文件被覆盖的问题。第五章 课程设计总结 总体结构我们采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。也可根据自己对题目的理解增加新的功能模块。系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的对话方式进行实验心得:1) 对C语言的编程实践有所认识。2) 在遇到程序调试不通过时,会通过缩小范围的分析来锁定问题所在。3) 通过这次实验,熟悉了从自然语言转换成伪代码再转换为流程图的过程。4) 在程序中设定合适
34、的全局变量,可以简化程序的编写难度。5) 运用函数可以减少编写时的代码量,也使程序条理清晰。6) 通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。随着实验的成功与报告的完成,有点微微的成就感使人难忘。伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去挖掘。对C语言的学习,我会加倍努力。附录:程序代码#include<stdio.h>#include<string.h>#include<stdlib.h>int stunum=0;/*构建结构体*struct student long id;char name30
35、;int age;char sex2;char birthday9;char add80;char faculty15;char major25;stu100;/*声明函数*void pr();/输出主界面void fileopen ();/文件打开void filesave();/文件保存void pr2();/输出检索菜单界面void jsid();void jsname();void editid(int n);void edit (int n);/编辑int editpr(int n);/编辑子菜单void editname(int n );void editage(int n);vo
36、id editsex(int n);void editbir(int n);void editadd(int n);void editfaculty(int n);/facilty void editmajor(int n);/majorvoid last(int n);/显示翻页到尾的信息void del(int n);/删除void writeinfo();/录入void viewinfo();/学生信息查看/*void main()/主函数int n=1;char ch;fileopen();/文件打开while (n)pr();ch=getchar();switch(ch)/switc
37、h语句选择功能case '1':writeinfo();break;case '2':viewinfo();break;case '3':pr2();break;case '5':n=0;break;filesave();void pr()/输出主界面system("cls");printf("*学生信息管理系统*");printf("n-v 1.0.0 -");printf("n您想要:");printf("n 1.录入学生信息"
38、);printf("n 2.浏览学生信息");printf("n 3.检索学生信息");printf("n 5.退出信息管理");printf("n*n");/*文件操作*void fileopen()FILE *fp;int n;if(fp=fopen("data","r+")=NULL)fp=fopen("data","w+");for(n=0;n<100;n+)fread(&stun,sizeof(struct st
39、udent),1,fp);fread(&stunum,4,1,fp);fclose(fp);void filesave()int n;FILE *fp;fp=fopen("data","r+");for(n=0;n<100;n+)fwrite(&stun,sizeof(struct student),1,fp);fwrite(&stunum,4,1,fp);fclose(fp);/*录入函数*void writeinfo()int a,n=1,m;char ch;while (n)a=stunum;system("
40、cls");printf("ID:");scanf("%d",&stua.id);printf("nName:");scanf("%s",&);printf("nAge:");scanf("%d",&stua.age);printf("nSex:");scanf("%s",&stua.sex);printf("nBirthday(E.g 20090101):"
41、;);scanf("%s",&stua.birthday);printf("nAddress:");scanf("%s",&stua.add);printf("nTel:");scanf("%s",&stua.faculty);printf("nE-mail:");scanf("%s",&stua.major);m=1;while (m)/做一个循环,直到m=0时跳出system("cls");print
42、f("ID:");printf("nName:");printf("%s",);printf("nAge:");printf("%d",stua.age);printf("nSex:");printf("%s",&stua.sex);printf("nBirthday:");printf("%s",stua.birthday);printf("nAddress:");pr
43、intf("%s",stua.add);printf("nTel:");printf("%s",stua.faculty);printf("nE-mail");printf("%s",stua.major);printf("n请选择:1.确认并继续 2.重新填写 3.放弃并返回 4.确认并返回");ch=getchar();switch(ch)case '1':m=0;stunum+;break;case '2':stunum,m=0;brea
44、k;case '3':m=0,n=0;break;/选择此项时,m=0,循环终止case '4':m=0,n=0;a=stunum+;break;/*查看目录*void viewinfo()int count=1,i,n=1,pagenum=1,page=stunum/5+1;/设定变量控制翻页char ch;while (n)system("cls");printf("学号 姓名 年龄 性别 出生年月n");for(i=count-1;i<count+4&&i<stunum;i+)printf
45、("%4d ",stui.id);printf("%12s ",);printf("%4d ",stui.age);printf("%4s ",stui.sex);printf("%8s n",stui.birthday);printf("nnn学号 院系 院系 地址n");for(i=count-1;i<count+4&&i<stunum;i+)printf("%4d ",stui.id);printf(&q
46、uot;%15s ",stui.faculty);printf("%15s ",stui.major);printf("%sn", stui.add);printf("n1.上一页 2.下一页 0.退出 共学生%d人,第%d页,共%d页n",stunum,pagenum,page);ch=getchar();switch(ch)case '1':pagenum-;if(pagenum=0) count=(page-1)*5+1,pagenum=page;else count=(pagenum-1)*5+1;b
47、reak;case '2':pagenum+;if(pagenum>page) count=1,pagenum=1;else count=(pagenum-1)*5+1;break;case '0':n=0;break;/*检索界面*void pr2()/输出检索信息界面void jsid();void jsname();int a;char ch;while (a)system("cls");printf("*学生信息管理系统*");printf("n-检 索-");printf("n
48、您想要:");printf("n 1.按学号检索");printf("n 2.按姓名检索");printf("n 3.返回主菜单");printf("nn-");printf("n*n");ch=getchar();switch(ch)case '1':jsid();break;case '2':jsname();break;case '3':a=0;break;void jsid()int n,i,j=0;system("cl
49、s");printf("*学生信息管理系统*");printf("n-检 索-");printf("n请输入想要检索的学号:");scanf("%ld",&n); for(i=0;i<stunum;i+)if(n=stui.id)printf("学号 姓名 年龄 性别 出生年月n");printf("%4d ",stui.id);printf("%12s ",);printf("%4d ",st
50、ui.age);printf("%4s ",stui.sex);printf("%8s n",stui.birthday);printf("nnn学号 院 系 专业 地址n");printf("%4d ",stui.id);printf("%15s ",stui.faculty);printf("%15s ",stui.major);printf("%sn", stui.add);j=editpr(i);if(i=stunum)printf("n
51、Error:无此学生。");printf("n*n");elseif(j=0)goto end;elsesystem("cls");last(n);getchar();end:getchar();void jsname()int n,j,i=0;char m30;system("cls");printf("*学生信息管理系统*");printf("n-检 索-");printf("n请输入想要检索的姓名:");scanf("%s",m);for(
52、n=0;n<stunum;n+)if(strcmp(m,)=0)system("cls");printf("学号 姓 名 年龄 性别 出生年月n");printf("%4d ",stun.id);printf("%8s ",);printf("%4d ",stun.age);printf("%4s ",stun.sex);printf("%8s n",stun.birthday);printf("nnn学号 院 系 专业 地址n");printf("%4d ",stun.id);printf("%15s ",stun.faculty);pri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学前教育与多元文化教育考核试卷
- 2024至2030年中国双面胶版印刷纸行业投资前景及策略咨询研究报告
- 《环境政策对微观主体的影响研究》
- 《微型流化床中菱铁矿磁化焙烧反应特性及动力学研究》
- 全谷物加工技术与全程控制考核试卷
- 《基于深度学习的学生行为识别研究》
- 塑料制品在废弃物处理上的应用考核试卷
- 玻璃制造中的激光和光学通信玻璃考核试卷
- 2024-2030年中国梯级布项目可行性研究报告
- 2024至2030年中国活动车库数据监测研究报告
- 《工程项目审计》课件
- 2024年巴西机器人工具快换装置市场机会及渠道调研报告
- 基础教育质量提升调研报告(3篇模板)
- GB/T 18488-2024电动汽车用驱动电机系统
- DZ∕T 0130-2006 地质矿产实验室测试质量管理规范(正式版)
- 电梯改造工程施工方案
- 数字人文建设方案
- 老年人营养食谱编制(老年人膳食营养课件)
- 非手术患者VTE风险和出血评估表
- MH-T 5064-2023飞机地锚设计与维护技术指南
- 电力工程项目技术标书
评论
0/150
提交评论