c语言。
程序设计报告。
一、成员及其分工。
设计小组成员:
成员职责:何伟迪:负责整体架构,部分程序编写,以及程序调试。
刘凯:部分程序编写。
孙佳奇:部分程序编写。
工作百分比:
基本要求部分每人33%。
何伟迪完成用户界面设计和附加功能。
对单个同学的查找、修改、添加、删除,对班级分别操作,成绩分别输出操作等)。
二、程序结构。
模块划分:主函数main完成初始界面,之后调用文件打开函数,在文件打开后调用目录函数(目录函数还包含子目录函数)。根据用户要求可对数据进行操作,并且还可以返回上一级菜单和主菜单,对数据进行继续操作。
主函数的主要功能:主函数完成初始界面,之后调用文件打开函数,再调用目录函数。
各个子函数的主要功能:
1、int menu():调用子目录以及一些功能函数,此外还可以返回文件读取界面进行文件操作。
2、int menu_sort():被主目录调用的子目录,调用与排序有关的功能函数。
3、int menu_parag():被主主目录调用的子目录,调用与分段有关的功能函数。
4、int class_out():实现按班级输出学生并保存,以便进一步操作。
5、int sort_name():按照姓名排序,选择排序法。
6、int sort_num ()输出全部学生信息,输出到显示器以及磁盘上,并且用户可以选择磁盘保存位置。
7、int sort_
8、int search():搜索学生信息并且可以修改学生信息,可以按照学号查找学生,也可以按照姓名查找学生。
9、int delet_stu():删除学生信息,可以按照学号查找学生,也可以按照姓名查找学生。
10、int add():增加学生信息,接入前面创建的链表的尾部。
11、int good():输出优秀成绩单,输出到显示器以及磁盘上保存。还可以实现某一科成绩的输出和保存。
12、int fail():输出不及格成绩单,输出到显示器以及磁盘上。还可以实现某一科成绩的输出和保存。
13、int paragraph():输出分段成绩单,输出到显示器以及磁盘上保存。还可以实现某一科成绩的输出和保存。
14、int original ()输出原始成绩单,输出到显示器以及磁盘上保存。
15、int open_file():打开文件操作,可以实现年级、班级成绩单打开,也可以根据用户输入的文件名和路径打开。同时创建链表,实现进一步的链表操作。
16、int s**e():对单个学生操作后的保存函数。
调用关系:main函数调用open_file()后打开文件,之后调用menu()执行后,出现主菜单,根据用户需要进行进一步的操作(调用相应的子函数执行相应的排序,添加学生,删除学生,查看学生操作,输出成绩单等操作)。也可以回到open_file()函数重新选择文件打开。
三、设计思想以及关键**。
总体思路:用链表进行全部操作!可以按班级完成所有功能!
主函数main完成初始界面,先选择打开的文件,之后进入菜单界面,根据用户需要可以进行各种数据操作,目录和子目录函数可以被多次调用,进行各种要求的重叠操作(如先分班级,分过班级之后对某个班级进行多种排序、添加、删除、修改等操作)。此外对于每一次用户的操作都具有发现错误重新输入的功能。
各个模块的设计:
该部分会以程序运行截图来逐步展示:(在过程中**右侧加黑部分是对其解释,由于程序**数目很多,有很多相同的地方,对于大多数**只在第一次进行分析之后就不再赘述。)
此图为初始界面,由main函数完成,具体**如下。
int main主要包含一些printf函数。
int i,a=15;
printf("\t\t");
for(i=0;i<21;i++)
printf(" c",a);
printf("");
for(i=0;i<2;i++)
printf(" t\t%c %c\t\t\t\t\t%c %c",a,a,a,a);
printf(" t\t%c %c 欢迎使用学生成绩管理系统 %c %c",a,a,a,a);
for(i=0;i<2;i++)
printf(" t\t%c %c\t\t\t\t\t%c %c",a,a,a,a);
printf("\t\t");
for(i=0;i<21;i++)
printf(" c",a);
printf("\t\t\t设计人员: 何伟迪\t\t\t\t\t刘凯\t\t\t\t\t孙佳奇");
printf("\t\t如有任何问题或建议请拨打24小时免费客服**:\t\t\t\t400-800-8888\t温馨提示:本程序操作过程中如无特殊说明均以enter键作为确认");
printf("\t\t\t请按 enter 键进入系统");
getchar();
system("cls清屏函数。
open_file调用打开文件函数。
return 0;
在用户输入enter 键之后由getchar函数接收,再调用open_file()函数进入下一界面,即文件打开界面,并建立链表,界面如下:
如图所示,在输入 8 之后系统提示“您的输入有误,请重新输入”,选择0—5选择已经保存的年级成绩单以及班级成绩单,输入 6 之后,如图,提示输入文件名及路径。
其**情况如下。
int open_file()
int menu对所调用函数的声明。
file *fp定义文件指针(相同地方下文不再赘述)
struct student *p1,*p2; 定义结构体指针用于链表操作。
char a[100],b[100
int m,i;
printf("\t\tn");
printf("\t\t* 请输入您想要查看的班级(1—5)\t*");
printf("\t\t* 如想查看全部成绩请按 0 \t\t*");
printf("\t\t* 如需读入新的成绩单请按 6\t\t*");
printf("\t\tn");
printf("\t\t请选择。
scanf("%d",&m这部分是允许用户犯错的**部分,while(m<0 ||m>6整个函数此部分都与之相似用while
循环控制,只是m的值略有不同。
printf("\t\t您的输入有误,请重新输入:")
scanf("%d",&m);
switch(m对文件打开的选择,用switch选择控制,整个函数选择部分也都是这样实现的。
case 0:while((fp=fopen(""rb"))null)
printf("\t\t无法找到文件:")break;
case 1:while((fp=fopen(""rb"))null)
printf("\t\t无法找到文件:")break;
case 2:while((fp=fopen(""rb"))null)
printf("\t\t无法找到文件:")break;
case 3:while((fp=fopen(""rb"))null)
printf("\t\t无法找到文件:")break;
case 4:while((fp=fopen(""rb"))null)
printf("\t\t无法找到文件:")break;
case 5:while((fp=fopen(""rb"))null)
printf("\t\t无法找到文件:")break;
case 6:
通过文件名及路径打开文件进行操作。
printf("\t\t请输入成绩单的路径以及文件名。
scanf("%s",a);
while((fp=fopen(a,"rb"))null)
printf("\t\t无法找到文件请重新输入:")
scanf("%s",a);
}break;
一下部分是建立链表的操作:
p2=p1=head=(struct student*)malloc(sizeof(struct student));
while(!feof(fp先申请一个结构体作为头,p1p2以及head
指向头,之后用while循环不断申请空间,并将文件中数据读出,p1负责申请新空间,p2负责与其连接。
fscanf(fp,"%s%s%s%s%s%s%s%f%s%f%s%f%",p1->a[0],p1->num,p1->a[1],p1->name,p1->a[2],p1->sex,p1->sub[0],&p1->score[0],p1->sub[1],&p1->score[1],p1->sub[2],&p1->score[2]);
p2->next=p1;
C语言课程课程设计
课程设计报告。课程名称 c语言程序设计 系别 xxx 专业班级 xxx班 学号 xxxxxxxxxx 姓名 xxx 课程题目 10或100以内儿童加减乘除算术游戏。完成日期 2013.6.14 19 指导老师 xxx 2013年 6月 21日。附件 一 程序模块图。二 源程序。include inc...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。xx xx学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 课程类别 专业基础课。制订时间 2010年11月 计算机科学与技术系制。c语言程序课程设计教学...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。珠海学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 2010级计算机科学与技术系各专业。课程类别 专业基础课。制订时间 2010年11月 计算机科学与技...