c程序设计大作业(范例)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计说明书

《C 程序设计大作业》 ——学生成绩管理系统

班 级: 电信2009级集成班 学 生: 陈颖宏 学 号: ************ 序 号: 提交日期: 2010 年 3 月 27 日

成绩评定:

分 任课教师签名: 年

月 日

前言

本课程设计题目是“学生成绩管理系统设计”,其内容是设计一个使用二进制文件方式存储数据,并且以菜单方式工作的管理系统。

设计目的是设计一个能够方便、直观地管理学生相关信息的系统。

该系统可以实现以下功能:

○1能按学期、按班级完成对学生成绩的录入、修改;

○2能按班级统计显示的成绩,计算学生的总分及平均分;

○3能查询学生的成绩,不及格科目及学生名单;

○4能按班级输出学生的成绩单。

正文

1.需求分析:本程序主要用于输入、查询、统计、导入以及导出学生的成绩。主要的输入方式是利用键盘输入,且输入的字符最好是英文及数字,输入中文时有时会出现错误。程序的有效窗口大小一般为半个屏幕,以至于有些功能的版面出现显示方面的错误。

经测试,程序基本可以正常工作:当在主菜单输入“1”时,可以正常初始化,输入余下的菜单选项时也能按要求跳转到指定画面;各子菜单选项也都能正常运行;但是输入班级、姓名等字符时,有时会显示错误的字符。

2概要设计

○1抽象数据类型的定义:学生结构体定义为struct stu,变量为student;学期数组定义为char term[7]; 班别数组定义为char banbie[20]; 学号数组定义为char no[15]; 姓名数组定义为char name[20]; 科目数组定义为int score[MAXSUB]; 总成绩变量定义为int sum; 平均成绩变量定义为float average。

○2抽象函数类型的定义:菜单选择程序“menu_select()”为int型; 初始化函数“initialize(student * [])”为void型;数据输入函数“input(student * [])”为void型;数据编辑函数“editmenu(student * [])”为void型; 数据查询查询函数“searchmenu(student * [])”为void型; 数据统计函数“total(student * [])”为void型; 数据导出函数“save(student * [])”为void型;数据导入函数“load(student * [])”为void型; 数据导出函数“output(student * [])”为void型;添加学生记录函数“add_record(student * [])”为void型;删除学生记录“delete_record(student * [])”为void型;

修改学生记录函数“student * edit_record(student * [])”为void型;按学号查询函数“student * no_search(student * [])”为void型; 按姓名查询函数“student * name_search(student * [])”为void型。

○3主程序的流程如Main()函数流:○4各程序模块之间的层次(调程图用)关系图:

3详细设计

○1各个操作及模块的伪代码:

Main()函数的伪代码算法:

printf("欢迎使用学生成绩管理系统(请按回车键!)......\n");

for(;;)

{

switch(menu_select())

{

选择选项1:

初始化;

break;

主函数:main.c

自定义函数:student.c 调用

头文件:student.h

选择选项2:

数据录入;

break;

选择选项3:

数据编辑;

break;

选择选项4:

数据统计;

break;

选择选项5:

数据查询;

break;

选择选项6:

数据导出;

break;

选择选项7:

数据显示;

数据导出;

printf("导出成功!\n")

break;

选择选项0:

printf("\n\n\n\n\t\t\t\t^_^感谢您使用本系统!\n");

退出系统;

}

}

退出应用程序;

初始化函数的伪代码:

查找每一个学生记录

{

初始化当前学生记录为空记录

}

printf("记录已经初始化!\n按任意键继续!");

结束初始化函数并返回主菜单;

数据录入函数的伪代码:

对学生信息数组中的每条记录进行循环

{

为数组stuArray[i]分配内存;

如果数组stuArray[i]为空;

{

printf("分配内存失败!");

return;

}

do

{

printf("目前容量可以存储%d条记录,继续请输入y or Y,返回请输入n or N!\n",MAXNUM-i);

接受输入字符;

如果输入字符为'y'或'Y'break;

如果输入字符为'n'或'N'return;

else printf("输入错误!请重新输入\n");

}while输入字符不为'y'、'Y'、'n'、'N'中的一个;

printf("请输入需要录入的班级:");

接收输入的班别;

printf("请输入学期(如08-09-1表示08-09学年第一学期):");

接收输入的学期;

printf("请输入第%d位同学学号(共12位):",i+1);

接收输入的学号;

printf("请输入第%d位同学姓名:",i+1);

接收输入的姓名;

printf("请输入%d门成绩\n",MAXSUB);

for(j=0;j

{

do

{printf("课程%d成绩(语文为1,数学为2,英语为3,计算机为4)",j+1);

接收成绩;

刷新内存缓冲区;

检查输入的成绩是否在要求范围内;

{

printf("错误数据!请重新输入\n");;

}

}while输入的成绩不在要求范围内;

临时统计总成绩;

保存当前学生的总成绩;

算出当前学生的平均成绩;

}

}

结束函数return;

编辑函数的伪代码:

do

{

printf("\n\t请输入菜单项数字(1~4):");

接受输入选项;

}while选项不在范围内;

switch(menuitem)

{

相关文档
最新文档