C语言实训.docx
- 文档编号:16823925
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:13
- 大小:28.35KB
C语言实训.docx
《C语言实训.docx》由会员分享,可在线阅读,更多相关《C语言实训.docx(13页珍藏版)》请在冰点文库上搜索。
C语言实训
C程序设计》实训及课程设计项目报告
学籍管理系统
班级软件1207
小组成员曾博文等
指导老师华晶
开发时间2013年1月1日
一,系统简介
设计一个基于结构体数组的学生学籍管理系统,能实现对学生学籍信息进行录入,修改,删除,查询和输出等基本操作。
二,需求分析
学籍管理系统应事先以下功能:
1,能录入学生的基本信息,包括学号,姓名,专业,年级,性别和出生日期信息,保存到结构体数组中。
2,能根据输入学号查找学生,进行信息的修改。
3,能根据输入的学号从结构体数组中删除学生的记录。
4,实现查询功能吗,能根据输入的学号或年级在屏幕上显示相应的学生信息。
5,能在屏幕上以列表的方式输出所有学生的信息。
三,概要设计
1,系统功能结构图
根据项目的开发要求,本系统划分成六个主要功能模板:
录取学生信息模块,修改学生信息模块,删除学生信息模块,查询信息模块,输出模块和系统退出模块。
系统功能结构图如下:
学生档案管理系统
输出学生信息
退出系统
查询学生信息
删除学生信息
修改学生信息
录取学生信息
按班级查询
按学号查询
2,重要的数据结构设计。
学生学籍的记录项用结构体StuMessage表示,包括6个属性,stuNo,name,spec,grade,sex,birthday分别代表学生学号,姓名,专业,年级,性别和出生日企,其中birthday类型定义的结构体类型Date。
structStuMessage
{
CharstuNo[11];//学号
Charname[9];//姓名
Charspec[21];//专业
Intgrade;//年级
Charsex;//性别
StructDatebirthday;//出生日期
};
日期类型Date包括三个属性,分别代表年,月,日。
StructDate
{
Intyear;//年
Intmonth;//月
Intday;//日
};
3,函数设计
学籍管理系统程序采用了结构化程序设计的思想,由1一个.h头文件和3个.c源文件组成。
程序中除了主函数外,共设计了以下14哥函数,分别包括在3个.c源文件中。
以下是这些函数的函数原型及功能设计。
(1)voidSysInfo(void);
函数功能:
在屏幕上输出系统及版权信息并等待用户响应。
(2)voidMenuOfMain(stryctStuMessagestu[]);
函数功能:
在屏幕上显示主菜单,接收用户选择并响应用户相应操作。
(3)voidAppend(structMessagestu[]);
函数作用:
录入一条学生记录到记录数组的末尾。
(4)voidModify(structstuMessagestu[]);
函数功能:
通过输入学好查询学生的相应记录信息,如果存在在屏幕上输出相应学生记录并通过重新输入的方法修改学生的记录,否则输出没有找到相关记录。
(5)voidDelet(structStuMessagestu[]);
函数功能:
通过输入学号查询学生的相应记录信息,如果存在在屏幕上输出相应学生记录,用户确认删除后调用DelList()函数将其删除,否则输出没有找到相关记录。
(6)voidMenuOfSear(srutStuMessagestu[])
函数功能:
在屏幕上显示查询子主菜单,接收用户响应用户操作。
(7)voidListAll(structStuMessagestu[]);
函数功能:
在屏幕上以列表方式输出所有学生的信息。
调用PrintHead()输出表头,再调用ListOne()函数逐一输出所有学生的信息。
调用PrintHead()输出表头,再调用ListOne()函数逐一输出各条记录。
(8)voidQuit(void);
函数功能:
退出菜单系统,并调用exit(0)系统函数结束程序运行。
(9)voidSearNum(strutMessagestu[]);
函数功能:
通过输入学号调用NumOfSear()函数查询学生相应的记录信息,如果存在调用PrintHead()函数和ListOne()函数在主屏幕上输出相应学生记录,否则输出没有找到相关记录。
(11)intNumOfSear(structStuMessagestu[],charstuNum[]);
函数功能:
根据接收到的学生学号,在相应记录数组中进行查询,如果存在相应记录,返加相应的数组下标,否则返回-1.
(12)voidPrintHead(void);
函数功能:
在屏幕上显示输出列表的表头。
(13)voidListOne(structStuMessagestu[]);
函数功能:
唉屏幕上以行的方式显示输出一个学生的信息。
(14)intDelList(structStuMessagestu[]);
函数功能:
如果数组中存在下表为i的记录,删除该记录并返回1,否则返回0.
4,小组成员分工
组员1
Main();systeminfo();menuofmain();
Quit;
组员2
Printhead();listone();listall();
Apend();
组员3
Modify();delet();dellist();menuofsear();seranum();seargrade();numofsear();
四,详细设计
1,系统主函数main()设计
开始
输出系统及版权信息
SysInfoo
显示主菜单并响应用
户操作
MenuOfMain()
结束
2,主函数模块函数Menuofmain()设计
开始
清屏
显示主菜单
接收用户选择
Choose
123450其他
修改学生信息
非法操作
退出系统
输出学生信息
查询学生信息
删除学生信息
录入学生信息
N
Choos!
=0
3,录入学生信息功能模块函数Append()设计
清屏
录入一条记录
Length++
继续录入(Y/N)
接收用户选择
YCon==’Y’或
Con==‘y’
N
4,修改学生信息功能模块函数Modify()设计
接收要修改的信息
查询学号记录用I指向它
记录存在
YN
输出表头
输出第i条记录
修改第i条记录
修改成功
继续修改
(Y/N)
5,删除学生信息功能模块函数Delete()设计
清屏
接收要删除的学号
查询改学号记
录,用i指向它
Y记录存在N
没有找到相关记录
输出表头
输出第i条记录
N
删除(Y/N)
删除第i条记录
Y
Length--
删除成功
继续删除
(Y/NJ)
N
6,菜单模块函数Menuogsear()设计
清屏
显示查询菜单
接收用户选择
Choose
120其他
非法操作
返回主菜单
按年级查询
按学号查询
Y
Choose!
=0
N
7,按学号查询功能SearNum()设计
清屏
接收查询学号
I=0
I 不等于学号 Y I++ I YnN 没有找到相关记录 输出表头 输出第i条记录 按任意键继续 Getch() 返回 8,按年级查询模块函数SearGrade()设计 清屏 接收查询年级 输出表头 I=0,count=0 I〈length Y 等于 年级 NN Y 输出第I条记录 COUNT++ I++ Y N Count>0 没有找到相关记录 按任意键继续 共找到n条记录 返回 Getch() 9,输出学生信息功能模块函数ListALL()设计 五,调试处理 本系统在VC6下编译调试通过,可顺利运行,各项功能达到设计要求。 本系统由一个.h头文件和三个.c源文件构成。 系统调试主要在VC6下进行,采用分模块调试的方法进行编译,即完成一个函数功能模块就编译一个功能模块,最后再进行整体编译并生成可执行文件Student.exe。 在调试过程中,主要碰到以下问题: 1,清屏函数在TC中使用的clsrc()函数,但在VC6中没有相应的函数。 查资料,发现在VC中可使用system()函数调用系统命令cls实现。 2,在使用C语言系统函数进行数据输入的时候,发现使用getchar()和gets()函数输入字符和字符串的时候,系统经常跳出相应的输入语句,无法输入数据。 查资料,是C系统的输入处理缓存问题,解决方法是在进行字符和字符串输入的时候,先使用fflush(stdin)函数清除缓存,即可输入字符和字符穿。 六,用户手册 本系统是WIN32控制台程序,可在WINDOW和DOS环境下运行,执行文件名称: Student。 exe。 运行程序后,首先显示系统信息和版权信息,用户按任意键后进行主要功能菜单。 在主要功能菜单中输入相应的数字可执行相应的程序功能,包括录入学生信息,修改学生信息,删除学生信息和输入所有学生信息啊,输入4可进行查询子菜单,可进行按学号查询和按年级查询学生信息。 在主功能菜单按6可结束本系统运行并自动关闭运行窗口。 七,附录 源程序文件名清单: Alist.H Main.c List.c Edit.c 感谢大家! ! ! ! !
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言