C语言课程设计代码.docx

上传人:b****2 文档编号:24238744 上传时间:2023-05-25 格式:DOCX 页数:33 大小:157.56KB
下载 相关 举报
C语言课程设计代码.docx_第1页
第1页 / 共33页
C语言课程设计代码.docx_第2页
第2页 / 共33页
C语言课程设计代码.docx_第3页
第3页 / 共33页
C语言课程设计代码.docx_第4页
第4页 / 共33页
C语言课程设计代码.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

C语言课程设计代码.docx

《C语言课程设计代码.docx》由会员分享,可在线阅读,更多相关《C语言课程设计代码.docx(33页珍藏版)》请在冰豆网上搜索。

C语言课程设计代码.docx

C语言课程设计代码

课程设计

课程名称C语言程序设计课程设计

题目名称学生信息管理系统

学生学院经济管理学院

专业班级08信管1班

学号**********

学生姓名李嘉宁

指导教师黄跃梅

 

2009年6月15日

 

一、课程简介

 

二、系统功能分析

 

三、系统设计

 

四、系统实现

 

五、总结

 

一、课程简介

1、课程设计的内容

学生信息包括:

学号、姓名、年龄、性别、出生年月、地址、邮编、电话、E-mail等。

设计一学生信息管理系统,使之能提供以下功能:

学生信息录入功能(录入时可考虑对录入信息是否正确进行判断,学生信息用文件保存),学生信息浏览功能,查询(按学号、姓名查询),排序功能(按学号、姓名),学生信息的删除与修改。

要求系统界面友好,使用方便。

2、课程设计的要求与数据

1.开发环境要求:

TurboC3.0。

2.提交课程设计报告一份,包括以下内容:

(1)系统分析:

包括设计题目、设计内容以及系统功能需求分析;

(2)系统设计:

包括总体设计(主要功能模块的划分)及详细设计(各功能模块的算法设计以及对应的流程图);

(3)系统实现:

包括使用的所有变量、自定义函数、结构体的说明,以及完整源程序清单,关键代码应加注释。

(4)系统运行:

包括系统操作使用的简单说明,使用测试数据运行的结果。

(5)总结。

包括课程设计过程中的学习体会与收获,出现的问题和解决的方法,没有完成的部分及原因,对C语言和本次课程设计的认识以及自己的建议等内容。

3.提交光盘(每班统一制作1张光盘,每人一个文件夹,文件夹名为“学号姓名”)。

每人的光盘文件夹内含:

(1)任务书;

(2)源程序文件和可执行程序文件;

(3)测试用例和编译运行结果;

(4)课程设计报告电子文档。

 

3、课程设计应完成的工作

1.进行需求分析,将系统划分为多个模块;

2.为每个模块设计算法及流程;

3.编写代码实现各模块功能;

4.运行调试程序;

5.撰写课程设计报告。

 

4、应收集的资料及主要参考文献

[1]谭浩强,《C程序设计(第三版)》,清华大学出版社,2005

[2]谭浩强,《C程序设计题解与上机指导(第三版)》,清华大学出版社,2005

教材第11章“结构体”部分及有关习题。

 

二、系统功能分析

1.设计题目:

学生信息管理系统

2.设计内容:

3.系统功能需求分析:

系统所具备功能:

1.建立学生信息文件,并可进行:

(1)学生学号、姓名、年龄、性别、出生年月、地址、邮编、电话、E-mail等信息的输入。

(2)对指定学生信息进行修改,删除。

(3)对指定(按学号或姓名)学生进行信息查询。

(4)按学号顺序显示所有学生信息。

(5)保存信息。

 

三、系统设计

1.总体设计

主要功能模块:

(1)开始界面选择,初始菜单,二级菜单。

(选择结构)

(2)数据文件的打开与关闭。

(fopen,fclose,save等)

(3)学生信息输入。

(结构体,结构体数组指针,信息校正,数据保存)

(3)信息修改、删除。

(数据的读写,fread,fwrite,链表等)

(4)学生信息查询。

(结构体,循环结构,选择结构)

(5)保存信息。

2.详细设计

(1)界面

初始菜单界面

 

*********欢迎使用学生信息管理系统********

请选择:

1.学生信息添加

2.修改或删除学生信息

3.学生信息查询

4.退出

*********欢迎使用学生信息管理系统********

二级菜单

********学生信息的更改*******

1.学生信息的删除

2.学生信息的修改

0.返回主菜单

请选择(0-2)

********学生信息删除********

1.按编号删除

2.按姓名删除

0.返回主菜单

请选择(0-2)

********学生信息查询********

1.按学号进行信息查询

2.按姓名进行信息查询

0.返回主菜单

请选择(0-2)

三级菜单

********修改学生信息********

1.修改学号

2.修改年龄

3.修改性别

4.修改出生年月

5.修改地址

6.修改电话

7.修改email

8.修改邮编

0.返回上级菜单

(2)数据结构设计

structstudent

{

intnum;

charname[20];

intage;

charsex[5];

charbirthday[10];

charadr[20];

charmailbox[10];

chartel[10];

charemail[20];

}student[N],student2[N];

(3)函数模块设计

Save函数

intsave(intsum)

{

FILE*fp;

inti;

if((fp=fopen("student.txt","wt"))==NULL)

{

printf("读文件错误!

\n");

return0;

}

for(i=0;i

if(fwrite(&student[i],sizeof(structstudent),1,fp)!

=1)

printf("写文件错误!

\n");

fclose(fp);

returni;

}

用于学生信息的存储。

函数输入――intinput()

列出所需输入的数据类型,并且调用Save函数,生成新的信息文件。

文件读取――intload_file()

在程序开头时即调用,检查是否已经存在信息文件,并告知用户文件内信息。

按照编号查询信息――intsearch_by_num()

在二级菜单中发挥作用,以学号为标准进行信息查询。

for(i=0;i

{

if(num==student[i].num&&student[i].num!

=0)

{

PRINT;

printf("%s%d%d%s%s%s%s%s%s",student[i].name,student[i].num,student[i].age,student[i].birthday,student[i].adr,student[i].mailbox,student[i].tel,student[i].email);

}

按姓名进行查询――intsearch_by_name()

for(i=0;i

{

if(strcmp(student[i].name,name)==0&&student[i].num!

=0)

{

printf("学生%s的信息",student[i].name);

PRINT;

printf("%s%d%d%s%s%s%s%s%s",student[i].name,student[i].num,student[i].age,student[i].birthday,student[i].adr,student[i].mailbox,student[i].tel,student[i].email);

}

以姓名和学号为标准,进行学生信息排列

for(i=0;i

{

if(strcmp(student[i].name,name)==0&&student[i].num!

=0)

{

printf("学生%s的信息",student[i].name);

PRINT;

printf("%s%d%d%s%s%s%s%s%s",student[i].name,student[i].num,student[i].age,student[i].birthday,student[i].adr,student[i].mailbox,student[i].tel,student[i].email);

学生信息按学号删除

intdelete_by_num()

{

intdelete_num=0,i,f=0;

printf("\n\n请输入您要删除学生的学号:

");

scanf("%d",delete_num);

for(i=0;i

{

if(student[i].num==delete_num)

{

student[i].num=0;

printf("该学生信息已删除!

");

学生信息按姓名删除

intdelete_by_name()

{

chardelete_name[20],i,f=0;

printf("\n\n请输入要删除学生的姓名:

");

scanf("%s",&delete_name);

for(i=0;i

{

if(strcmp(student[i].name,delete_name)==0)

{tudent[i].num=0;

printf("%s的信息已删除!

",student[i].name);

学生信息修改,通过switch语句对需要指定的信息进行修改。

四、系统实现

打开程序检测是否已存在学生信息文件:

 

初始菜单:

 

学生信息添加菜单:

 

二级菜单:

源代码:

/*学生信息管理系统*/

#include

#include

#include

#defineN100

#definePRINTprintf("姓名学号年龄出生年月地址邮编电话E-mail\n");

intsum=0;

structstudent

{

intnum;

charname[20];

intage;

charsex[5];

charbirthday[10];

charadr[20];

charmailbox[10];

chartel[10];

charemail[20];

}student[N],student2[N];

/*保存信息*/

intsave(intsum)

{

FILE*fp;

inti;

if((fp=fopen("student.txt","wt"))==NULL)

{

printf("读文件错误!

\n");

return0;

}

for(i=0;i

if(fwrite(&student[i],sizeof(structstudent),1,fp)!

=1)

printf("写文件错误!

\n");

fclose(fp);

returni;

}

voidclear()

{

getchar();

system("cls");

}

 

intinput()

{

inti,j,flag=1;

clear();

printf("添加学生信息,当输入学号为0时,将结束操作。

\n");

printf("输入例子:

\n");

printf("学号:

1\n");

printf("姓名:

ZhangFei\n");

printf("年龄:

18\n");

printf("性别:

M\n");

printf("出生年月:

19891007\n");

printf("地址:

Tianhe\n");

printf("邮编:

510000\n");

printf("电话:

12345678\n");

printf("E-mail:

\n");

for(i=1;i

{

printf("第%d个学生",i);

printf("学号:

");

scanf("%d",&student[i].num);

if(student[i].num==0)break;

for(j=0;j

{

if(student[j].num==student[i].num)

{

printf("学号重复,请重新输入学号:

\n");

flag=0;

break;

}

};

if(flag==0)break;

printf("姓名:

");

scanf("%s",student[i].name);

printf("年龄:

");

scanf("%d",&student[i].age);

printf("性别:

");

scanf("%s",student[i].sex);

printf("出生年月:

");

scanf("%s",student[i].birthday);

printf("地址:

");

scanf("%s",student[i].adr);

printf("邮编:

");

scanf("%s",student[i].mailbox);

printf("电话:

");

scanf("%s",student[i].tel);

printf("E-mail:

");

scanf("%s",student[i].email);

flag=1;

}

if(flag==1)

{

printf("你所输入的学生信息已添加成功!

\n");

printf("按回车键返回主菜单!

\n");

}

getchar();

sum=i;

save(sum);

returni;}

/*读取信息*/

intload_file()

{

FILE*fp;

inti=0;

if((fp=fopen("student.txt","rt"))==NULL)

{

printf("尚未发现已经保存的学生信息!

");

return0;

}

while(feof(fp)!

=1)

{

fread(&student[i],sizeof(structstudent),1,fp);

if(student[i].num==0)

break;

else

{

i++;

sum++;

}

}

printf("已有学生信息\n");

PRINT;

for(i=0;i

{

if(student[i].num!

=0)

printf("%s%d%d%s%s%s%s%s%s",student[i].name,student[i].num,student[i].age,student[i].birthday,student[i].adr,student[i].mailbox,student[i].tel,student[i].email);

}

printf("按回车键返回主菜单!

");

fclose(fp);

return(i);

}

/*输出信息*/

intoutput_message()

{

inti=0;

clear();

printf("\n\n----------------------------学生信息表--------------------------\n");

PRINT;

for(i=0;i

{

if(student[i].num!

=0)

printf("%s%d%d%s%s%s%s%s%s",student[i].name,student[i].num,student[i].age,student[i].birthday,student[i].adr,student[i].mailbox,student[i].tel,student[i].email);

}

printf("按回车键返回主菜单!

");

return0;

}

/*按编号查询*/

intsearch_by_num()

{

inti,j=0;

intnum;

clear();

printf("请输入要查询学生的编号:

");

scanf("%s",&num);

for(i=0;i

{

if(num==student[i].num&&student[i].num!

=0)

{

printf("编号为%d的学生信息",student[i].num);

PRINT;

printf("%s%d%d%s%s%s%s%s%s",student[i].name,student[i].num,student[i].age,student[i].birthday,student[i].adr,student[i].mailbox,student[i].tel,student[i].email);

}

elsej++;

}

if(j==sum)

printf("编号为%d的学生不存在!

",num);

printf("\n该生信息不存在!

");

getchar();

return0;

}

/*按姓名查询*/

intsearch_by_name()

{

inti,j=0;

charname[20];

clear();

printf("请输入要查询学生的姓名:

");

scanf("%s",name);

for(i=0;i

{

if(strcmp(student[i].name,name)==0&&student[i].num!

=0)

{

printf("学生%s的信息",student[i].name);

PRINT;

printf("%s%d%d%s%s%s%s%s%s",student[i].name,student[i].num,student[i].age,student[i].birthday,student[i].adr,student[i].mailbox,student[i].tel,student[i].email);

}

elsej++;

}

if(j==sum)

printf("该学生不存在!

");

printf("按回车键返回上级菜单!

");

getchar();

return0;

}

/*学生信息查询模块*/

inquire_message()

{

intchoice;

do

{

clear();

printf("\n\n\n*****学生信息查询*****\n\n");

printf("1.按学号查询;\n\n\n");

printf("2.按姓名查询;\n\n\n");

printf("0.返回主菜单;\n\n\n");

printf("请选择(0-2):

");

scanf("%d",&choice);

switch(choice)

{

case1:

search_by_num();break;

case2:

search_by_name();break;

case0:

break;

}

}while(choice!

=0);

return1;

}

/*两种排序方式*/

/*按编号排序*/

sort_by_num()

{inti;

PRINT;

for(i=0;i

{

printf("%s%d%d%s%s%s%s%s%s",student[i].name,student[i].num,student[i].age,student[i].birthday,student[i].adr,student[i].mailbox,student[i].tel,student[i].email);}

printf("按回车键返回上级菜单!

");

getchar();

return0;

}

sort_by_name()

{

inti,j=0;

charname[20];

clear();

printf("请输入要查询学生的姓名:

");

scanf("%s",name);

for(i=0;i

{

if(strcmp(student[i].name,name)==0&&student[i].num!

=0)

{

printf("学生%s的信息",student[i].name);

PRINT;

printf("%s%d%d%s%s%s%s%s%s",student[i].name,student[i].num,student[i].age,student[i].birthday,student[i].adr,student[i].mailbox,student[i].tel,student[i].email);

}

elsej++;

}

if(j==sum)

printf("该学生不存在!

");

printf("按回车键返回上级菜单!

");

getchar();

return0;

}

/*排序模块*/

sort_message()

{

intchoice;

do

{

clear();

printf("\n\n\n*****学生信息排序*****\n\n");

printf("1.按学号进行信息查询\n\n");

printf("2.按姓名进行信息查询\n\n");

printf("0.返回主菜单\n\n");

printf("请选择(0-2):

");

scanf("%d",&choice);

switch(choice)

{

case1:

sort_by_num();break;

case2:

sort_by_name();break;

case0:

break;

}

}while(choice!

=0);

return1;

}

 

voidrange()

{

inti,j=0,k=0;

for(i=0;i

{

if(student[i].num!

=0)

{

student2[j]=student[i];

j++;

}

elsek++;

}

sum-=k;

if(k!

=0)

{

for(i=0;i

{

student[i]=student2[i];

}

}

}

/*按编号删除*/

intdelete_by_num()

{

intdelete_num=0,i,f=0;

printf("\n\n请输入您要删除学生的学号:

");

scanf("%d",delete_num);

for(i=0;i

{

if(student[i].num==delete_num)

{

student[i].num=0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1