车辆管理系统和学生成绩管理系统课程设计Word文件下载.docx
- 文档编号:21569142
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:29
- 大小:125.30KB
车辆管理系统和学生成绩管理系统课程设计Word文件下载.docx
《车辆管理系统和学生成绩管理系统课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《车辆管理系统和学生成绩管理系统课程设计Word文件下载.docx(29页珍藏版)》请在冰豆网上搜索。
可以用VisulC++软件对此信息的录入进行优化,对其中的各信息逐个按提示进行录入,用一个变量i,如果i<
n,则循环录入,否则就跳出循环。
模块二:
基于车牌号查询违章记录
把所要查询的车牌号与之前信息录入所编成的信息构成的数组元素逐个相比较,如果有相同的则输出该车辆的违章记录,如果没有与之相同的,则提示无违章记录。
也是用一个for循环语句来完成。
实验结果(包括输入数据和输出结果)
运行程序,打印菜单项。
输入1,输入车辆数目1,提示输入车牌号,输入ji12345。
提示输入车主姓名,输入wangming,提示输入违停次数,输入1,提示输入闯红灯次数,输入1,提示输入超速次数,输入1。
。
提示输入要查询的车牌号,输入AS12369,提示查无此车辆信息;
重新进行编译,运行程序,打印菜单项。
提示输入要查询的车辆数,输入1。
提示输入要查询的车牌号,输入ji12345,显示:
该车辆违章信息如下:
违停次数:
1;
闯红灯次数2,超速次数:
2;
该车辆的罚款信息如下:
违停罚款:
100;
闯红灯罚款:
400;
超速罚款:
1000;
总罚款1500。
体会
本次实验编程过程中仍然出现了不少问题,但是只要掌握了所学基本知识,细心编码,通过编译查找小问题,逐块进行,自然水到渠成,本次实验让我体会到,编写程序时,一定要认真仔细,避免一些小错误而影响整个程序的运行。
附录:
程序清单
/*车辆违章管理系统*/
#include<
stdio.h>
string.h>
charvno[8];
/*车牌号*/
charname[15];
/*车主姓名*/
inttimes1;
/*违章停车次数*/
inttimes2;
/*闯红灯次数*/
inttimes3;
/*超速次数*/
structPePe[100];
inta;
voidinput()
{intb,i;
printf("
请输入需要录入信息的个数:
\n"
);
scanf("
%d"
&
b);
for(i=0;
i<
b;
i++)
{printf("
请输入车牌号码:
%s"
Pe[i].vno);
请输入车主姓名:
Pe[i].name);
请输入该车违章停车次数:
Pe[i].times1);
请输入该车闯红灯次数:
Pe[i].times2);
请输入该车超速次数:
Pe[i].times3);
}
voidsearch()/{charnum[8];
intc,d=0,i;
请输入要查询车辆的车牌号码:
num);
100;
{
if(strcmp(num,Pe[i].vno)==0)
{c=i;
d++;
}
if(d==0)printf("
查无此车信息\n"
else
%s%s\n该车违章停车%d次,times2(闯红灯)%d次,超速行驶%d次\n"
Pe[c].vno,Pe[c].name,Pe[c].times1,Pe[c].times2,Pe[c].times3);
voidfine(){charnum[8];
inti,sum,f=0;
printf("
{f++;
sum=Pe[i].times1*100+Pe[i].times2*200+Pe[i].times3*500;
}
if(f==0)printf("
{printf("
%s%s\n该车罚款总金额为%d元。
Pe[i].vno,Pe[i].name,sum);
voidmain()
***************程序主菜单**************\n*欢迎您使用车辆违章管理系统*\n"
/*系统目录创建*/
printf("
\n"
[1.车辆及违章信息的录入。
]\n\n[2.基于车牌号查询每台车辆的违章情况。
]\n\n[3.基于车牌号统计每台车辆的罚款总金额。
]\n\n[4.退出系统。
]\n\n"
请输入服务项目代号:
退出系统请按4!
a);
while(a!
=4){
switch(a)
{case1:
input();
break;
case2:
search();
case3:
fine();
case4:
default:
您的输入有误请重试。
请再次输入服务项目代号:
实验题目二:
学生成绩管理系统
一、需要处理的基础数据
学生基本信息包括:
学号(如2010级14班6号写作20101406)
姓名
性别
出生年月日
课程对应的考试成绩(外语SCORE[0]、高数SCORE[1]、C语言SCORE[2]、马哲SCORE[3])
平均成绩和总成绩
二、系统功能
1.学生基本情况录入。
要求对输入的性别、出生年月日的合理性进行判断(如0代表“女”,1代表“男”,输入其他值非法,年龄不能为负,月份不能大于13等)。
2.允许对已经录入的数据进行显示。
3.允许进行数据的插入。
4.删除基本数据的相关信息。
5.基于姓名的查询。
如:
姓张的所有同学。
6.基于各种基本数据的统计计算。
①统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩)。
②列出90分及以上、80分及以上、70分及以上、60分及以上、不及格学生清单(学号、姓名、不及格的课程和成绩)。
③统计并输出各门功课的平均成绩和总平均成绩。
④按班级统计并输出总成绩(需对学号进行解析)。
2.系统功能模块结构图
3.数据结构设计及用法说明
学生基本信息:
学号(例如2011级21班10号写作52112110)、姓名、性别、出生年月日、课程名称(外语SCORE[0]、高数SCORE[1]、C语言SCORE[2]、马哲SCORE[3])、考试成绩等。
这些信息采用结构体数据类型表示更为方便。
同时,学生数量可能的不确定性,采用链表存数更符合实际。
所以采用结构体数据结构。
typedefstructSt1
charIDNumber[16];
/*学号*/
charFamilyName[16];
/*姓*/
charGivenName[16];
/*名*/
intsex;
/*性别(0代表“女”,1代表“男”)*/
intBirthYear;
/*出生年*/
intBirthMonth;
/*出生月*/
intBirthDay;
/*出生日*/
floatscore[4];
/*成绩*/
floatsum;
/*总分*/
floataverage;
/*平均分*/
structSt1*next;
}StudentNode;
其中charIDNumber[16]用来存储学号,charFamilyName[16]用来存储姓,charGivenName[16]用来存储名,intsex存储性别(0代表“女”,1代表“男”),intBirthYear;
存储年份,intBirthMonth存储月份。
intBirthDay存储日,floatscore[4]存储四门课的成绩,floatsum存储总分,floataverage存储平均分,structSt1*next存储结构体指针。
4.程序结构(画流程图)
(流程图参见下页)
5.各模块的功能
各模块的功能在程序中的说明处都已写明,此处不再赘述。
其中系统调用的函数功能如下。
1)structstudent*creat(void)表示的是信息录入的结构体功能函数
2)structstudent*del()structstudent*p1传递头指针,如果输入的要删除的数据为前面录入的信息中的数据,则显示删除成功,否则显示数据未找到。
此函数完成删除功能。
3)voidprint()为显示功能函数。
显示前面已经录入的信息,如果先执行的删除函数,则显示的是录入数据除去一删除的数据。
4)structstudent*insert()为信息插入函数。
该函数对要插入的信息逐个进行提示。
在此之前,先对已有的学生的学号进行排序,然后才执行排序功能。
5)voidprint()为显示功能函数。
6)structstudent*insert()为信息插入函数。
7)voidsearch()为录入学生信息进行基于姓名查找记录的功能函数
8)voidcompute()为计算总成绩和平均成绩的函数。
9)voidquery()为按班级查询学生总分的函数
10)structstudent*rank()为排序功能函数。
以上各函数的功能实现思路均在程序里有体现。
6.运行结果(包括输入数据和输出结果)
输入1,提示请输入学号;
输入52112016,提示请输入班级,输入20;
提示请输入姓;
输入赵,提示请输入名;
输入鹏,提示请输入性别;
输入1,提示请输入出生年;
输入1991,提示请输入出生月;
输入12,提示请输入出生日;
输入04,提示请输入外语成绩;
输入89,提示请输入高数成绩;
输入85,提示请输入C语言成绩;
输入90,提示请输入马哲成绩;
输入98。
然后显示“请输入您要查找的菜单”
选择2,则提示输入要删除的学生的学号,如果输入的与已录入的信息不一致(如52112025)则显示“对不起,无此学生信息记录”
然后继续显示“请输入您要查找的菜单”
选择3,则直接显示出上官西门的学生成绩,包括总分和平均分。
输入4,下面继续提示请输入您要查找的学生的姓名。
如果输入的与“赵鹏”不一样,则提示“无记录”,若一致则输出录入的正确信息。
然后继续显示“请输入您要查找的菜单”
选择5,提示“请输入文件的绝对路径”,输入D:
\\s,显示“文件保存成功”
然后继续显示“请输入您要查找的菜单”
选择6,提示“请输入文件的绝对路径”,输入D:
\\s,提示“文件读取成功”。
选择7,提示“请输入需要计算总分与平均分的学生的学号”,输入后显示学生的平均分的学生的学号。
选择8,提示“请选择显示学生总分的班级”,输入班级后就显示出了该班级的学生总分。
选择9,提示“请输入要插入的学生学号”,输入后提示输入班级和各科成绩,输入后进行了插入功能。
输入10,退出了程序
7.体会
此次程序设计运用了链表,而之前我对链表还是未入门。
通过这次试验,我认真的把书上的链表知识学习了一遍,加上实验使我更加快更加深刻的理解了它。
在这次实验中收获颇丰。
总结此次设计过程,前面的几个过程均是我自己翻看课本然后套用格式进行下来的,都得到了正确的结果。
但是其中有几个功能,如按姓名查找,输入班级计算总分和将链表中记录保存到文件中这三个功能,由于对链表并没有深刻理解,课本上也没涉及这些功能的例子,所以只好借鉴同学的部分程序,经过自己的处理,让结果运行了出来,但是排序的功能真的是有些困难,所以经过向同学请教加上自己的思考,,也有很大收获,所以这次实验对我的学习和生活的意义是重大的。
/*学生成绩管理系统*/
process.h>
#include<
time.h>
string.h>
#defineM100
#definenull0
charidnumber[16];
charfamilyname[16];
chargivenname[16];
/*性别(0代表"
女"
,1代表"
男"
)*/
intbirthyear;
intbirthmonth;
intbirthday;
charles;
/*课程名称*/
floatscore[100];
}Studentnode;
Studentnodestu[M],*head,*p,*q,stu1,*pre;
voidmain()
{
intnum;
intx=1;
voidshuru();
voidshanchu();
voidchazhao();
voidjisuan();
voidchafen();
voidcharu();
while(x)
\n***********************************\n"
欢迎进入学生成绩管理系统\n"
***********************************\n"
[1.输入学生信息]\n"
[2.删除已有学生信息]\n"
[3.根据姓名查找]\n"
[4.计算成绩]\n"
[5.按班级查找]\n"
[6.插入学生信息]\n"
[7.退出]\n"
请选择:
"
num);
switch(num)
{
case1:
shuru();
shanchu();
break;
case3:
chazhao();
case4:
jisuan();
case5:
chafen();
case6:
charu();
case7:
x=0;
default:
输入有误!
}
voidshuru()
{structtm*ptm;
longts;
inty,m,d,h,n,s;
ts=time(NULL);
ptm=localtime(&
ts);
y=ptm->
tm_year+1900;
//年
m=ptm->
tm_mon+1;
//月
d=ptm->
tm_mday;
//日
h=ptm->
tm_hour;
//时
n=ptm->
tm_min;
//分
s=ptm->
tm_sec;
//秒
intkey,xb1,year,month,day;
inti;
head=stu;
for(i=0;
M;
输入请按1,返回请按2\n"
scanf("
key);
if(key==1)
{printf("
输入学号:
scanf("
stu[i].idnumber);
printf("
输入姓氏:
scanf("
stu[i].familyname);
\n输入名字:
stu[i].givenname);
输入性别:
\n(0代表'
女'
1代表'
男'
)\n"
scanf("
xb1);
if(xb1==0||xb1==1)stu[i].sex=xb1;
else
\n输入出生年:
year);
\n输入出生月:
month);
\n输入出生日:
day);
if(year<
y)stu[i].birthyear=year;
else
if(month<
13)stu[i].birthmonth=month;
if(day<
32)stu[i].birthday=day;
高数:
%f"
stu[i].score[1]);
c语言:
stu[i].score[2]);
马哲:
stu[i].score[3]);
外语:
stu[i].score[4]);
思修:
stu[i].score[5]);
毛概:
stu[i].score[6]);
信号:
stu[i].score[7]);
电路:
stu[i].score[8]);
stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3]+stu[i].score[4]+stu[i].score[5]+stu[i].score[6]+stu[i].score[7]+stu[i].score[8];
总分:
%f\n"
stu[i].sum);
stu[i].average=stu[i].sum/8;
平均分:
stu[i].average);
stu[i].next=&
stu[i+1];
stu[i].next=null;
break;
voidshanchu()
{charid[16];
intk;
输入要删除学生的学号:
"
id);
for(k=0;
k<
k++)
{if(strcmp(id,stu[k].idnumber)==0)
{if(k==0)
{head=&
stu[1];
记录已删除!
else
if(stu[k].next!
=null)
{stu[k-1].next=&
stu[k+1];
printf("
break;
}
elsestu[k-1].next=null;
if(k==M)
不存在此信息"
voidchazhao()
{charname[16];
请输入要查找的姓氏:
name);
p=hea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 车辆 管理 系统 学生 成绩管理系统 课程设计