《软件技术基础》项目实战任务书指导书.docx
- 文档编号:27624169
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:43
- 大小:307.69KB
《软件技术基础》项目实战任务书指导书.docx
《《软件技术基础》项目实战任务书指导书.docx》由会员分享,可在线阅读,更多相关《《软件技术基础》项目实战任务书指导书.docx(43页珍藏版)》请在冰豆网上搜索。
《软件技术基础》项目实战任务书指导书
《软件技术基础》
课程设计项目实战
任务书指导书
胡永祥编
江苏财经职业技术学院
2011年5月
前言
《软件技术基础》是高职高专计算机软件技术、计算机应用技术、计算机网络技术、应用电子技术等专业的一门专业基础课,其特点是应用广泛,实践性较强。
通过课程设计,可使学生进一步掌握C语言程序设计的基本知识,增强学生利用C语言进行程序设计的实践技能,培养学生综合运用相关知识的能力。
一、项目实战的任务和性质
1、巩固对所学C语言程序设计基本知识的掌握
2、增强学生利用C语言程序设计的实践技能
3、培养学生独立分析和解决问题的能力
4、培养学生综合运用所学知识解决实际问题的能力
二、项目实战的基本要求
1、进一步掌握C语言程序设计方法和组织实现的基本技能
2、学会分析解决问题的方法,对设计中出现的问题,能通过独立思考、查阅资料等手段寻找解决问题的途径
3、熟悉C语言程序调试的方法,对程序中出现的错误能够独立调试解决
4、对设计结果能独立进行分析、评价
5、培养严肃认真、实事求是的科学作风
三、项目实战内容
1、选择、熟悉并适应编程编译、调试环境
2、选择并确定设计课题
3、审阅所选课题、明确实现的具体方法,确定基本算法和编程方法
4、编写程序
5、上机调试程序,查错、纠错
6、撰写课程设计报告
7、准备答辩
说明:
阅读、分析课程设计实例,有助于理解和把握C语言程序设计的一些基本方法、过程和技巧
项目实战任务书
一、项目实战题目
学生成绩管理系统
二、项目实战目的
1.进一步掌握和利用C语言进行行程设计的能力
2.进一步理解和运用结构化程序设计的思想和方法
3.初步掌握开发一个小型实用系统的基本方法
4.学会调试一个较长程序的基本方法
5.学会利用流程图表示算法
6.掌握书写程序设计开发文档的能力(书写课程设计报告)
三、项目实战具体内容
1.每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩
2.输入功能:
可以一次完成若干条记录的输入
3.显示功能:
完成全部学生记录的显示
4.查找功能:
完成按学号查找学生记录并显示
5.排序功能:
按学生总分进行排序
6.插入功能:
按学号插入一条学生记录
7.将学生记录保存在文件中
8.应提供一个菜单来调用各个功能,调用菜单的界面应尽可能清晰美观
四、项目实战要求
1、用C语言实现系统
2、利用结构体链表实现学生成绩的数据结构设计
3、系统具有追加,查询,插入,排序等基本功能
4、系统的各个功能要求用函数的形式实现
5、完成设计任务并书写课程设计报告
6、将学生成绩信息存在文件中
五、项目实战报告的要求
1、目录
2、前言
3、设计目标
4、设计概要(设计思路)
5、程序设计(要求一并提交源程序清单及电子文挡)
6、测试结果
7、结论或体会
8、参考文献
项目实战指导书
一、概要设计
1.制作这样的一个数据库需要实现以下功能:
(1)数据库的安全性。
进入数据库需要输入用户的密码,不同的用户可以有不同的权限。
(2)数据库的操作界面设计为菜单显示方式。
用户通过菜单进行选择。
如下图所示:
图1主菜单界面
程序的输出格式:
图2程序的输出格式
本程序利用单链表存储结构完成对学生成绩的动态管理,其基本功能模块图如下图所示:
输入
显示
删除
查找
插入
追加
保存
读入
计算
拷贝
排序
索引
分类合计
图3基本功能模块图
2.各函数流程图
(1)creat()函数
(2)del()函数
(3)display()函数
(4)search()函数
(5)save()函数
(6)load()函数
(7)computer()函数
(8)copynew()函数
(9)modify()函数
(10)append()函数
(11)sort()函数
(12)index()函数
(13)fail()函数
(14)five()函数
(15)average()函数
(16)classscore()函数
二、详细设计:
按照概要设计列出的功能模块,设计出与这些模块一一对应的功能函数,以供主函数使用。
(1)函数原型:
menu_select()
函数功能:
主菜单。
用户通过菜单进行选择。
调用各功能函数。
(2)函数原型:
student*creat()
函数功能:
该函数是用来创建单链表。
当在主函数中输入1时,即进入创建链表函数,即开始输入学生信息,按照提示信息输入学号、三门课程的成绩,每输入完一个数就按一下回车键,当输入学号为0时结束输入,返回主函数,显示主菜单界面。
(3)函数原型:
student*del(student*head)
函数功能:
该函数的作用是删除指定学号的学生记录。
首先根据提示信息输入要删除结点的学号,输入后根据学号顺序查找结点,如果没有找到,则输出没有找到的信息;否则,显示找到的信息,然后删除。
调用结束返回主函数,显示主菜单。
(4)函数原型:
voiddisplay(student*head)
函数功能:
该函数的作用是显示单链表。
本函数以二维表的形式输出,直观漂亮。
调整格式,对齐表格线。
(5)函数原型:
voidsearch(student*head)
函数功能:
该函数的作用是查找指定学号的学生记录。
根据提示信息输入要查找结点的学号,输入后根据学号顺序查找,如果没有找到,则输出没有找到的信息;否则,显示找到的信息。
调用结束返回主函数,显示主菜单。
(6)函数原型:
voidsave(student*head)
函数功能:
该函数的作用是将学生记录保存到指定文件中。
在访问链表的过程中将记录写入文件。
(7)函数原型:
student*load()
函数功能:
该函数的作用是将学生记录从文件中取出放到链表中。
Load和creat函数算法相同,不同点在于creat是从键盘上接受数据,而Load函数是从文件中读数据。
(8)函数原型:
student*computer(student*head)
函数功能:
该函数作用是计算每个学生成绩的总分和平均分。
(9)函数原型:
voidcopynew(student*head)
函数功能:
该函数的作用是把学生记录从原来的文件中复制到新文件中。
(10)函数原型:
voidsort(student*head)
函数功能:
排序。
是对链表上的结点按照总分的由大到小的顺序进行排序。
(11)函数原型:
voidmodify(student*head)
函数功能:
修改数据。
根据提示信息输入要查找结点的学号,输入后根据学号顺序查找,如果没有找到,则输出没有找到的信息;否则,修改找到的信息。
调用结束返回主函数,显示主菜单。
(12)函数原型:
student*append(student*head)
函数功能:
添加记录。
在链表最后添加一个结点记录,返回主函数。
(13)函数原型:
voidindex()
函数功能:
建立索引。
设置索引是为了分类合计。
(14)函数原型:
voidfail(student*head)
函数功能:
查找不及格学生的信息。
顺序查找各结点只要有一门学科分数低于60分就显示该学生的全部信息,返回索引函数。
(15)函数原型:
voidfive(student*head)
函数功能:
查找全年级前五名的学生,并显示他们的全部信息。
返回索引函数。
(16)函数原型:
voidaverage(student*head)
函数功能:
求各班的平均分。
通过学号字段来区分班级,在这个字段内的记录的总分相加,除以人数,算出各班的平均分并显示。
完毕后返回索引函数。
(17)函数原型:
voidclassscore(student*head)
函数功能:
显示一个班的学生信息。
输入班级号,通过学号控制顺序查找并显示该班全部学生信息。
(18)函数原型:
voidmain()
函数功能:
有机调用各个子函数。
使用switch()函数进行菜单的选择。
三、调试报告:
1.在调试菜单函数时,由于文本大小控制不当而出现了乱码,通过几次改正尝试,消除了这个现象。
2.在调试时经常出现语法错误,一些分号和大括号经常被遗漏,导致产生错误。
四、程序清单:
#include
#include
#include
#include
#include
#include
typedefstructs1
{
longno;
charname[10];
floatscore[3];
floatsum;
floataverage;
intorder;
structs1*next;
}STUDENT;
intmenu_select()
{
char*menu[]={"**************MENU**************",
"1.Enterlist",
"2.Deletearecordfromlist",
"3.Printlist",
"4.Searchrecordonnumber",
"5.Savethefile",
"6.Loadthefile",
"7.Computerthescore",
"8.Copythefiletonewfile",
"9.Sortdata",
"10.modifydata",
"11.Appendrecordtofile",
"12.Indexonnumber",
"13.totalonnumber",
"14.Quit"
};
chars[3];
intc,i;
clrscr();
gotoxy(2,2);
printf("Pressanykeyentermenu......\n");
clrscr();
gotoxy(1,1);
textcolor
(1);
textbackground(0);
gotoxy(10,2);
putch(0xc9);
for(i=1;i<54;i++)
putch(0xcd);
putch(0xbb);
for(i=3;i<20;i++)
{
gotoxy(10,i);
putch(0xba);
gotoxy(64,i);
putch(0xba);
}
gotoxy(10,20);
putch(0xc8);
for(i=1;i<54;i++)
putch(0xcd);
putch(0xbc);
window(11,3,63,19);
clrscr();
for(i=0;i<15;i++)
{
gotoxy(10,i+1);
cprintf("%s",menu[i]);
}
textbackground(0);
window(1,1,80,50);
gotoxy(20,21);
do
{
printf("Enteryourchoice(0-14):
");
scanf("%s",s);
c=atoi(s);
}
while(c<0||c>14);
returnc;
}
intmenu_select2()
{
char*menu[]={"**************MENU**************",
"1.Thestudentwhofailintest",
"2.Thefirsttofifthingrade",
"3.Classaverageonsubject",
"4.Classtotalrecord",
"5.Quit"};
chars[3];
intc,i;
clrscr();
gotoxy(2,2);
printf("Pressanykeyentermenu\n");
clrscr();
gotoxy(1,1);
textcolor
(1);
textbackground(0);
gotoxy(10,2);
putch(0xc9);
for(i=1;i<54;i++)
putch(0xcd);
putch(0xbb);
for(i=3;i<12;i++)
{
gotoxy(10,i);
putch(0xba);
gotoxy(64,i);
putch(0xba);
}
gotoxy(10,12);
putch(0xc8);
for(i=1;i<54;i++)
putch(0xcd);
putch(0xbc);
window(11,3,63,11);
clrscr();
for(i=0;i<6;i++)
{
gotoxy(10,i+1);
cprintf("%s",menu[i]);
}
textbackground(0);
window(1,1,80,50);
gotoxy(20,13);
do
{
printf("Enteryourchoice(1-5):
");
scanf("%s",s);
c=atoi(s);
}
while(c<0||c>14);
returnc;
}
STUDENT*creat()
{
STUDENT*head,*p,*s;floaty,z,w;
longx;inti;
charna[15];
head=NULL;
clrscr();
printf("Pleaseinputstudent'snumber:
");
scanf("%ld",&x);
printf("Pleaseinputname:
");
scanf("%s",na);
printf("Pleaseinputsc1:
");
scanf("%f",&y);
printf("Pleaseinputsc2:
");
scanf("%f",&z);
printf("Pleaseinputsc3:
");
scanf("%f",&w);
while(x!
=0)
{
s=(STUDENT*)malloc(sizeof(STUDENT));
s->no=x;
for(i=0;i<10;i++)
{
s->name[i]=na[i];}
s->score[0]=y;
s->score[1]=z;
s->score[2]=w;
s->sum=0;
s->average=0;
s->order=0;
if(head==NULL)
{
head=s;p=head;
}
else
{
p->next=s;
p=s;
}
printf("Pleaseinputstudent'snumber:
");
scanf("%ld",&x);
if(x==0)
break;
printf("Pleaseinputname:
");
scanf("%s",na);
printf("Pleaseinputsc1:
");
scanf("%f",&y);
printf("Pleaseinputsc2:
");
scanf("%f",&z);
printf("Pleaseinputsc3:
");
scanf("%f",&w);
}
p->next=NULL;
return(head);
}
voidshowTable1()
{
clrscr();
gotoxy(10,3);
printf("***************STUDENTINFORMATION***************");
gotoxy(1,4);
printf("-----------------------------------------------------------------------------\n");
gotoxy(1,5);
printf("|rec|no|Name|sc1|sc2|sc3|sum|average|order|\n");
}
voidshowTable2()
{
printf("-----------------------------------------------------------------------------\n");
}
STUDENT*del(STUDENT*head)
{
STUDENT*p,*q;
longn;intflag=0;
clrscr();
p=head;
q=p;p=p->next;
printf("Pleaseinputthenumberyouwanttodelete:
");
scanf("%ld",&n);
if(q->no==n){head=p;free(q);flag=1;}
while(p!
=NULL)
{
if(p->no==n)
{
q->next=p->next;
free(p);
flag=1;break;
}
p=p->next;
q=q->next;
}
if(flag==0)
printf("Notfind!
!
!
\n");
printf("Pressanykeytoreturn......\n");
getch();
return(head);
}
voiddisplay(STUDENT*head)
{
STUDENT*p;inti=1;
p=head;
clrscr();
showTable1();
while(p!
=NULL)
{
printf("|%3d|%10ld|%12s|%5.1f|%5.1f|%5.1f|%5.1f|%8.1f|%5d|\n",i,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
p=p->next;
i++;
}
showTable2();
printf("Pressanykeytoreturn......\n");
getch();
}
voidsearch(STUDENT*head)
{
longstr;inti;intrec=1;
STUDENT*p;p=head;
clrscr();
printf("Pleaseinputthenumberyouwanttoget:
");
scanf("%ld",&str);
while(p!
=NULL)
{
if(str==p->no)
i=1;
p=p->next;
}
if(i==1)
{
showTable1();printf("|%3d|%10ld|%12s|%5.1f|%5.1f|%5.1f|%5.1f|%8.1f|%5d|\n",rec,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);
showTable2();
}
else
printf("Notfind!
");
printf("Pressanykeytoreturn!
");
getch();
}
voidsave(STUDENT*head)
{
FILE*fp;STUDENT*p;
clrscr();
if((fp=fopen("e:
kesheyyp","wb"))==NULL)
{
printf("Can'topenthefile!
\n");
exit
(1);
}
printf("\n********Savingfile********\n");
p=head;
while(p!
=NULL)
{
fwrite(p,sizeof(STUDENT),1,fp);
p=p->next;
}
fclose(fp);
printf("Savesuccess!
!
!
\n");
}
STUDENT*load()
{
STUDENT*p,*q,*head;
FILE*fp;
clrscr();
head=NULL;
if((fp=fopen("e:
kesheyyp","rb"))==NULL)
{
printf("Can'topenthefile!
\n");
exit
(1);
}
while(!
feof(fp))
{
q=(STUDENT*)malloc(sizeof(STUDENT));
if(fread(q,sizeof(STUDENT),1,fp)!
=1)
break;
if(head==NULL)
{
head=q;p=head;
}
else
{
p->next=q;p=q;
}
p=q;
}
p->next=NULL;
fclose(fp);
printf("loadsuccess!
");
return(head);
}
STUDENT*computer(STUDENT*head)
{
STUDENT*p;inti;
p=head;
while(p!
=NULL)
{
for(i=0,p->sum=0;i<3;i++)
p->sum+=p->score[i];
p->average=p->sum/3.0;
p=p->next;
}
return(head);
}
voidcopynew(STUDENT*head)
{
FILE*fp;STUD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件技术基础 软件技术 基础 项目 实战 任务书 指导书