C语言课程设计代码.docx
- 文档编号:29224567
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:33
- 大小:157.57KB
C语言课程设计代码.docx
《C语言课程设计代码.docx》由会员分享,可在线阅读,更多相关《C语言课程设计代码.docx(33页珍藏版)》请在冰豆网上搜索。
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[
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 代码