课程设计报告模板.docx
- 文档编号:29607285
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:30
- 大小:199.82KB
课程设计报告模板.docx
《课程设计报告模板.docx》由会员分享,可在线阅读,更多相关《课程设计报告模板.docx(30页珍藏版)》请在冰豆网上搜索。
课程设计报告模板
内蒙古科技大学
本科生课程设计说明书
题目:
C语言课程设计
——学生基本信息管理系统
学生姓名:
王志鹏
学号:
1276807336
专业:
12级计算机
班级:
3班
指导教师:
孙涛老师
内蒙古科技大学课程设计任务书
课程名称
C语言课程设计
设计题目
学生基本信息管理系统
指导教师
孙涛老师
时间
2013-2014秋学期第17、18周
一、教学要求
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
二、设计资料及参数
每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。
某班学生基本信息管理,包括以下功能:
v从键盘输入包括学号、姓名、性别、出生年月日、籍贯、所在院系、专业、奖惩信息等,并将其保存在磁盘文件里
v具有进行单项查询或多项查询的功能(即按照给定的关键字姓名等找出满足条件的纪录)
v具有插入、修改和删除信息的功能
v具有输出文件数据信息的功能
三、设计要求及成果
1.分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)
2.写出详细设计说明(至少包括功能实现分析和模块流程图)
3.编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告(请严格按照模板进行排版)
四、进度安排
第一天 选择课程设计题目,分析课题的要求
第二天 编程
第三天 编程及调试
第四天 写课程设计报告
第五天 提交课程设计报告(打印稿及电子稿)
五、评分标准
1.根据平时上机考勤、表现和进度,教师将每天点名和检查
2.根据课程设计完成情况,必须有可运行的软件。
3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。
六、建议参考资料
1.《C语言程序设计》,谭浩强,清华大学出版社
2.《C语言程序设计课程设计》,刘振安,机械工业出版社
目录
内蒙古科技大学课程设计任务书I
第一章需求分析3
1.1引言3
1.2任务概述3
1.3数据描述3
1.4功能需求3
1.5性能需求3
1.6运行需求4
1.7任务计划4
第二章概要设计5
2.1总体设计5
2.2数据类型设计(或数据结构设计)5
2.3接口设计//函数声明5
2.4运行界面设计5
第三章详细设计7
第四章测试分析8
4.1测试程序执行情况8
4.2出现的问题和解决的方法8
第五章用户手册(可选)9
5.1使用说明9
5.2运行说明9
第六章课程设计总结10
附录:
程序代码11
参考文献12
致谢13
第一章需求分析
1.1引言
当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
1.2教学要求
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
1.3任务概述与计划
某班学生基本信息管理,包括以下功能:
v从键盘输入包括学号、姓名、性别、出生年月日、籍贯、所在院系、专业、奖惩信息等,并将其保存在磁盘文件里
v具有进行单项查询或多项查询的功能(即按照给定的关键字姓名等找出满足条件的纪录)
v具有插入、修改和删除信息的功能
v具有输出文件数据信息的功能
第二章概要设计
2.1总体设计
2.2数据类型设计(或数据结构设计)接口设计函数声明
1.文件载入函数(voidfile1(void))
1)函数原形:
voidfile1(void)
2)功能:
采用动态内存分配和链表结构。
建立打开“student2.dat”文件保存数据。
并建立头指针为head_1的单链表。
3)变量及类型:
STUMSG*stu,*p;定义结构体指针
FILE*fp;定义文件指针
4)说明:
执行操作前先执行voidfile1(void)通过动态内存分配建立打开“student2.dat”文件保存数据。
建立头指针为head_1的单链表。
2.录入学生信息:
(voidadd_message())
1)函数原形:
voidadd_message()
2)功能:
采用动态内存分配和链表结构。
利用dowhile、while循环结构依次输入学生的基本信息将信息保存在内存中建立的链表里。
3)变量及类型:
STUMSG*stu,*p;定义结构体指针
chark;用来接收输入的(y/n)以便通过dowhile判断是否继续添加信息
p=head_1;将结构体下定义的头指针head_1赋给p
4)说明:
执行函数添加完成后需要去往文件操作保存。
3.删除学生信息(voiddel_message())
1)函数原形:
voiddel_message()
2)功能:
利用strcmp函数、dowhile、while循环结构通过学号找到要删除的学生并利用链表执行删除操作。
将信息保存在内存中建立的链表里。
3)变量及类型:
STUMSG*p,*q;定义结构体指针
charno[10];定义输入的待比较变量
chark,ch;用来接收输入的(y/n)以便通过dowhile判断是否删除信息
p=head_1;将结构体下定义的头指针head_1赋给p
4)说明:
执行完删除函数后需要去往文件操作保存。
4.修改学生信息(voidmodify_message())
1)函数原形:
voidmodify_message()
2)功能:
利用strcmp函数、dowhile、while循环结构通过学号找到要修改的学生并利用链表执行修改操作。
并将修改后的信息保存在内存中建立的链表里。
3)变量及类型:
STUMSG*p;定义结构体指针
charno[30];定义输入的待比较变量
chark;用来接收输入的(y/n)以便通过dowhile判断是否继续修改信息
p=head_1;将结构体下定义的头指针head_1赋给p
4)说明:
执行完修改函数后需要去往文件操作保存。
5.利用姓名查找学生个人信息(voidsearch1())
利用strcmp函数、dowhile、while循环结构通过学号找到要查找的学生并将该学生基本信息显示出来。
6.查找全部信息(voidsearch3())
利用strcmp函数、dowhile循环结构通过链表将所有学生的全部信息显示出来。
4.数据结构
typedefstructstudentmessage
{
charname[20];//姓名
charnum[20];//学号
charsex[5];//性别
charcollage[20];//学院
charcla[20];//班级
structstudentmessage*next;//定义链表
}STUMSG;
2.3运行界面设计
第三章详细设计
主函数通过在while循环结构中嵌入switch分支结构实现操作选择功能。
(1)Record录入函数
建立一个包含学生全部信息的结构体,申请空间,其指针为p0,存入学生各项对应的数据。
(2)Insert插入函数:
按输入的数据存储在一个stu类型的指针里,若原来链表里没有元素,则将此作为第一个元素;若原来的链表里有元素,则将指向头结点指针存储的学号与头指针下一个的学号大小进行比较,小的在前大的在后,之后指向头结点处的指正后移,进行比较,直到尾结点为止。
在进行比较的while函数内,每比较一次,计算总人数的TOTAL_NUM自加。
(3)Display浏览函数:
将传给Display函数的指针P所指向的结构体的各项数据输出以便核对信息。
(4)DisplayAll浏览函数:
指针指向链表头结点,在if语句中嵌套do-while语句将学生信息按学号从大到小进行逐一输出。
(5)Query查询函数:
首先使用switch语句生成菜单,实现操作选择功能。
分三个部分按学号查询、按姓名查询和取消返回上一层。
按学号查询时调用while语句对学号检索,再调用if语句进行判断,最后输出想要查询的信息。
按姓名查询的方法跟按学号查询的一样。
(6)Del删除函数:
使用while语句进行检索,直接删除学生信息。
(7)Change修改函数:
建立devise函数,生成菜单,用switch语句进行分叉选择功能,选择项目进行相应的信息输入。
在Change函数中使用while语句进行检索后再调用devise函数修改信息。
实现学生信息修改。
第四章测试分析
4.1测试程序执行情况
进入页面
录入信息
浏览信息
检索信息
输入姓名检索
弹出页面
修改
修改
删除信息
4.2出现的问题和解决的方法
经过执行后,基本运行良好,应有的功能都可以执行。
在最初运行后出现运行后,没有返回键和返回提示,后来在仔细修改和核对后,运行成功。
第五章用户手册(可选)
5.1使用说明
程序页面出现后,按照数字指示一一进行。
5.2运行说明
1录入学生信息
依次输入后,1确认并继续2重新填写3放弃并返回4确认并返回
2浏览学生信息
1上一页2下一页0退出
3检索学生信息
1按姓名检索2返回主菜单
检索输入后1修改学生信息2删除该条信息3返回上级菜单4查看下调信息
修改选项后,1姓名2年龄3性别4生日5地址6电话7奖励信息
具体操作按实际运行情况操作
第六章课程设计总结
经历过基本几天都在看程序的时间,我发现我懂的太少,要学的太多。
原以为会很轻松,但还是遇到很多问题,以前上课时从未想到过。
对文件的操作我一直都没注意,现在才发现其乐无穷,学习与实践果然是不可分割的。
发现水平还是不够,同学可以编出一个比较漂亮的界面,还可以随意调用文件操作,实在让人赞叹不已。
课程设计旨在锻炼学生的实际动手能力和解决真实问题的能力。
并在其中掌握和熟练所学的知识,并能够运用所学知识解决比较简单的现实模拟问题。
本次课程设计在老师的帮助和自己的努力下终于能够成功运行,使我感到非常高兴以及提高了自己的编程信心,虽然这次课程设计的题目实现比较简单和不实用但毕竟是自己将近两个星期的努力地结果。
在期间我对编程的理念理解又加深了一点,他是我明白好的算法或者是好的逻辑思维对编程的重要性,在调试期间我自卑过、高兴过、平静过。
可以说是我经历了比较大的情感波动。
当费很大劲才把程序调运行的时候那种感觉实在是太好了。
在本次课程设计活动中,我明显的感觉到自己知识的欠缺和实际动手能的差劲。
尤其是在传值传参的函数调用时更体现的非常明显,感觉自己的书本学的不透、学的不扎实。
有些地方更本就不会,不如说文件的操作,比如说系统时间的获取等以前在上课或作习题时更本就不会考虑的问题在课程设计当中完全暴露出来。
此次实习加强了我的理解,很多以前迷糊的概念得到了明确,亦让我感到计算机语言的强大之处。
一句诗概括此次实践,“山重水复疑无路,柳暗花明又一村”;如今实践已然结束,但是对于计算机语言的学习决不能放松,“雄关漫道真如铁,而今迈步从头越”。
现在的世界是信息化的,路漫漫其修远兮,吾将上下而求索。
感谢老师抽出时间的指导,同时亦感谢大家这些天来的支持与帮助。
附录:
程序代码
#include
#include
#include
#include
intstunum=0;
structstudent
{
intid;
charname[30];
intage;
charsex[2];
charbirthday[9];
charjiguan[80];
charxueyuanzhuanye[15];
charjianglixinxi[25];
}stu[100];
voidpr()
{
system("cls");
printf("******学生信息管理系统******");
printf("\n----------V1.0.0----------");
printf("\n您想要:
");
printf("\n1.录入学生信息");
printf("\n2.浏览学生信息");
printf("\n3.检索学生信息");
printf("\n4.退出信息管理");
printf("\n****************************\n");
}
voidpr2()
{
voidjsname();
inta;
charch;
while(a)
{
system("cls");
printf("******学生信息管理系统******");
printf("\n----------检索----------");
printf("\n您想要:
");
printf("\n1.按姓名检索");
printf("\n2.返回主菜单");
printf("\n****************************\n");
ch=getchar();
switch(ch)
{
case'1':
jsname();break;
case'2':
a=0;break;
}
}
}
voideditname(intn)
{
printf("\n新姓名:
");
scanf("%s",stu[n].name);
}
voideditage(intn)
{
printf("\n新年龄:
");
scanf("%d",&stu[n].age);
}
voideditsex(intn)
{
printf("\n新性别:
");
scanf("%s",stu[n].sex);
}
voideditbir(intn)
{
printf("\n新出生年月");
scanf("%s",stu[n].birthday);
}
voideditjiguan(intn)
{
printf("\n新籍贯:
");
scanf("%s",stu[n].jiguan);
}
voideditxueyuanzhuanye(intn)
{
printf("\n新学院专业:
");
scanf("%s",stu[n].xueyuanzhuanye);
}
voideditjianglixinxi(intn)
{
printf("\n新奖励信息:
");
scanf("%s",stu[n].jianglixinxi);
}
voidlast(intn)
{
if(n==stunum)
system("cls");//清屏
printf("******学生信息管理系统******");
printf("\n----------检索----------");
printf("\n已检索到末尾。
");
printf("\nPressanykeytocontinue..");
printf("\n****************************\n");
}
voidedit(intn)
{
charch;
inta=1,b;
while(a)
{
system("cls");
printf("******学生信息管理系统******");
printf("\n----------修改----------");
printf("\n请输入你想修改的内容:
");
printf("\n1.姓名2.年龄3.性别4.出生年月5.地址6.电话7.奖励信息\n");
printf("\n****************************\n");
getchar();
ch=getchar();
switch(ch)
{
case'1':
editname(n);break;
case'2':
editage(n);break;
case'3':
editsex(n);break;
case'4':
editbir(n);break;
case'5':
editjiguan(n);break;
case'6':
editxueyuanzhuanye(n);break;
case'7':
editjianglixinxi(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;
}
}
}
}
voiddel(intn)
{
inta;
for(a=n;a { strcpy(stu[a].name,stu[a+1].name);//拷贝后一个学生信息到前一个人上。 stu[a].age=stu[a+1].age; strcpy(stu[a].sex,stu[a+1].sex); strcpy(stu[a].birthday,stu[a+1].birthday); strcpy(stu[a].jiguan,stu[a+1].jiguan); strcpy(stu[a].xueyuanzhuanye,stu[a+1].xueyuanzhuanye); strcpy(stu[a].jianglixinxi,stu[a+1].jianglixinxi); } stunum--; printf("删除成功! pressEntertocontinue.."); } inteditpr(intn) { inta=1; charch; while(a) { getchar(); printf("\n您想要: "); printf("\n\n1.修改学生信息"); printf("\n2.删除该条信息"); printf("\n3.返回上级菜单"); printf("\n4.查看下条信息"); ch=getchar(); switch(ch) { case'1': edit(n),a=0;break; case'2': del(n),a=0;break; case'3': a=0;return(0);break; case'4': a=0;break; } } } voidjsname() { intn,j,i=0; charm[30]; system("cls"); printf("******学生信息管理系统******"); printf("\n----------检索----------"); printf("\n请输入想要检索的姓名: "); scanf("%s",m); for(n=0;n { if(strcmp(m,stu[n].name)==0) { system("cls"); printf("学号姓名年龄性别出生年月\n"); printf("%4d",stu[n].id); printf("%8s",stu[n].name); printf("%4d",stu[n].age); printf("%4s",stu[n].sex); printf("%8s\n",stu[n].birthday); printf("\n\n\n学号籍贯学院专业奖励信息\n"); printf("%4d",stu[n].id); printf("%15s",stu[n].jiguan); printf("%15s",stu[n].xueyuanzhuanye); printf("%s\n",stu[n].jianglixinxi); i++; if((j=editpr(n))==0) break; } } if(i==0) printf("\nError: 无此学生。 "); if(j! =0) last(n); getchar(); getchar(); } voidwriteinfo() { inta,n=1,m; charch; while(n) { a=stunum; system("cls"); printf("ID: "); stu[a].id=(a+1); printf("%d",stu[a].id); printf("\nName: "); scanf("%s",&stu[a].name); printf("\nAge: "); scanf("%d",&stu[a].age); printf("\nSex: "); scanf("%s",&stu[a].sex); printf("\nBirthday(E.g20090101): "); scanf("%s",&stu[a].birthday); printf("\nJiguan: "); scanf("%s",&stu[a].jiguan); printf("\nXueyuanzhuanye: "); scanf("%s",&stu[a].xueyuanzhuanye); printf("\nJianglixinxi: "); scanf("%s",&stu[a].jianglixinxi); m=1; while(m)//做一个循环,直到m=0时跳出 { system("cls"); pr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 模板