C课程设计——学籍管理系统(包括论文和源程序)

 源程序代码地址http://blog.csai.cn/UploadFiles/2008-3/316668223.rar

一、    选题说明及简介

本此课程设计我组选择的题目是学籍管理系统,该系统可以实现对学生信息的建库、修改、删除、查询、输出、退出等功能,此外,为了系统安全,还实现了用户权限设置功能。

二、    本题目的知识点介绍

我组选择的数据结构是结构体数组和文件,其中,结构体数组是作为辅助空间用的。对文件的操作有打开、读写、关闭等。此外,在制作界面时,用到了光标定位函数gotoxy(),画窗口时用到的线的ASCII码等。

在编写菜单选择子模块时,用到了函数的递归调用。

用到的部分函数功能简介:

textbackground(color)——该函数用于设置背景正文颜色。Color取值范围在0——7 之间,或者用在conio.h 中定义的符号常量来表示亦可;

textcolor(color)——该函数可以选择前景字符颜色。Color 取值范围在0——15 之间,亦可采用符号常量。用法基本与textbackground()相同;

window(left,top,right,bottom)——在屏幕上定义一个窗口,左上角坐标为(left,top),右下角坐标为(right,bottom)。正文窗口的最小尺寸是一行一 列。如果坐标超出(118025)的界限,则对窗口的调用不起作用。

fopen(filename ,mode) 用于创建一个未存在的文件和打开一个已存在的文件,filename为文件存放的路径,mode是指定打开文件的方式;

fclose(FILE *fp) 用于关闭由fopen()打开的文件(流)。

fwrite(const void *buf,size_t int size,size_t count,FILE *fp) 用于把buf指向的缓冲区中的count对象写到fp指向的文件中,每个对象长size字节。文件位置指示值向前推进,推进值等于实际写出的字节数;

fread(void *buf,size_t int size,size_t count,FILE *fp)用于从fp指向的流中读入count个对象,每个对象长size字节,读入的结果放到buf指向的缓冲区中。文件位置按读入字节数向前推进相应字节位置;

rewind(FILE *fp) 用于把文件位置指针移到指定流的开始处,同时清除与该流相关的文件尾标志和错误标志;
三、    本题目的算法思路

以文件作为主数据结构,以结构体数组作为辅助空间,尤其是在做建库、修改、删除等操作时,先将原库文件中的信息存入结构体数组,再做相应的处理。

1.         建库

先以追加方式打开原文件并存入结构体数组,以便输入记录时检查是否有重复学号的记录。循环提示输入学生信息,当输入的学号中有字母,姓名中有数字,性别不是f m,成绩小于0或大于100时,均提示输入有错,重新输入,直到正确。后将输入的信息存入库文件中。退出循环后,返回主菜单。

2.         修改

循环提示输入要修改的学生学号,当输入的学号存在,先显示该记录,再提示修改,后将修改的信息存入库文件中。

退出循环后,返回主菜单。

3.         删除

分单个删除和全部删除。单个删除时,循环提示输入要删除的学生学号,先显示该记录,再提示是否删除成功,后将删除后的信息存入库文件中,退出循环后,返回主菜单。全部删除时,先提示是否真的要全部删除,若是,则清空库文件,后返回主菜单,反之,返回主菜单。

4.         查询

分按学号查询和按姓名查询。其功能是一样的,循环提示输入要查询的学号/姓名,若能找到,则显示该条记录,对于按姓名查询,当出现重名时,则显示多条记录,若找不到,则显示找不到。退出循环后,返回主菜单。

5.         退出

先在屏幕上显示“GOOD BYE!”,并延时一段时间,后退出。

6.         输出

在屏幕上显示所有学生的记录。
四、    设计小结

1.            在保证程序正确的前提下,考虑了程序的可靠性、交互性及界面的友好性。具体包括:

    输入数据时的提示信息;

    输入数据的合法性检查;

    文件的打开、读写操作失败后的提示及处理。

2.            模块化的重要性。

3.            团队合作精神的重要性。

    源程序代码   见附件 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值