当前位置:文档之家› 中南大学C++课程设计实践报告!

中南大学C++课程设计实践报告!

中南大学
本科生课程设计(实践)任务书、设计报告
(C++程序设计)
题目学生成绩管理系统
学生姓名
指导教师
学院
专业班级
学生学号
计算机基础教学实验中心
年月日
学生成绩管理系统
关键字:学生成绩 MFC 编写系统
内容:定义一个结构体,存放下列信息:
学号、姓名、性别、系名、班级名、成绩等
1.学生成绩管理系统开发设计思想
要求:
一:数据输入:输入学生的相关信息,若用户输入数据或信息不正确,给出“错误”信息显示,重复刚才的操作;至少要输入10个学生的数据;可以随时插入学生信息记录;
二:每个学生数据能够进行修改并进行保存;
三:可以根据学号或者姓名删除某学生数据;
四:查询模块要求能按学号,按姓名,按班级等条件进行查询;
五:界面要求美观,提示信息准确,所有功能可以反复使用。

学生成绩管理程序从总体设计方面来看,基本的功能包括主控模块,数据输入模块,数据修改模块,数据查询模块等。

设计模块图:
2.系统功能及系统设计介绍
详细设计:
对于总体设计说明的软件模块,进一步细化,要说明各个模块的逻辑实现方法。

下面逐个说明。

主控模块:主要完成初始化工作,包括屏幕的初始化,显示初始操作界面。

初始界面中主要包括功能的菜单选择项。

输入处理:利用链表技术输入多名学生的数据,直到输入学生的学号以“@”开头,则结束数据的输入。

程序运行流程图如下:删除处理:利用链表技术删除某学号的学生成绩信息,如果找到该学号则进行删除,否则输出“未找到”的信息。

程序运行流程图略。

查找处理:利用链表技术根据学生学号或姓名等方式查找某学号
的学生成绩信息,其程序流程图略。

排序处理:利用链表技术根据学生学号对学生数据进行排序,其
部分源代码如下:/***********xuesheng.c***********/
/******头文件(.h)***********/
#include "stdio.h" /*I/O函数*/
#include "stdlib.h" /*其它说明*/
#include "string.h" /*字符串函数*/
#include "conio.h" /*屏幕操作函数*/
#include "mem.h" /*内存操作函数*/
#include "ctype.h" /*字符操作函数*/
#include "alloc.h" /*动态地址分配函数*/
#define N 3 /*定义常数*/
typedef struct z1 /*定义数据结构*/
{
char no[11];
char name[15];
char sex[5];
char major[15];
char class[15];
char tele[15];
char address[15];
int order;
struct z1 *next;
}STUDENT;
/*以下是函数原型*/
STUDENT *init(); /*初始化函数*/
STUDENT *create(); /*创建链表*/
STUDENT *dele(STUDENT *h); /*删除记录*/
void print(STUDENT *h); /* 显示所有记录*/
void search(STUDENT *h); /*查找*/
STUDENT *sort(STUDENT *h); /*排序*/
int menu_select(); /*菜单函数*/
STUDENT *insert(STUDENT *h); /*插入记录*/
void save(STUDENT *h); /*保存*/
STUDENT *load(); /*读入记录*/
void inputs(char *prompt, char *s, int count);
/******主函数开始*******/
main()
{
int i;
STUDENT *head; /*链表定义头指针*/
head=init(); /*初始化链表*/
clrscr(); /*清屏*/
for(;;) /*无限循环*/
{
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/ { /*值不同,执行的函数不同,break 不能省略*/
case 0:head=init();break; /*执行初始化*/
case 1:head=create();break; /*创建链表*/
case 2:head=dele(head);break; /*删除记录*/
case 3:print(head);break; /*显示全部记录*/
case 4:search(head);break; /*查找记录*/
case 5:head=insert(head); break; /*插入记录*/
case 6:head=sort(head);break; /*排序*/
case 7:save(head);break; /*保存文件*/
case 8:head=load(); break; /*读文件*/
case 9:exit(0); /*如菜单返回值为14程序结束*/
}
}
}
/*菜单函数,返回值为整数*/
int menu_select()
{
char *menu[]={"***************MENU***************", /*定义菜单字符串数组*/
" 0. init list", /*初始化*/
" 1. Input", /*输入记录*/
" 2. Delete", /*删除记录*/
" 3. List", /*显示记录*/
" 4. Seek(name)", /*查找*/
" 5. insert record to list ", /*插入记录到表中*/
" 6. Sort", /*排序*/
" 7. Save", /*保存*/
" 8. Load", /*从文件中读入记录*/
" 9. Quit",/*退出*/
3.系统开发的体会
本次程序设计所用时间较长,工作量很饱满,而且所用的知识很多,但是我们平常在课堂上所学的知识很有限,这就需要我大量的自学书本和课外的其他书籍上的知识。

为了让程序容易使人看懂,我用到的知识点不是非常多,大都是一些基本知识。

毕竟很多知识没有学,能用基本知识就尽量用的基本知识。

C++设计实践是对之前学过的知识的加深和巩固,之前学得较浅,实践的机会不多,这次实践让我对C++程序有了更加深入的了解,心理也由原来的不喜欢到喜欢,感觉很有意思也很有用,可也设计一些有用的或者是自己喜欢的程序。

最令我收益的是写程序的过程和调试修改的过程,因为没有把知识学习全面,因此编写起来是有难度的,在预先想好程序结构后,就开始看书,一个函数一个函数来编写,不懂的地方就上网搜或是请教一下同学和老师,当终于把程序写出来的时候,内心里又有一种说不出来的激动,
我感觉这很符合大学的教育观念,是对个人自主学习能力的一个锻炼。

在接下来就是调试,虽然出了很多的错误,虽然自己也被搞的焦头烂额,但我还是很兴奋,我感觉自己就像是个侦探,一点点找线索,找到问题,再解决,每次成功都带给自己一次激动。

现在程序终于能较好的运行出来了,当然,还存在一些瑕疵,但通过这近两周的实践学习,我收获的不仅仅是这一个程序,我的自学能力,以及寻找问题解决问题的能力也得到了很好的锻炼!。

相关主题