C课程设计论文Word文档格式.docx
- 文档编号:6796600
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:24
- 大小:141.11KB
C课程设计论文Word文档格式.docx
《C课程设计论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《C课程设计论文Word文档格式.docx(24页珍藏版)》请在冰点文库上搜索。
1.4课程设计要求1
第2章课程设计内容2
2.1程序功能介绍2
2.2程序整体设计说明2
2.2.1设计思路2
2.2.2数据结构设计及用法说明3
2.2.3程序结构(流程图)4
2.2.4各模块的功能及程序说明5
2.2.5程序结果6
2.3程序源代码及注释7
第3章课程设计总结18
参考资料19
第1章课程设计的目的与要求
1.1课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
1.2课程设计的实验环境
硬件要求能运行Windows2000/XP操作系统的微机系统。
C语言程序设计及相应的开发环境。
1.3课程设计的预备知识
熟悉C语言及C语言开发工具。
1.4课程设计要求
1.分析课程设计题目的要求
2.写出详细设计说明
3.编写程序代码,调试程序使其能正确运行
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告
第2章课程设计内容
2.1程序功能介绍
本系统采用计算机对学生成绩进行管理,进一步提高办学效益和现代化水平。
帮助广大教师提高工作效率,实现学生成绩信息管理工作流程的系统化、规范化和自动化。
本系统的功能主要有同下几点。
首先进入登录界面,输入的用户名、密码、用户权限,根据权限不同可进入管理员界面或普通用户界面。
管理员可完成学生成绩信息的创建、修改、查询功能;
普通用户只可以对学生信息、成绩等查询功能。
2.2程序整体设计说明
伴随着信息社会的到来,信息的极大丰富必然要求人们适应信息社会,信息和材料、能源一样成为一种社会的基本生产资料,在人类的社会生产活动中发挥着重要的作用,同时人们对信息和数据的利用与处理也已经进入了自动化、网络化和社会化的阶段,因此,开发相关的管理信息系统已经成为各行各业的必要和必需了。
管理信息系统作为一门边缘学科,集管理科学、信息科学、系统科学、现代通信技术和电子计算机技术于一体,可以解决企业或组织所面临的问题。
成绩管理员是对学生的成绩进行管理的,但过去由于采用人工方法进行管理,工作效率低,劳动强度大,所以他们希望采用计算机管理,将已有的管理经验转化到管理软件中。
本系统的界面设计简单直观,易于理解。
它使用的控件都是用户常用的或常见的,操作起来很容易上手。
不需要特别的培训和讲解,用户便能使用该系统。
对于成绩管理员的劳动强度、提高工作质量和效率;
方便管理人员对信息的查询、提高信息资源的利用效率和管理水平都具有重要意义。
2.2.1设计思路
系统的主菜单可以做查询、成绩管理、打印和退出的操作。
在成绩管理主菜单下面,包括了增加、删除、排序、总分及平均分计算二级菜单。
当成绩管理员要查询一个学生或一个班级的成绩时,只需要在主菜单上点击查询,然后再输入要查询学生的学号、姓名或班级的名称,即可查询到对应的成绩。
若成绩管理员要对学生成绩进行管理,或是对班级的成绩按总分或平均分排序时,可以在通过主菜单下的二级菜单中排序功能实现。
同样,若要增加、删除、求总分及平均分时,也可以在成绩管理菜单下的增加、删除、总分及平均分菜单来实现。
2.2.2数据结构设计及用法说明
该主函数程序运用了switch()
语句运行。
main()
{
inti;
STUDENT*head;
/*链表定义头指针*/
head=init();
/*初始化链表*/
clrscr();
/*清屏*/
for(;
;
)/*无限循环*/
{
switch(menu_select())/*调用主菜单函数,返回值整数作开关语句的条件*/
{/*值不同,执行的函数不同,break不能省略*/
case0:
head=init();
break;
/*执行初始化*/
case1:
head=create();
/*创建链表*/
case2:
head=delete(head);
/*删除记录*/
case3:
print(head);
/*显示全部记录*/
case4:
search(head);
/*查找记录*/
case5:
save(head);
/*保存文件*/
case6:
head=load();
break;
/*读文件*/
case7:
computer(head);
/*计算总分和均分*/
case8:
head=insert(head);
/*插入记录*/
case9:
copy();
/*复制文件*/
case10:
head=sort(head);
/*排序*/
case11:
append();
/*追加记录*/
case12:
head=index(head);
/*索引*/
case13:
total(head);
/*分类合计*/
case14:
exit(0);
/*如菜单返回值为14程序结束*/
}
}
2.2.3程序结构(流程图)
成绩查询模块主要完成的是学生成绩的查询功能。
在查询模块中,操作员输入相应的学号、姓名,确定后便可以看到相应学生的成绩明细。
2.2.4各模块的功能及程序说明
系统主要由学生成绩的查询、成绩管理、打印、退出模块组成。
在查询模块中,操作员输入相应的学号、姓名,确定后便可以看到相应学生的成绩明细
成绩的管理模块。
主要是包括添加、删除、排序及计算总分和平均分四个部分。
对成绩添加模块中,一部分是新增一名学生的成绩,另一部分是对已经存在学生的成绩进行追加。
成绩的删除模块。
对已经存在的成绩不再需要,要进行删除操作。
成绩的计算总分及平均分模块。
根据管理员输入的各科成绩,计算出想相应的总分及平均分。
成绩的排序模块。
按学生的总分及平均分,以升序或降序的顺序对学生的名次进行排序功能。
该系统中,只有具有管理员权限的人员和能够进行学生成绩的录入、删除、计算总分及平均分、排序查找等的全部功能。
非管理员只具有查询的功能。
2.2.5程序结果
在详细设计阶段结束后,开始进入测试阶段。
成绩管理员登录后应该实现的功能是对学生成绩的查询、成绩管理、打印、退出。
接下来进行子系统测试。
根据子系统的不同,选择不同的数据进行测试,使其各项功能如添加、删除、修改、查询等都得以实现。
虽然按照程序设计的基本流程,用了大量的数据反复地测试,不断地改正,目前已经基本上达到预期要求。
但是所有的程序设计都不会是完美的,因为,没有错误的程序是不完善的程序,因此,只能说暂时还未发现错误,因为程序的应用过程就是一个不断完善的过程,虽然经过大量的数据测试,但是还是有很多的问题出现,所以日后还要不断完善。
系统目前已经达到预期指标,各项测试已经基本通过。
图一程序开始图二输入成绩
图三程序结果
2.3程序源代码及注释
/*11.3.2源程序*/
/***********xuesheng.c***********/
/******头文件(.h)***********/
#include"
stdio.h"
/*I/O函数*/
stdlib.h"
/*其它说明*/
string.h"
/*字符串函数*/
conio.h"
/*屏幕操作函数*/
mem.h"
/*内存操作函数*/
ctype.h"
/*字符操作函数*/
alloc.h"
/*动态地址分配函数*/
#defineN3/*定义常数*/
typedefstructz1/*定义数据结构*/
charno[11];
charname[15];
intscore[N];
floatsum;
floataverage;
intorder;
structz1*next;
}STUDENT;
/*以下是函数原型*/
STUDENT*init();
/*初始化函数*/
STUDENT*create();
STUDENT*delete(STUDENT*h);
voidprint(STUDENT*h);
/*显示所有记录*/
voidsearch(STUDENT*h);
/*查找*/
voidsave(STUDENT*h);
/*保存*/
STUDENT*load();
/*读入记录*/
voidcomputer(STUDENT*h);
STUDENT*insert(STUDENT*h);
voidappend();
voidcopy();
STUDENT*sort(STUDENT*h);
STUDENT*index(STUDENT*h);
voidtotal(STUDENT*h);
intmenu_select();
/*菜单函数*/
/******主函数开始*******/
{/*值不同,执行的函数不同,break不能省略*/case0:
/*执行初始化*/case1:
/*创建链表*/case2:
/*删除记录*/case3:
/*显示全部记录*/case4:
/*查找记录*/case5:
/*保存文件*/case6:
/*读文件*/case7:
/*插入记录*/case9:
/*复制文件*/case10:
/*排序*/case11:
/*追加记录*/case12:
/*索引*/case13:
/*分类合计*/case14:
/*菜单函数,返回值为整数*/
menu_select()
char*menu[]={"
***************MENU***************"
/*定义菜单字符串数组*/
"
0.initlist"
/*初始化*/
1.Enterlist"
/*输入记录*/
2.Deletearecordfromlist"
/*从表中删除记录*/
3.printlist"
/*显示单链表中所有记录*/
4.Searchrecordonname"
/*按照姓名查找记录*/
5.Savethefile"
/*将单链表中记录保存到文件中*/
6.Loadthefile"
/*从文件中读入记录*/
7.computethescore"
/*计算所有学生的总分和均分*/
8.insertrecordtolist"
/*插入记录到表中*/
9.copythefiletonewfile"
/*复制文件*/
10.sorttomakenewfile"
/*排序*/
11.appendrecordtofile"
/*追加记录到文件中*/
12.indexonnomber"
/*索引*/
13.totalonnomber"
/*分类合计*/
14.Quit"
};
/*退出*/
chars[3];
/*以字符形式保存选择号*/
intc,i;
/*定义整形变量*/
gotoxy(1,25);
/*移动光标*/
printf("
pressanykeyentermenu......\n"
);
/*压任一键进入主菜单*/
getch();
/*输入任一键*/
/*清屏幕*/
gotoxy(1,1);
textcolor(YELLOW);
/*设置文本显示颜色为黄色*/
textbackground(BLUE);
/*设置背景颜色为蓝色*/
gotoxy(10,2);
putch(0xc9);
/*输出左上角边框┏*/
for(i=1;
i<
44;
i++)
putch(0xcd);
/*输出上边框水平线*/
putch(0xbb);
/*输出右上角边框┓*/
for(i=3;
20;
gotoxy(10,i);
putch(0xba);
/*输出左垂直线*/
gotoxy(54,i);
}/*输出右垂直线*/
gotoxy(10,20);
putch(0xc8);
/*输出左上角边框┗*/
/*输出下边框水平线*/
putch(0xbc);
/*输出右下角边框┛*/
window(11,3,53,19);
/*制作显示菜单的窗口,大小根据菜单条数设计*/
for(i=0;
16;
i++)/*输出主菜单数组*/
gotoxy(10,i+1);
cprintf("
%s"
menu[i]);
textbackground(BLACK);
/*设置背景颜色为黑色*/
window(1,1,80,25);
/*恢复原窗口大小*/
gotoxy(10,21);
do{
\nEnteryouchoice(0~14):
"
/*在菜单窗口外显示提示信息*/
scanf("
s);
/*输入选择项*/
c=atoi(s);
/*将输入的字符串转化为整形数*/
}while(c<
0||c>
14);
/*选择项不在0~14之间重输*/
returnc;
/*返回选择项,主程序根据该数调用相应的函数*/
STUDENT*init()
returnNULL;
/*创建链表*/
STUDENT*create()
ints;
STUDENT*h=NULL,*info;
/*STUDENT指向结构体的指针*/
)
info=(STUDENT*)malloc(sizeof(STUDENT));
/*申请空间*/
if(!
info)/*如果指针info为空*/
{printf("
\noutofmemory"
/*输出内存溢出*/returnNULL;
/*返回空指针*/
inputs("
enterno:
info->
no,11);
/*输入学号并校验*/
if(info->
no[0]=='
@'
)break;
/*如果学号首字符为@则结束输入*/
entername:
name,15);
/*输入姓名,并进行校验*/
pleaseinput%dscore\n"
N);
/*提示开始输入成绩*/
s=0;
/*计算每个学生的总分,初值为0*/
N;
i++)/*N门课程循环N次*/
{do{printf("
score%d:
i+1);
/*提示输入第几门课程*/scanf("
%d"
&
info->
score[i]);
/*输入成绩*/if(info->
score[i]>
100||info->
score[i]<
0)/*确保成绩在0~100之间*/printf("
baddata,repeatinput\n"
/*出错提示信息*/
}while(info->
0);
s=s+info->
score[i];
/*累加各门课程成绩*/
info->
sum=s;
/*将总分保存*/
average=(float)s/N;
/*求出平均值*/
order=0;
/*未排序前此值为0*/
next=h;
/*将头结点做为新输入结点的后继结点*/
h=info;
/*新输入结点为新的头结点*/
return(h);
/*返回头指针*/
/*从文件读数据*/
STUDENT*load()
STUDENT*p,*q,*h=NULL;
/*定义记录指针变量*/
FILE*fp;
/*定义指向文件的指针*/
charinfile[10];
/*保存文件名*/
Enterinfilename,forexamplec:
\\f1\\te.txt:
\n"
infile);
/*输入文件名*/
if((fp=fopen(infile,"
rb"
))==NULL)/*打开一个二进制文件,为读方式*/
cannotopenfile\n"
/*如不能打开,则结束程序*/
exit
(1);
\n-----Loadingfile!
-----\n"
p=(STUDENT*)malloc(sizeof(STUDENT));
p)
outofmemory!
/*如没有申请到,则内存溢出*/
returnh;
/*返回空头指针*/
h=p;
/*申请到空间,将其作为头指针*/
while(!
feof(fp))/*循环读数据直到文件尾结束*/
if(1!
=fread(p,sizeof(STUDENT),1,fp))break;
/*如果没读到数据,跳出循环*/
p->
next=(STUDENT*)malloc(sizeof(STUDENT));
/*为下一个结点申请空间*/
p->
next)
printf("
/*如没有申请到,则内存溢出*/returnh;
q=p;
/*保存当前结点的指针,作为下一结点的前驱*/
p=p->
next;
/*指针后移,新读入数据链到当前表尾*/
q->
next=NULL;
/*最后一个结点的后继指针为空*/
fclose(fp);
/*关闭文件*/
---Youhavesuccessreaddatafromfile!
!
---\n"
/*文件拷贝*/
voidcopy()
charoutfile[10],infile[10];
FILE*sfp,*tfp;
/*源和目标文件指针*/
STUDENT*p=NULL;
/*移动指针*/
/*输入源文件名*/
if((sfp=fopen(infile,"
))==NULL)/*二进制读方式打开源文件*/
cannotopeninputfile\n"
exit(0);
Enteroutfilename,forexamplec:
/*提示输入目标文件名*/
outfile);
/*输入目标文件名*/
if((tfp=fopen(outfile,"
wb"
))==NULL)/*二进制写方式打开目标文件*/
cannotopenoutputfile\n"
feof(sfp))/*读文件直到文件尾*/
=fread(p,sizeof(STUDENT),1,s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 论文
![提示](https://static.bingdoc.com/images/bang_tan.gif)