C语言课程设计

发布 2022-09-30 18:10:28 阅读 3081

********电气与信息工程学院。

实训报告。实训题目: 学生信息管系统理

专业: 软件工程专业

班级: t1123-3

姓名。一、需求分析。

1、问题。根据需求,该系统所包含的信息应该有以下一些:

通讯录的基本信息:

姓名——name班级——classes

性别——sex学号——no

年龄——age出生日期——birthday(year,month,day)

地址——address电子邮件——mail

**——phone

根据需求,该系统应该包含一下一些功能:

从指定的文件读取信息——read()

按学号查找学生信息——nosearch()

按姓名查找学生信息——namesearch()

按班级查找——clasearch()

修改学生信息——update()、update2()

删除学生信息——delete()

将学生信息保存到指定的文件中——s**e()

判断日期输入是否正确——date *judgedate(char date)

主函数——输出菜单、功能选择。

2、系统。采用c语言实现,开发环境vc,可运行在windows98以上的操作系统。

3、运行要求。

能按指定格式读入信息。

操作简单,方便。

界面友好,有一定的容错性。

⑷功能人性化。

二、总体设计。

1、系统流程设计。

根据系统要求,设计如下的系统流程。

图1 系统流程图。

2、系统模块设计。

根据系统的功能设计如下模块。

图2 菜单功能图。

主界面模块:完成系统菜单的显示。

功能选择:根据用户的选择,实现相应的功能。

学生信息的读入:从文件读入学生的信息。

学生信息的修改:修改学生的信息(学号、班级、姓名。。。

学生信息的查询:查询某个学生或者班级的信息。

学生信息的删除:根据用户输入的信息删除相应学生的信息(人性化)

学生信息的保存:将学生信息保存到指定的文件中。

三、详细设计。

1、数据结构设计。

根据系统需要,系统中需要保存的数据有如下一些信息:

使用c语言创建的结构体如下:

typedef struct date

int year;

int month;

int day;

date;struct student

char no[20];

char classes[20];

char name[30];

char sex[20];

char age[20];

char address[30];

char phone[20];

date *birthday;

char mail[20];

stu[num];

2、界面设计。

主界面:根据系统的设定要求,设计一个字符型界面,显示系统的菜单,为了体现友好性,将每个功能的前面加入与之对应的数字选项。

图3 菜单界面图。

用户输入菜单前的数字后,主菜单消失将进入相应功能的界面,进行相应的操作后,再次返回主菜单。

文件导入界面:

输入文件名后,进行导入操作。然后返回主菜单。

图4 信息读入图。

信息查询界面:

用户根据需求,选择查寻方式,界面跳转相应查寻方式界面。操作完成后返回主菜单。⑷按学号查询:

图5 按学号查询图。

按姓名查询:

图6 按姓名查询图。

按班级查询:

图7 按班级查询图。

信息删除界面:

用户根据需要选择删除,界面跳转相应删除界面。操作完成后,返回删除界面,按“0”返回主界面。查找到要删除的信息时,把其信息打印出来,然后提示是否要删除,根据用户选择执行。

图8图9 信息删除界面。

信息修改界面:

用户输入要修改学生的姓名,然后界面跳转修改信息项,键入新的信息,完成操作后返回修改界面,按“0”返回主界面。

图10 信息修改。

图11 信息修改界面。

图12 图13 信息修改完成界面。

信息保存界面:

用户输入保存文件的路径,系统自动创建相应文件,将信息保存。

图14 信息保存界面。

图15 信息保存文件。

四、程序测试。

1、读入信息模块测试:

当输入的文件名不存在时,系统会提示出错并要求用户继续输入,直到打开文件为止。

图16 读入测试图。

2、信息查询模块测试:

在进行信息查询时,系统会先检查是否已读入信息,再进行便利操作。若没有,则不能进行查询操作。

图17 查询测试图。

图18图19

图20图21

3、信息删除模块测试:

同查寻模块一样,该模块也会先检查是否有信息存在于系统中,然后再进行查找,找到需要删除的信息,进行删除操作,否则提示先读入文件。删除后,把剩下的信息输出。

图22图23 删除测试图。

4、信息修改模块测试:

系统先检测是否有信息读入,然后根据用户输入的信息进行检索,找到相应信息则给出修改提示。否则提示信息不存在。修改后提示是否显示修改后的信息。

图24图25

图26图27 修改测试图。

5、信息保存模块测试:

进行信息检测后,最后再进行保存操作。若信息没有读入,则不能保存。

图28图29 保存测试图。

图30 退出界面。

五、实训总结。

由于个人能力问题,本次实训只能用结构体数组来做,因为自己对链表一点都不熟悉,试了一下,根本无法进行下去,总是错误百出,而且自己无法改正。用结构体数组做本次实训,虽然存在很多缺陷,但大多数功能还是可以实现的。

用结构体做本次实训,对菜单输出、文件读入、信息查询(按学号、姓名、班级)还是较容易实现的。但还是遇到了诸多的问题,尤其是再对信息删除和信息修改方面,遇到了较大的困难。在删除信息时,不可能从原文件中实现删除信息,只能在输出时对要删除的信息将其覆盖掉。

在修改信息时,遇到的难度就更大了。在输入修改内容时,要对输入的日期进行各种判断,从日期长度到格式,从年份到月份,从闰年到平年,还有没月的天数,都需要进行仔细的判断。要做到此,就要在修改函数里调用一个判断日期的函数,而要判断日期,也要把日期的年月日放到一个结构体里面。

这次实训,对于信息的保存,还是挺容易做到的,不管保存为何种格式的文件。

通过这次实训,自己的收获还是挺多的,在做的过程中,既巩固了所掌握的知识,又提高了编程能力,也让自己看到了不足(链表、指针等),这就确定了空闲的时候应该要干什么:要用放假时间,把所缺的知识补回来。

六、附录。程序源**:

#include <>

#include <>

#include <>

#define num 10

static int m=0;

typedef struct dates

int year;

int month;

int day;

date;struct student

char no[20];

char classes[20];

char name[30];

char sex[20];

char age[20];

char address[30];

char phone[20];

date *birthday;

char mail[20];

stu[num];

date *judgedate(char date)

int read();

int nosearch();

int clasearch();

int namesearch();

int delete();

int update();

void update2();

int s**e();

int main()

int number,k=0,n=0;

system("color ce");

while(1)

system("cls");

printf("\t\t\t学生信息管理菜单n");

printf1、读入学生信息n");

printf2、按学号查询学生信息n");

printf3、按班级查找学生信息n");

printf4、按名字查找学生信息n");

printf5、删除学生信息n");

printf6、修改学生信息n");

printf7、保存学生信息n");

printf0、退出n");

printf("\t\t\tn");

printf("\t\t\t请输入选项**:\t\t\t");

scanf("%d",&number);

rewind(stdin);

switch(number)

case 1:

if(k==0)

read();

printf("\t\t\t");

system("pause");

k=-1;else

system("cls");

printf("\t\t\t信息读入成功,请再选择项目!")

getchar();

break;

case 2:

if(k==0)

system("cls");

printf("\t\t\t信息没有读入,无法查询!请先选择第 1 项!")

getchar();

else nosearch();

printf("\t\t\t");

system("pause");

number=-1;

break;

case 3:

if(k==0)

system("cls");

printf("\t\t\t信息没有读入,无法查询!请先选择第 1 项!")

getchar();

elseclasearch();

printf("\t\t\t");

system("pause");

number=-1

break;

case 4:

if(k==0)

system("cls");

printf("\t\t\t信息没有读入,无法查询!请先选择第 1 项!")

getchar();

elsenamesearch();

printf("\t\t\t");

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月 计算机科学与技...