课程设计报告郝显文.docx
《课程设计报告郝显文.docx》由会员分享,可在线阅读,更多相关《课程设计报告郝显文.docx(31页珍藏版)》请在冰豆网上搜索。
课程设计报告郝显文
内蒙古科技大学
本科生课程设计说明书
题目:
C语言课程设计
——学生基本信息管理系统
学生姓名:
郝显文
学号:
1176807316
专业:
计算机
班级:
3
指导教师:
郝斌
内蒙古科技大学课程设计任务书
课程名称
C语言课程设计
设计题目
学生基本信息管理系统
指导教师
郝斌
时间
2012.12.31——2013.1.4
一、教学要求
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运行需求4
1.6任务计划4
第二章概要设计5
2.1总体设计5
2.2数据类型设计(或数据结构设计)5
2.3接口设计//函数声明5
2.4运行界面设计5
第三章详细设计7
3.1输入模块设计7
3.2输出模块设计7
3.3查找模块设计7
3.4排序模块设计7
3.5保存及读取模块设计7
第四章测试分析8
4.1测试程序执行情况8
4.2出现的问题和解决的方法8
第五章用户手册(可选)9
5.1使用说明9
5.2运行说明9
第六章课程设计总结10
附录:
程序代码11
参考文献r12
第一章需求分析
1.1引言
学生基本信息管理系统
1.2任务概述
某班学生基本信息管理,包括以下功能:
v从键盘输入包括学号、姓名、性别、出生年月日、籍贯、所在院系、专业、奖惩信息等,并将其保存在磁盘文件里
v具有进行单项查询或多项查询的功能(即按照给定的关键字姓名等找出满足条件的纪录)
v具有插入、修改和删除信息的功能
v具有输出文件数据信息的功能
1.3功能需求
(1)录入个人信息:
5个学生的个人信息,学生信息可以包括学号、姓名、性别、出生日期、家庭住址、院系、专业、奖罚信息等;
(2)修改个人信息:
用户可以修改个人信息,在输入某同学的编号后,进入修改信息的菜单至少包括:
①修改学生姓名②修改学生联系电话
(3)查询个人信息:
可以按学号查询;
(4)浏览所有信息:
显示所有同学的信息;
(5)删除个人信息:
按学生姓名删除记录。
(6)退出系统。
1.4运行需求
采用C语言实现开发环境为VC可以运行在操作系统windows98及以上皆可。
1.5任务计划
(1)输入的形式和输入值的范围
structrecord/*声明函数体*/
{
charcode[20];/*学号*/
charname[10];/*姓名*/
charsex[5];/*性别*/
chartime[20];/*出生年月*/
charadd[20];/*家庭地址*/
charyaunxi[20];/*院系*/
charzhuanye[20];/*专业*/
charjiangfa[20]/*奖罚信息*/
}stu[N];
例:
学号姓名性别出生年月家庭住址院系专业奖罚信息
123张三男19952内蒙古呼和浩特市国际学院计算机无
124李四男19935内蒙古赤峰市国际学院计算机无
125王五男19962内蒙古通辽市国际学院计算机无
学号(20位字符)
姓名(10位字符)
性别(5位字符)
出生年月(20位字符)
家庭地址(20位字符)
院系(20位字符)
专业(20位字符)
奖罚信息(20位字符)
(2)输出的形式
例:
学号姓名性别出生年月家庭住址院系专业奖罚信息
123张三男19952内蒙古呼和浩特市国际学院计算机无
124李四男19935内蒙古赤峰市国际学院计算机无
125王五男19962内蒙古通辽市国际学院计算机无
(3)程序所能达到的功能
0.系统帮助说明1.输入学生信息2.查询学生信3.修改学生信息4.删除学生信息5.显示学生信息
6.保存当前信息7.退出系统
第二章概要设计
2.1总体设计
录入函数
:
用键盘输入学生信息或从系统导入学生信息
保存文件
:
将信息按学生号排序
排序函数
:
将信息从文件中导出放在结构数组中
浏览函数
:
将所有信息显示在屏幕上
显示主菜单
查询函数
:
按学生号查询、按姓名查询、按电话查询
删除函数
:
删除原有的学生信息
添加函数
:
添加新的学生信息
修改函数
:
可以选择修改学生的信息
2.2数据类型设计(或数据结构设计)
主要数据结构的应用如下:
结构数组:
structrecord/*声明函数体*/
{
charcode[20];/*学号*/
charname[10];/*姓名*/
charsex[5];/*性别*/
chartime[20];/*出生年月*/
charadd[20];/*家庭地址*/
charyaunxi[20];/*院系*/
charzhuanye[20];/*专业*/
charjiangfa[20];/*奖罚信息*/
}stu[N];
2.3接口设计
函数名
函数格式//即函数首部
函数功能
main
intmain
主函数对子函数进行调用
shuru
voidshuru
输入学生信息
chaxun
voidchaxun
查询学生信息
xiugai
voidxiugai
修改学生信息
shanchu
voidshangchu
删除学生信息
xianshi
voidxianshi
显示学生信息
baocun
voidbaocun
保存信息到文本
caidan
voidcaidan
系统菜单函数
tuichuxitong
voidtuichuxitong
退出系统函数
huanyingyemian
voidhuanyingyemian
界面函数
2.4运行界面设计
欢迎页面
系统菜单页面
输入信息页面
查询页面
第三章详细设计
3.1输入模块设计
定义一个结构structrecord和数组stu[N]用来储存N个学生的所有信息(学号stu[i].coad姓名stu[i].name性别stu[i].sex出生年月stu[i].time家庭地址stu[i].add院系stu[i].yuanxi专业stu[i].zhuanye奖罚信息stu[i].jiangfa).
通过for循环输入所有职工信息。
用printf语句提示需要输入的内容,接着用scanf语句输入相应内容。
3.2浏览模块设计
用for循环输出每个职工的各种信息
printf("学号:
%s姓名:
%s性别:
%s出生年月:
%d家庭地址:
%s院系:
%s专业:
%d奖罚信息:
%s\n",stu[i].coad,stu[i].name,stu[i].sex,stu[i].time,stu[i].add,stu[i],yuanxi,stu[i].zhuanye,stu[i].jiangfa.)
3.3查找模块设计
声明整形变量t,先用printf语句显示查询菜单,用scanf输入选择的查询方式代号,用switch(t)进入所选择的具体查询函数,包括按学号查询、按姓名查询。
3.4删除模块设计
声明整形变量i,j,flag=0。
用printf语句提示“输入要删除的学号”,接着用scanf语句输入删除对象名字。
3.5保存模块设计
定义文件指针fp,创建文件,用for循环通过fprintf语句将结构数组wor中的内容写入保存在通过scanf输入的路径的文本文件里面。
最后关闭文件。
voidbaocun()
{
inti;
FILE*fp;
if((fp=fopen("student.txt","wb"))==NULL)
{
printf("文件不能打开!
\n");
exit(0);
}
for(i=0;i=1)
printf("文件输入错误!
\n");
fclose(fp)
}
3.6修改模块设计
声明整形变量inti,t,num;;用printf语句提示“请输入要查询的学生的学号:
”,用scanf语句输入修改对象学号。
接着用scanf语句输入修改对象学号。
scanf("%s",s1);
for(i=0;iif(strcmp(stu[i].code,s1)==0)
num=i;
printf("=============================================\n");
printf("|1.修改姓名|\n");
printf("|3.修改性别|\n");
printf("|4.修改出生年月|\n");
printf("|5.修改地址|\n");
printf("|6.修改院系|\n");
printf("|7.修改专业|\n");
printf("|8.修改的奖罚信息|\n");
printf("|9.修改退出本菜单|\n");
printf("=============================================\n");
第四章测试分析
4.1测试程序执行情况
整个程序代码是分块书写的,每个函数都可以独立运行。
只有输入函数查询、菜单函数写得很顺利,一次性就能够成功运行,其他函数在调试过程中或多或少都出现了问题。
4.2出现的问题和解决的方法
浏览函数print()遇到的问题虽然不大,但解决起来很麻烦。
理想的运行结果是美观整齐。
即下面的学生信息分别与第一个printf输出的中文项目提示对齐。
解决方法:
不断修改空格个数,不断运行察看效果。
第五章课程设计总结
经过多天来的设计,职工信息管理系统设计基本完成,其功能符合设计时的要求,能够满足用户的需求,具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入、收集基本数据和实现信息的查询。
使我更进一步深化软件工程方面的专业知识。
这次课程设计,使我真正的把大二一年所学的知识实现了从理论向实践的转变,它给我提供了一次更深入的学习的机会,也使我明白了一个道理,一个学生学习只肯书本的知识,而不把这些知识应用到实践中是没有意义的,只有把理论应用到实践中才能实现知识的真正的价值。
但是课程设计的时间较短,本人的编程水平有限,系统难免有许多不尽如人意的地方。
如,用户界面不够美观,出错处理不够完善,考虑问题不够全面等许多方面和问题还要进一步改进。
附录:
程序代码
#include/*I/o函数*/
#include/*其他说明*/
#include/*字符串函数*/
#defineLEN5/*学号和姓名最大学生人数*/
#defineN5/*最大学生人数*/
structrecord/*声明函数体*/
{
charcode[20];/*学号*/
charname[10];/*姓名*/
charsex[5];/*性别*/
chartime[20];/*出生年月*/
charadd[20];/*家庭地址*/
charyaunxi[20];/*院系*/
charzhuanye[20];/*专业*/
charjiangfa[20];/*奖罚信息*/
}stu[N];
intk=1,m,n;
voidshuru();
voidchaxun();
voidxiugai();
voidshanchu();
voidxianshi();
voidbaocun();
voidcaidan();
voidtuichuxitong();
voidhuanyingyemian();
intmain()
{
while(k)
{
huanyingyemian();
system("pause");
system("cls");
printf("请按任意键进入主菜单!
\n");
system("cls");
caidan();
system("pause");
}
return0;
}
voidhelp()
{
printf("\n尊敬的用户您好!
");
printf("\n============================================================\n");
printf("||");
printf("\n|1.欢迎进入帮助系统!
|\n");
printf("||");
printf("\n|★★★★★★★★|\n");
printf("||");
printf("\n|2.请按照菜单提示进入数字代号!
|\n");
printf("||");
printf("\n|4.谢谢您的使用!
|\n");
printf("||");
printf("\n============================================================\n");
}
voidshuru()/*实现录入学生基本信息功能*/
{
inti,flag=1;
while(flag)
{
flag=0;
printf("请输入需要创建信息的学生人数(1-5):
\n");
scanf("%d",&n);
if(n<1||n>5)
{
flag=1;
printf("输入错误,检查后请重新输入!
\n");
}
}
for(i=0;i{
printf("请输入第%d个学生的基本信息:
\n",i+1);
printf("请输入学号:
\n");
scanf("%s",stu[i].code);
printf("请输入姓名:
\n");
scanf("%s",stu[i].name);
getchar();
printf("请输入性别(男,女):
\n");
scanf("%s",stu[i].sex);
printf("请输入出生年月(输入格式:
年.月):
\n");
scanf("%s",stu[i].time);
printf("请输入家庭地址:
\n");
scanf("%s",stu[i].add);
printf("请输入院系:
\n");
scanf("%s",stu[i].yaunxi);
printf("请输入专业:
\n");
scanf("%s",stu[i].zhuanye);
printf("请输入奖罚信息:
\n");
scanf("%s",stu[i].jiangfa);
}
printf("录入完毕!
\n");
baocun();
}
voidbaocun()/*保存学生信息到文件的函数*/
{
inti;
FILE*fp;
if((fp=fopen("student.txt","wb"))==NULL)/*创建文件并判断是否能够打开成功*/
{
printf("文件不能打开!
\n");
exit(0);/*如果不能打开文件,则关闭当前所有的文件*/
}
for(i=0;iif(fwrite(&stu[i],sizeof(structrecord),1,fp)!
=1)
printf("文件输入错误!
\n");
fclose(fp);/*关闭文件*/
}
voidchazhao()
{
inti,t,flag;
chars1[30];
printf("\n=================================\n");
printf("|1.按学号查询|\n");
printf("|2.按姓名查询|\n");
printf("|3.退出本菜单|\n");
printf("=================================\n");
while
(1)
{
flag=0;
printf("请输入子菜单编号:
");
scanf("%d",&t);
switch(t)
{
case1:
printf("请输入要查询的学生的学号:
\n");
scanf("%s",s1);
for(i=0;iif(strcmp(stu[i].code,s1)==0)
{
flag=1;
printf("学生学号学生姓名性别出生年月家庭地址院系专业奖罚\n");
printf("================================================================================\n");
printf("%6s%7s%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].sex,stu[i].time,stu[i].add,stu[i].yaunxi,stu[i].zhuanye,stu[i].jiangfa);
}
if(flag==0)
printf("该学号不存在!
\n");break;
case2:
printf("请输入要查询的学生的姓名:
\n");
scanf("%s",s1);
for(i=0;iif(strcmp(stu[i].name,s1)==0)
{
flag=1;
printf("学生学号学生姓名性别出生年月家庭地址院系专业奖罚\n");
printf("================================================================================\n");
printf("%6s%7s%5s%9s%8s%10s%14s\n",stu[i].code,stu[i].name,stu[i].sex,stu[i].time,stu[i].add,stu[i].yaunxi,stu[i].zhuanye);
}
if(flag==0)
printf("该姓名不存在!
\n");break;
case3:
return;
default:
printf("请在1--3之间选择\n");
}
}
}
voidxiugai()
{
inti,t,num;
charsex1[3],s1[30],s2[30];
printf("请输入要查询的学生的学号:
\n");
scanf("%s",s1);
for(i=0;iif(strcmp(stu[i].code,s1)==0)
num=i;
printf("=============================================\n");
printf("|1.修改姓名|\n");
printf("|3.修改性别|\n");
printf("|4.修改出生年月|\n");
printf("|5.修改地址|\n");
printf("|6.修改院系|\n");
printf("|7.修改专业|\n");
printf("|8.修改的奖罚信息|\n");
printf("|9.修改退出本菜单|\n");
printf("=============================================\n");
while
(1)
{
printf("请输入子菜单的编号:
");
scanf("%d",&t);
switch(t)
{
case1:
printf("请输入新的姓名:
\n");
scanf("%s",s2);
strcpy(stu[num].name,s2);break;
case2:
printf("请输入新的性别:
\n");
scanf("%s",sex1);
strcpy(stu[num].sex,sex1);break;
case3:
printf("请输入新的出生年月:
\n");
scanf("%s"