通工C语言设计.docx
- 文档编号:3569970
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:41
- 大小:281.08KB
通工C语言设计.docx
《通工C语言设计.docx》由会员分享,可在线阅读,更多相关《通工C语言设计.docx(41页珍藏版)》请在冰点文库上搜索。
通工C语言设计
西安郵電學院
C语言课程设计报告
题目:
学生成绩管理系统
院系名称:
通信与信息工程学院
专业名称:
通信工程
班级:
学生姓名:
学号(8位):
指导教师:
设计起止时间:
2011年6月22日~2011年7月3日
一.设计目的
了解利用C语言进行程序设计,通过运用模块化利用数组设计程序的方法,培养能够熟练应用该方法进行程序的设计,进而提高运用C语言编辑程序的能力。
为进一步提高编程水平奠定良好的基础。
二.设计内容
通过C语言为主体,编写了一套学生成绩管理系统,该系统具有8项主要功能:
分别为输入、显示、排列、修改、删除、添加、打印、查询。
利用改程序可以在实际中处理问题,减少人工操作中的失误,以方便在实际工作可以利用此程序进行处理。
三.概要设计
1.方案设计对系统进行分析,给出结构图。
2.模块功能说明对各个模块功能模块图;
1.
2.各个模块详细的功能描述。
1、学生信息录入功能(学生信息用文件保存)--输入;
2、修改,删除,添加学生信息;
3、从文件中读取学生信息,查询学生信息,可按照学号查询;
4、从文件中读取学生信息,按储存量输出信息;
5、按照成绩给学生排序;
四.详细设计
1、学生信息录入功能(学生信息用文件保存)--输入;
2、修改,删除,添加学生信息;
3、从文件中读取学生信息,查询学生信息,可按照学号查询;
4、从文件中读取学生信息,按储存量输出信息;
5、按照成绩给学生排序;
1.功能函数的调用关系图
2.
2.各功能函数的数据流程图
2.重点设计及编码
设计重点放在了输入模块,如下是该模块源代码:
voidintput()
{
inti,x;
printf("您要录入多少个学生的信息?
\n请输入学生的数目!
\n");
scanf("%d",&x);
for(i=0;i<=x-1;i++)
{
printf("请输入第%d个学生的信息!
\n",i+1);
printf("录入学生学号:
");
scanf("%d",&stud[i].num);
printf("\n请录入学生性别:
");
scanf("%s",stud[i].sex);
printf("\n请录入学生姓名:
");
scanf("%s",stud[i].name);
printf("\n请录入数学成绩:
");
scanf("%f",&stud[i].math);
printf("\n请录入英语成绩:
");
scanf("%f",&stud[i].English);
printf("\n请录入物理成绩:
");
scanf("%f",&stud[i].physic);
sum++;
}
}
五.测试数据及运行结果
1.正常测试数据和运行结果
1登陆界面
2.显示信息模块
3.添加模块
1总体过程
编译和调试工具:
选择VisualC++6.0,该工具稳定,其中有一个强大的调试工具,比较熟悉。
2.运行录入模块的时候,输入数据如下:
学号:
12345
姓名:
jiangyue
性别:
woman
年龄:
18
生日:
199066
户籍:
china
运行查询模块时
输出数据如下:
学生学号--学生姓名--学生性别--学生年龄--学生出生日期--学生户籍
12345jiangyuewoman18199066china
2.异常测试数据及运行结果
运行新增模块的时候,学生学号太大时,输出的学号会与录入时的不同!
六.调试情况,设计技巧及体会
对于模块化程序设计,顾名思义,首先要总括一个模块系统,然后逐个设计出各个模块代码,这样不仅条理清晰,层次明确,而且是程序设计更加高效!
1.改进方案
程序本身功能较为全面,但是缺乏对班级,专业等整体化的功能模块!
可以通过指针,文件等功能来实现!
2.体会
应该多练习这种模块化的程序设计,以提高编程能力!
七.参考文献
1.王曙燕主编,C语言程序设计,科学出版社,2008年
2.谭浩强,《C程序设计》,清华大学出版社2002年
八.附录:
/**********************************************学生成绩管理系统***************************************************************
此程序为学生成绩管理系统,开发工具为Dev-C++5,共分为十二个函数功能模块.
一.函数简介:
*********************************************************************************************************************
1.信息修改模块:
此模块可以对学生的各项信息进行修改。
2.界面处理模块:
将各功能函数整合。
3.删除信息模块:
用于删除单个学生信息。
4.查找信息模块:
用于学生查询个人信息,具体可以按学号及姓名查询。
5.添加信息模块;用于学生将个人信息添加到本系统中。
6.信息录入模块:
用于大批量添加学生信息,注:
仅用于系统初始时批量录入!
7.显示信息模块:
用于显示全部学生信息及对信息分析参考数据,例如方差,各科平均分。
8.界面菜单模块:
显示系统登录后菜单选项。
9.界面登录模块:
输入系统登录密码模块。
10.信息排序模块:
按学生平均成绩由高到低对其信息进行排序。
11.数据存储模块:
以文本形式存储原始数据。
12.打印信息模块:
按原样将数据输出到指定文件。
二.总结:
**********************************************************************************************************************
此系统具备了一个学生成绩管理系统基本的功能,但是没有大量应用到指针,文件等相关的知识点.
未完,待改进.........
三.**********************************************************************************************************************
院系:
通信与信息工程学院
专业:
通信工程
班级:
1004
姓名:
张荣超
*/
/*************************************************程序预处理声明****************************************************/
#include
#include
#include
#include
#include
#defineN88
intsum;
structstudent
{
intnum;
charsex[5];
charname[20];
charmajor[30];
floatmath;
floatEnglish;
floatphysic;
floataver;
}t,stud[N];
/****************************************************函数声明***********************************************************/
voidmodify();/*信息修改模块*/
voiddeleted();/*删除信息模块*/
voidinquire();/*查找信息模块*/
voidinquire_num();/*按学号查询信息*/
voidinquire_name();/*按姓名查询信息*/
voidinsert();/*添加信息模块*/
voidintput();/*信息录入模块*/
voidoutput();/*显示信息模块*/
intread();/*读文件*/
voidcode();/*界面登录模块*/
voidsort();/*信息排序模块*/
intsave_message();/*存储学生信息*/
intadd_message();/*打印追加信息*/
voidad_windows();/*管理员界面菜单模块*/
voidst_windows();/*学生界面菜单模块*/
voidad_deal();/*管理员功能处理模块*/
voidst_deal();/*学生功能处理模块*/
/**********************************************录入学生信息(按学号升序输入)*********************************************/
voidintput()
{
inti,x;
printf("您要录入多少个学生的信息?
请输入学生的数目:
");
scanf("%d",&x);
for(i=0;i { printf("\n**************************************************\n"); printf("请输入第%d个学生的信息! \n",i+1); printf("请录入学生学号: "); scanf("%d",&stud[i].num); printf("\n请录入学生性别: "); scanf("%s",stud[i].sex); printf("\n请录入学生姓名: "); scanf("%s",stud[i].name); printf("\n请录入学生专业班级: "); scanf("%s",stud[i].major); printf("\n请录入数学成绩: "); scanf("%f",&stud[i].math); printf("\n请录入英语成绩: "); scanf("%f",&stud[i].English); printf("\n请录入物理成绩: "); scanf("%f",&stud[i].physic); sum++; } } /****************************************************查询学生信息模块********************************************************/ voidinquire() { voidfind_num(); voidfind_name(); intchoice; printf("\t\t\t\t\t1.按学号查询\n\t\t\t\t\t2.按姓名查询\n\t\t\t\t\t0.退出查询系统\n请选择(0-2): "); scanf("%d",&choice); switch(choice) { case1: inquire_num(); break; case2: inquire_name(); break; case0: break; } } /*************************************************查询学生信息,按学号查询****************************************************/ voidinquire_num() { inti,num1,j=1,a=read(); printf("请输入您要查找信息学生的学号: "); scanf("%d",&num1); for(i=0;i { if(stud[i].num==num1) { printf("要查找的同学的信息检索到! 如下: \n"); stud[i].aver=(stud[i].math+stud[i].English+stud[i].physic)/3; printf("**************************************************************************************************\n学号\t姓名\t专业\t性别\t数学\t英语\t物理\t平均分\n"); printf("%d\t%s\t%s\t%s\t%2.1f\t%2.1f\t%2.1f\t%2.1f\n\n",stud[i].num,stud[i].name,stud[i].major,stud[i].sex,stud[i].math,stud[i].English,stud[i].physic,stud[i].aver); j=0; } } if(j==1) printf("系统不存在此学生信息! \n"); } /*************************************************查询学生信息,按姓名查询******************************************************************/ voidinquire_name() { charname[20]; inti,j=1,a=read(); printf("请输入要查找的学生姓名: \n"); scanf("%s",name); for(i=0;i if(strcmp(stud[i].name,name)==0) { printf("要查找的同学的信息检索到! 如下: \n"); stud[i].aver=(stud[i].math+stud[i].English+stud[i].physic)/3; printf("****************************************************************************\n学号\t姓名\t专业\t性别\t数学\t英语\t物理\t平均分\n"); printf("%d\t%s\t%s\t%s\t%2.1f\t%2.1f\t%2.1f\t%2.1f\n\n",stud[i].num,stud[i].name,stud[i].major,stud[i].sex,stud[i].math,stud[i].English,stud[i].physic,stud[i].aver); j=0; } if(j==1) printf("系统不存在此学生信息! \n"); } /*****************************************************添加学生信息**************************************************************/ voidinsert() { intflag; charchoice; do { system("cls"); printf("\n\n\n***************************************"); printf("\n请开始录入第%d个学生的信息! \n",sum+1); printf("请录入学生学号: "); scanf("%d",&stud[sum].num); printf("\n请录入学生性别: "); scanf("%s",stud[sum].sex); printf("\n请录入学生姓名: "); scanf("%s",stud[sum].name); printf("\n请录入学生专业班级: "); scanf("%s",stud[sum].major); printf("\n请录入数学成绩: "); scanf("%f",&stud[sum].math); printf("\n请录入英语成绩: "); scanf("%f",&stud[sum].English); printf("\n请录入物理成绩: "); scanf("%f",&stud[sum].physic); sum++; printf("要继续添加吗? (Y/N): "); choice=getch(); if(choice=='y'||choice=='Y') { printf("继续! "); flag=1; } elseflag=0; }while(flag==1); } /*******************************************************删除学生信息**************************************************************/ voiddeleted() { intx,i,j,num4,flag,n=0; charchoice; do { system("cls"); printf("请输入要删除的学生学号: "); scanf("%d",&num4); for(i=0;i<=sum-1;i++) if(stud[i].num==num4) { n=1; printf("\n要删除的学生信息找到! \n"); x=i; } if(n==0) { printf("要删除的学生不存在! \n按任意键退出! "); getch(); break; } for(j=x;j stud[j]=stud[j+1]; sum--; printf("学号为%d的学生信息已删除! \n要继续删除吗(Y/N)\n",num4); choice=getch(); if(choice=='Y'||choice=='y') { printf("继续! "); flag=1; } elseflag=0; }while(flag==1); } /********************************************************信息输出模块**************************************************************/ voidoutput() { inti,a=read(); doubles1=0,s2=0,s3=0,math=0,English=0,physic=0; printf("\n\n\n\t\t\t\t总学生信息记录"); printf("\n\n\n*********************************************************************************************"); printf("\n学号\t姓名\t性别\t专业\t\t数学\t\t英语\t\t物理\t\t平均\n"); for(i=0;i { math+=stud[i].math; English+=stud[i].English; physic+=stud[i].physic; stud[i].aver=(stud[i].math+stud[i].English+stud[i].physic)/3; printf("%d\t%s\t%s\t%s\t%4.2f\t\t%4.2f\t\t%4.2f\t\t%4.2f\n",stud[i].num,stud[i].name,stud[i].sex,stud[i].major,stud[i].math,stud[i].English,stud[i].physic,stud[i].aver); } math=math/a; English=English/a; physic=physic/a;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通工 语言 设计