C语言课程设计代码Word文档下载推荐.docx
《C语言课程设计代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言课程设计代码Word文档下载推荐.docx(29页珍藏版)》请在冰豆网上搜索。
包括课程设计过程中的学习体会与收获,出现的问题和解决的方法,没有完成的部分及原因,对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)学生信息查询。
(结构体,循环结构,选择结构)
2.详细设计
(1)界面
初始菜单界面
*********欢迎使用学生信息管理系统********
请选择:
1.学生信息添加
2.修改或删除学生信息
3.学生信息查询
4.退出
二级菜单
********学生信息的更改*******
1.学生信息的删除
2.学生信息的修改
0.返回主菜单
请选择(0-2)
********学生信息删除********
1.按编号删除
2.按删除
********学生信息查询********
1.按学号进行信息查询
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<
sum;
i++)
if(fwrite(&
student[i],sizeof(structstudent),1,fp)!
=1)
写文件错误!
fclose(fp);
returni;
}
用于学生信息的存储。
函数输入――intinput()
列出所需输入的数据类型,并且调用Save函数,生成新的信息文件。
文件读取――intload_file()
在程序开头时即调用,检查是否已经存在信息文件,并告知用户文件信息。
按照编号查询信息――intsearch_by_num()
在二级菜单中发挥作用,以学号为标准进行信息查询。
for(i=0;
if(num==student[i].num&
&
student[i].num!
=0)
PRINT;
%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()
if(strcmp(student[i].name,name)==0&
学生%s的信息"
student[i].name);
PRINT;
%s%d%d%s%s%s%s%s%s"
以和学号为标准,进行学生信息排列
printf("
学生信息按学号删除
intdelete_by_num()
intdelete_num=0,i,f=0;
\n\n请输入您要删除学生的学号:
"
scanf("
%d"
delete_num);
if(student[i].num==delete_num)
student[i].num=0;
该学生信息已删除!
学生信息按删除
intdelete_by_name()
chardelete_name[20],i,f=0;
\n\n请输入要删除学生的:
scanf("
%s"
&
delete_name);
if(strcmp(student[i].name,delete_name)==0)
{tudent[i].num=0;
%s的信息已删除!
学生信息修改,通过switch语句对需要指定的信息进行修改。
打开程序检测是否已存在学生信息文件:
初始菜单:
学生信息添加菜单:
二级菜单:
源代码:
/*学生信息管理系统*/
#include<
stdio.h>
string.h>
stdlib.h>
#defineN100
#definePRINTprintf("
学号年龄出生年月地址邮编E-mail\n"
intsum=0;
/*保存信息*/
voidclear()
getchar();
system("
cls"
intinput()
inti,j,flag=1;
clear();
添加学生信息,当输入学号为0时,将结束操作。
输入例子:
学号:
1\n"
:
ZhangFei\n"
年龄:
18\n"
性别:
M\n"
出生年月:
19891007\n"
地址:
Tianhe\n"
邮编:
510000\n"
12345678\n"
E-mail:
123163.\n"
for(i=1;
N;
第%d个学生"
i);
student[i].num);
if(student[i].num==0)break;
for(j=0;
j<
j++)
if(student[j].num==student[i].num)
学号重复,请重新输入学号:
flag=0;
break;
};
if(flag==0)break;
student[i].age);
student[i].sex);
student[i].birthday);
student[i].adr);
student[i].mailbox);
student[i].tel);
student[i].email);
flag=1;
if(flag==1)
你所输入的学生信息已添加成功!
按回车键返回主菜单!
getchar();
sum=i;
save(sum);
returni;
/*读取信息*/
intload_file()
inti=0;
rt"
尚未发现已经保存的学生信息!
while(feof(fp)!
fread(&
student[i],sizeof(structstudent),1,fp);
if(student[i].num==0)
else
i++;
sum++;
已有学生信息\n"
if(student[i].num!
按回车键返回主菜单!
return(i);
/*输出信息*/
intoutput_message()
\n\n----------------------------学生信息表--------------------------\n"
/*按编号查询*/
intsearch_by_num()
inti,j=0;
请输入要查询学生的编号:
num);
编号为%d的学生信息"
student[i].num);
elsej++;
if(j==sum)
编号为%d的学生不存在!
"
num);
\n该生信息不存在!
/*按查询*/
intsearch_by_name()
请输入要查询学生的:
name);
该学生不存在!
按回车键返回上级菜单!
/*学生信息查询模块*/
inquire_message()
intchoice;
do
\n\n\n*****学生信息查询*****\n\n"
1.按学号查询;
\n\n\n"
2.按查询;
0.返回主菜单;
请选择(0-2):
choice);
switch(choice)
case1:
search_by_num();
break;
case2:
search_by_name();
case0:
}while(choice!
=0);
return1;
}
/*两种排序方式*/
/*按编号排序*/
sort_by_num()
{inti;
sort_by_name()
/*排序模块*/
sort_message()
\n\n\n*****学生信息排序*****\n\n"
1.按学号进行信息查询\n\n"
2.按进行信息查询\n\n"
0.返回主菜单\n\n"
sort_by_num();
sort_by_name();
voidrange()
inti,j=0,k=0;
student2[j]=student[i];
j++;
elsek++;
sum-=k;
if(k!
{
student[i]=student2[i];
/*按编号删除*/
f=1;
range();
if(f==0)
\n\n******经查并无该