c语言课程设计.docx
- 文档编号:12598376
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:15
- 大小:69.86KB
c语言课程设计.docx
《c语言课程设计.docx》由会员分享,可在线阅读,更多相关《c语言课程设计.docx(15页珍藏版)》请在冰点文库上搜索。
c语言课程设计
课程设计说明书
设计名称:
程序设计语言强化课程设计
题目
(一)学生成绩排名
(二)根据条件进行学生成绩排名
(三)链表的操作
(四)学生成绩文件管理
(五)学生成绩管理系统
学生姓名:
专业:
网络工程
班级:
学号:
指导教师:
日期:
2011年1月1日
C语言课程设计
一.课程设计的题目、系统的总功能和各子模块的功能
课程设计的题目:
1.学生成绩排名;
2.根据条件进行学生成绩排名;
3.链表的操作(链表的建立,访问,删除链表指定结点,增加结点);
4.学生成绩文件管理;
5.一个综合系统(学生成绩管理系统)。
系统的总功能如图所示:
这个学生信息系统主要是一个以动态链表的应用为基础加上C的基础语法一起的一个综合系统程序。
各子模块的功能:
1.主程序是用switch函数做为一个功能的选择函数;
2.录入函数是一个建立动态链表的应用;
3.删除函数是一个链表的一个指针的变化程序利用指针的作用去“删除”(不再指向)不需要的信息和“插入”(指向)需要的信息;
4.排序函数和删除函数其实是原理是差不多,都是利用了指针的指向作用,把指向第二结构体的指针指向第一个,把第一个的指针指向第二个,那么两个结构体里面的位置就掉换了,就是我们所说排序;
5.查询函数是一个在链表中按照总分查询出指定的学生;
6.浏览函数是一个将信息输出到屏幕的动态链表的应用;
7.保存文件函数是把链表中的信息存入文件中;
0.退出程序,结束系统。
.
二.题目的设计思想(或算法)简述
1.总流程:
口令和菜单的结合体,用户先通过口令,密码输入三次错误则退出系统。
密码正确进入系统功能键选择,根据SWITCH选择菜单里面我们需要的功能。
0功能键是退出系统。
2.录入函数:
函数把指针p指向新开的空间,然后再向空间里面写如数据,进而做成我们所需要的链表。
3.删除函数:
利用指针的指向性,当STRCMP函数=0时找到要删除的学生信息时,把指向这个信息结构体的指针指向下一个结构体,把这个信息挡在链表外面,p2-》next=p1》next。
4.修改函数:
用if(p->number==number)比较学号是否相等,或用strcmp函数找到需要修改的姓名,然后找到修改的数据,再输入需修改的信息。
文件保存函数:
选择按平均分排序还是总分排序,将排好序的学生信息存入新文件中。
5.排序函数:
选择按平均分排序还是总分排序,将排好序的学生信息存入新文件中。
6.查询函数:
打开总成绩排序文件,用折半查找法统计出给定分数的人数并显示。
7.浏览函数:
打开要读取的文件,将学生数据读到新链表while(p!
=0)p=p->next;,浏览学生信息。
三.主要程序的框图(要求用N-S图)
总流程图
1.录入函数
寻找最后一个节点while(!
p->next)
创建存储空间
q=(LinkList)malloc(sizeof(Student));
是否
逐项输入学生信息
(学号、姓名、年级、专业、成绩1、成绩2、成绩3)
显示录入后数据
2.删除函数
删除学生信息
1根据学号删除
2根据姓名删除
if(p->number==number)
是否
strcmp(p->name,name)==0
是否
删除该学号的
学生信息
没有可删除的
学号
删除该姓名的
学生信息
没有可删除的
学生信息
删除完成!
3.修改函数
修改学生信息
1根据学号查找修改
2根据姓名查找修改
p->number==number;
是否
strcmp(p->name,name)==0
是否
修改该学号的学生信息(根据菜单switch(n))
找不到数据!
修改该姓名
的学生信息
(根据菜单
switch(n))
找不到数据!
修改完成!
输入要保存文件的文件名
fp=fopen("stud","w")为读入内存打开一个文件
打开是否成功
是是否
存入数据
输出提示不能打开文件
退出exit
用fprintf函数读入数据
while(p&&p=p->next)
fclose(fp);关闭文件
4.文件保存函数
文件保存函数
1保存数据
2打开数据
输入要打开文件的文件名
fp=fopen("stud","r")为读入内存打开一个文件
打开是否成功
是否
存入数据
输出提示不能打开文件
退出exit
定义一个动态的存储空间
p=(LinkList)malloc(sizeof(Student))
用fprintf函数读入数据
fclose(fp);
关闭文件
5.排序函数
排序函数
1按平均分排序
2按总分排序
ScoreSort(L);
输出按平均分排序的学生信息
ScoreSort(L);
按总分排序的学生信息
输入要保存文件的文件名
fp=fopen("stud","w")为读入内存打开一个文件
打开是否成功
是否
存入数据
输出提示不能打开文件
退出exit
用fprintf函数读入数据
while(p&&p=p->next)
fclose(fp);关闭文件
6.查询函数
输入要打开总分的文件名
fp=fopen("stud","r")为读入新链表打开一个文件
打开是否成功
是否
存取数据
输出提示不能打开文件
退出exit
用fscanf函数读入数据
p=(LinkList)malloc(sizeof(Student));
p->next=NULL;
fclose(fp);关闭文件
输入你要找的分数
HalfSort()
是否找到
是否
找到一人!
不存在与指定分数相同的学生!
7.浏览函数
输入要打开的文件名
fp=fopen("stud","r")为读入新链表打开一个文件
打开是否成功
是否
存取数据
输出提示不能打开文件
退出exit
用fscanf函数读入数据
p=(LinkList)malloc(sizeof(Student));
fclose(fp);关闭文件
printf(“学号、姓名、年级、专业、成绩1、成绩2、成绩3”)
while(p!
=0)
printf("学号:
%d,姓名:
%s,年级:
%s,专业:
%s三门成绩:
%3.2f%3.2f%3.2f\n",p->number,p->name,p->grad,p->profess,p->score[0],p->score[1],p->score[2]);
p=p->next;
四.源程序代码(二至五部分程序由于篇幅未打印)
(一)学生成绩排名
#include
voidmain()
{
voidsort(inta[],intn);
inta[11];
inti;
printf("请输入10个学生成绩:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
printf("成绩按照从高到低进行排序:
\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
printf("第十一个学生成绩:
\n");
scanf("%d",&a[10]);
sort(a,11);
"成绩按照从高到低进行排序:
\n");
for(i=0;i<11;i++)
pr
printf(intf("%d",a[i]);
printf("\n");
printf("成绩按照从低到高进行排序:
\n");
for(i=10;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}
voidsort(inta[],intn)//选择法排序函数
{
inti,j,k,t;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计