用C语言设计一个学生成绩管理系统
#include #include #include #define MAX 1000/*定义学生成绩信息结构*/struct stu{char id[8];char name[8];扩展资料:short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)signed:修饰整型数据,有符号数据类型。(C89标准新增)unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新增)复杂类型关键字struct:结构体声明。(K&R时期引入)union:联合体声明。(K&R时期引入)enum:枚举声明。(C89标准新增)typedef:声明类型别名。(K&R时期引入)sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入)inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)参考资料来源:百度百科-c语言
C语言课程设计
3、班级通讯录管理系统设计与实现 以本班同学的具体数据为背景,设计一个本班同学实现以下功能: 1)通讯录编辑(添加、删除) ; 2)按不同的项进行查找; 3)对已存在的通讯录按不同的项排序; 4)将通讯录写入文件; 5)从文件读入通讯录。 备注:通讯录至少应该有以下数据项:姓名,地址,电话,邮编,E-mail。 链接: https://pan.baidu.com/s/1mq8kqN3BvK0IvZBEUP9Oag 提取码: 1111 6、成绩记录簿设计与实现 实现以下功能: 1)创建信息并以磁盘文件保存; 2)读取磁盘文件并显示输出所有学生的成绩; 3)按学号或姓名查询成绩; 4)添加成绩记录; 5)修改指定姓名或学号的学生的成绩并可存盘; 6)显示输出60分以下、60 79、80 89、90分以上各分数段的学生信息。 备注:每个学生信息包括:学号、姓名、C语言成绩。 链接: https://pan.baidu.com/s/1mq8kqN3BvK0IvZBEUP9Oag 提取码: 1111 7、学生籍贯信息记录簿设计与实现 实现以下功能: 1)创建信息并以磁盘文件保存; 2)读取磁盘文件并显示输出所有学生的籍贯信息; 3)按学号或姓名查询其籍贯; 4)按籍贯查询并输出该籍贯的所有学生; 5)能添加、删除和修改学生的籍贯信息; 6)显示输出四川籍和非四川籍学生的信息并可分别存盘。 备注:每个学生信息包括:学号、姓名、籍贯 链接: https://pan.baidu.com/s/1mq8kqN3BvK0IvZBEUP9Oag 提取码: 1111 9、图书信息管理系统设计与实现 实现以下功能: 1)系统以菜单方式工作; 2)图书信息录入功能(图书信息用文件保存); 3)图书信息浏览功能; 4)查询和排序功能; 备注:图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。 链接: https://pan.baidu.com/s/1mq8kqN3BvK0IvZBEUP9Oag 提取码: 1111 10、学生信息管理系统设计与实现 实现以下功能: 1)系统以菜单方式工作; 2)学生信息录入功能(学生信息用文件保存) ; 3)学生信息浏览功能; 4)查询、排序功能(至少两种查询依据和两种排序依据); 5)学生信息删除、修改功能。 备注:学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E- mail等。 链接: https://pan.baidu.com/s/1mq8kqN3BvK0IvZBEUP9Oag 提取码: 1111 12、职工工作量统计系统设计与实现 完成以下功能: 1)输入职工工号和完成的产品数量,程序允许同- -职工有多次输入,由程序对 其完成的产品数量实现累计; 2)按完成数量对职工排序,并确定名次; 3)按完成的产品数量由多到少的顺序,输出名次、同一名次的职工人数及他们 的工号(工号由小到大顺序输出)。 链接: https://pan.baidu.com/s/1mq8kqN3BvK0IvZBEUP9Oag 提取码: 1111
C语言,学生成绩管理系统
C语言课程设计任务书
一、题目: 学生成绩管理
二、目的与要求
1. 目的:
(1)基本掌握面向过程程序设计的基本思路和方法;
(2)达到熟练掌握C语言的基本知识和技能;
(3)能够利用所学的基本知识和技能,解决简单的程序设计问题
2. 要求
基本要求:
1. 要求利用C语言面向过程的编程思想来完成系统的设计;
2. 突出C语言的函数特征,以多个函数实现每一个子功能;
3. 画出功能模块图;
4. 进行简单界面设计,能够实现友好的交互;
5. 具有清晰的程序流程图和数据结构的详细定义;
6. 熟练掌握C语言对文件的各种操作。
创新要求:
在基本要求达到后,可进行创新设计,如系统用户功能控制,对管理员级和一般级别的用户系统功能操作不同
三、信息描述
输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩。编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,最后打印一张按高分到低分名次排序的成绩单。要求:
1)排序用一个函数实现。
2)打印的成绩单表项包括:序号,学号、数学、英语、计算机、总分、平均分。
3)按实验报告电子模板格式填写实验内容。
四、功能描述
1. 学生基本信息及成绩所选科目成绩的录入。
2. 基本信息的查询(分系、班级;分科目)与修改。
3. 对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);
4. 对所开课程的成绩分析(求其平均成绩,最高分和最低分);
5. 对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息)
五、解决方案
1. 分析程序的功能要求,划分程序功能模块。
2. 画出系统流程图。
3. 代码的编写。定义数据结构和各个功能子函数。
4. 程序的功能调试。
5. 完成系统总结报告以及使用说明书
六、进度安排
此次课程设计时间为两周,分四个阶段完成:
1. 分析设计阶段。指导教师应积极引导学生自主学习和钻研问题,明确设计要求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。
2. 编码调试阶段:根据设计分析方案编写C代码,然后调试该代码,实现课题要求的功能。
3. 总结报告阶段:总结设计工作,写出课程设计说明书,要求学生写出需求分析、总体设计、详细设计、编码、测试的步骤和内容。
4. 考核阶段。
#include
#include
#define STU_NUM 10 /*宏定义学生的数量*/
struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/
{
char stu_id[20]; /*学生学号;*/
float score[3]; /*三门课成绩;*/
float total; /*总成绩;*/
float aver; /*平均成绩;*/
};
/*排序用一个函数来实现*/
void SortScore(student *stu,int n)
{
student stud;
for(int i = 0; i < n-1; i++)
for(int j = i+1 ; j < n; j++)
{
if(stu[i].total < stu[j].total)
{
stud = stu[i];
stu[i] = stu[j];
stu[j] = stud;
}
}
}
int main( )
{
student stu[STU_NUM]; /*创建结构体数组中有10个元素,分别用来保存这10个人的相关信息。*/
/*输入这十个学生的相关信息*/
for(int i = 0; i
printf("请输入第%d个学生的学号:",i+1);
scanf("%s",&stu[i].stu_id);
printf("输入第%d个学生的数学成绩:",i+1);
scanf("%f",&stu[i].score[0]);
printf("输入第%d个学生的英语成绩:",i+1);
scanf("%f",&stu[i].score[1]);
printf("输入第%d个学生的计算机成绩:",i+1);
scanf("%f",&stu[i].score[2]);
stu[i].total = stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
stu[i].aver = stu[i].total/3;
}
printf("\n");
SortScore(stu,STU_NUM);/*调用排序函数*/
/*输出排序后的各学生的成绩*/
for(i = 0 ; i < STU_NUM; i++)
{
printf("序号: %d\t",i);
printf("学号:%s\t",stu[i].stu_id);
printf("数学:%f\t",stu[i].score[0]);
printf("英语:%f\t",stu[i].score[1]);
printf("计算机:%f\t",stu[i].score[2]);
printf("平均成绩:%f\t",stu[i].aver);
printf("总分:%f\t",stu[i].total);
printf("\n\n");
}
return 0;
}
注:(源程序中主要标识符含义说明)
#define STU_NUM 10 /*宏定义学生的数量*/
struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/
{
char stu_id[20]; /*学生学号;*/
float score[3]; /*三门课成绩;*/
float total; /*总成绩;*/
float aver; /*平均成绩;*/
}
实验结果:
输入 :(只输入后面的数字,前面的文字是自己产生的)。
请输入第1个学生的学号:001
输入第1个学生的数学成绩:1
输入第1个学生的英语成绩:1
输入第1个学生的计算机成绩:1
请输入第2个学生的学号:002
输入第2个学生的数学成绩:2
输入第2个学生的英语成绩:2
输入第2个学生的计算机成绩:2
请输入第3个学生的学号:003
输入第3个学生的数学成绩:3
输入第3个学生的英语成绩:3
输入第3个学生的计算机成绩:3
请输入第4个学生的学号:004
输入第4个学生的数学成绩:4
输入第4个学生的英语成绩:4
输入第4个学生的计算机成绩:4
请输入第5个学生的学号:005
输入第5个学生的数学成绩:5
输入第5个学生的英语成绩:5
输入第5个学生的计算机成绩:5
请输入第6个学生的学号:006
输入第6个学生的数学成绩:6
输入第6个学生的英语成绩:6
输入第6个学生的计算机成绩:6
请输入第7个学生的学号:007
输入第7个学生的数学成绩:7
输入第7个学生的英语成绩:7
输入第7个学生的计算机成绩:7
请输入第8个学生的学号:008
输入第8个学生的数学成绩:8
输入第8个学生的英语成绩:8
输入第8个学生的计算机成绩:8
请输入第9个学生的学号:009
输入第9个学生的数学成绩:9
输入第9个学生的英语成绩:9
输入第9个学生的计算机成绩:9
请输入第10个学生的学号:010
输入第10个学生的数学成绩:10
输入第10个学生的英语成绩:10
输入第10个学生的计算机成绩:10
输出:
序号: 0 学号:010 数学:10.000000 英语:10.000000 计算机:10.000000
平均成绩:10.000000 总分:30.000000
序号: 1 学号:009 数学:9.000000 英语:9.000000 计算机:9.000000
平均成绩:9.000000 总分:27.000000
序号: 2 学号:008 数学:8.000000 英语:8.000000 计算机:8.000000
平均成绩:8.000000 总分:24.000000
序号: 3 学号:007 数学:7.000000 英语:7.000000 计算机:7.000000
平均成绩:7.000000 总分:21.000000
序号: 4 学号:006 数学:6.000000 英语:6.000000 计算机:6.000000
平均成绩:6.000000 总分:18.000000
序号: 5 学号:005 数学:5.000000 英语:5.000000 计算机:5.000000
平均成绩:5.000000 总分:15.000000
序号: 6 学号:004 数学:4.000000 英语:4.000000 计算机:4.000000
平均成绩:4.000000 总分:12.000000
序号: 7 学号:003 数学:3.000000 英语:3.000000 计算机:3.000000
平均成绩:3.000000 总分:9.000000
序号: 8 学号:002 数学:2.000000 英语:2.000000 计算机:2.000000
平均成绩:2.000000 总分:6.000000
序号: 9 学号:001 数学:1.000000 英语:1.000000 计算机:1.000000
平均成绩:1.000000 总分:3.000000
七、撰写课程设计报告或课程设计总结
课程设计报告要求:
总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。
C语言常见错误
书写标识符时,忽略了大小写字母的区别
main()
{
int a=5;
printf("%d",A);
}
编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
2.忽略了变量的类型,进行了不合法的运算。
main()
{
float a,b;
printf("%d",a%b);
}
%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。
3.将字符常量与字符串常量混淆。
char c;
c="a";
在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。
4.忽略了“=”与“==”的区别。
在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写
if (a=3) then …
但C语言中,“=”是赋值运算符,“==”是关系运算符。如:
if (a==3) a=b;
前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。
5.忘记加分号。
分号是C语句中不可缺少的一部分,语句末尾必须有分号。
a=1
b=2
编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。
{ z=x+y;
t=z/100;
printf("%f",t);
}
对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。
6.多加分号。
对于一个复合语句,如:
{ z=x+y;
t=z/100;
printf("%f",t);
};
复合语句的花括号后不应再加分号,否则将会画蛇添足。
又如:
if (a%3==0);
I++;
本是如果3整除a,则I加1。但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都将自动加1。
再如:
for (I=0;I<5;I++);
{scanf("%d",&x);
printf("%d",x);}
本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。
7.输入变量时忘记加地址运算符“&”。
int a,b;
scanf("%d%d",a,b);
这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。
8.输入数据的方式与要求不符。①scanf("%d%d",&a,&b);
输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:
3,4
输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。
②scanf("%d,%d",&a,&b);
C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:
3,4
此时不用逗号而用空格或其它字符是不对的。
3 4 3:4
又如:
scanf("a=%d,b=%d",&a,&b);
输入应如以下形式:
a=3,b=4
9.输入字符的格式与要求不一致。
在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。
scanf("%c%c%c",&c1,&c2,&c3);
如输入a b c
字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。
10.输入输出的数据类型与所用格式说明符不一致。
例如,a已定义为整型,b定义为实型
a=3;b=4.5;
printf("%f%d\n",a,b);
编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。
11.输入数据时,企图规定精度。
scanf("%7.2f",&a);
这样做是不合法的,输入数据时不能规定精度。
12.switch语句中漏写break语句。
例如:根据考试成绩的等级打印出百分制数段。
switch(grade)
{ case 'A':printf("85~100\n");
case 'B':printf("70~84\n");
case 'C':printf("60~69\n");
case 'D':printf("<60\n");
default:printf("error\n");
由于漏写了break语句,case只起标号的作用,而不起判断作用。因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例如
case 'A':printf("85~100\n");break;
13.忽视了while和do-while语句在细节上的区别。
(1)main()
{int a=0,I;
scanf("%d",&I);
while(I<=10)
{a=a+I;
I++;
}
printf("%d",a);
}
(2)main()
{int a=0,I;
scanf("%d",&I);
do
{a=a+I;
I++;
}while(I<=10);
printf("%d",a);
}
可以看到,当输入I的值小于或等于10时,二者得到的结果相同。而当I>10时,二者结果就不同了。因为while循环是先判断后执行,而do-while循环是先执行后判断。对于大于10的数while循环一次也不执行循环体,而do-while语句则要执行一次循环体。
14.定义数组时误用变量。
int n;
scanf("%d",&n);
int a[n];
数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。即C不允许对数组的大小作动态定义。
15.在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。
main()
{static int a[10]={1,2,3,4,5,6,7,8,9,10};
printf("%d",a[10]);
}
C语言规定:定义时用a[10],表示a数组有10个元素。其下标值由0开始,所以数组元素a[10]是不存在的。
16.初始化数组时,未使用静态存储。
int a[3]={0,1,2};
这样初始化数组是不对的。C语言规定只有静态存储(static)数组和外部存储(exterm)数组才能初始化。应改为:
static int a[3]={0,1,2};
17.在不应加地址运算符&的位置加了地址运算符。
scanf("%s",&str);
C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&。应改为:
scanf("%s",str);
18.同时定义了形参和函数中的局部变量。
int max(x,y)
int x,y,z;
{z=x>y?x:y;
return(z);
}
形参应该在函数体外定义,而局部变量应该在函数体内定义。应改为:
int max(x,y)
int x,y;
{int z;
z=x>y?x:y;
return(z);
}
c语言课程设计的学习方法与技巧
1.大学生活丰富多彩,会令你一生都难忘,但难忘有很多种,你可以学了很多东西而难忘,也会因为什么都没学到而难忘!2.计算机专业是一个很枯燥的专业,但即来之、则安之,只要你努力学,也会发现其中的乐趣的。3.记住:万丈高楼平地起!基础很重要,尤其是专业基础课,只有打好基础才能学得更深。4.C语言是基础,很重要,如果你不学好C语言,那么什么高级语言你都学不好。5.C语言与C++语言是两回事。就像大熊猫和小熊猫一样,只是名字很像。6.请先学习专业课《数据结构》、《计算机组成原理》,不要刚开始就拿着一本VC在看,你连面向对象都搞不清楚,看VC没有任何用处。7.对编程有一定的认识后,就可以学习C++了。(是C++而不是VC,这两个也是两码事。C++是一门语言,而VC教程则是讲解如何使用MFC类库,学习VC应建立在充分了解C++的基础之上。看VC的书,是学不了C++语言的。)8.学习编程的秘诀是:编程,编程,再编程;9.认真学习每一门专业课,那是你今后的饭碗。10.在学校的实验室就算你做错一万次程序都不会有人骂你,如果在公司你试试看!所以多去实验室上机,做得多了,毕业后就错得少了11.从现在开始,在写程序时就要养成良好的习惯。12.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路。13.你会买好多参考书,那么请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码。14. V C、C #、.NET这些东西都会过时,不会过时的是数据结构和优秀的算法! 15.记住:书到用时方恨少。不要让这种事发生在你身上,在学校你有充足的时间和条件读书,多读书,如果有条件多读原版书,你要知道,当一个翻译者翻译一本书时,他会不知不觉把他的理念写进书中,那本书就会变得像鸡肋!16.我还是强调认真听专业课,因为有些课像《数据结构》、《编译原理》、《操作系统》等等,这种课老师讲一分钟能让你明白的内容,你自己看要看好几个月,有的甚至看了好几年都看不明白。17.抓住在学校里的各种实践的机会,要为自己积累经验,就业时经验比什么都有用。18.多去图书馆,每个学校的图书馆都有很多好书等你去看!19.编程不是技术活,而是体力活。20.如果你决定了要当一个好的程序员,那么请你放弃游戏,除非你是那种每天只要玩游戏就能写出好程序的天才!21.你要有足够的韧性和毅力!有个高手出一一道题测试你的韧性和毅力:找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。22.找到只属于你自己的学习方法。不要盲目的追随别人的方法,适合自己的才是最好的!
C++课程设计题目 做法简单一点的。
1. 有理数运算
问题描述
有理数是一个可以化为一个分数的数,例如2/3,533/920,-12/49都是有理数,而就为无理数。在C++中,并没有预先定义有理数,需要时可以定义一个有理数类,将有理数的分子和分母分别存放在两个整型变量中。对有理数的各种操作都可以用重载运算符来实现。
基本要求
定义并实现一个有理数类,通过重载运算符+、-、*、/对有理数进行算术运算,通过重载运算符==实现判定两个有理数是否相等。写一个优化函数,它的作用是使有理数约去公分母,也即是使保存的有理数分子和分母之间没有公约数(除去1以外)。此外,还要定义一个将有理数转换为实数的函数,再加上构造函数和有理数输出函数。
测试数据
在应用程序中,创建若干有理数对象,通过带参数的构造函数使得各有理数对象值各不相同,然后分别进行各类运算,输出运算结果,检验其正确性。
实现提示
设有两个有理数a/b和c/d,则有:
(1)有理数相加 分子=a*d+b*c;分母=b*d
(2)有理数相减 分子=a*d-b*c;分母=b*d
(3)有理数相乘 分子=a*c; 分母=b*d
(4)有理数相除 分子=a*d; 分母=b*c
优化函数在创建有理数对象时应执行,在执行其它各种运算之后也需执行它,这样可保证所存储的有理数随时都是最优的。对于判断两个有理数是否相等,由于在对有理数进行各种运算后都对其进行优化,所以判定两个有理数是否相等只需判定它们两个的分子和分母分别相等即可。
选做内容
重载插入(>)运算符,使得对有理数可以直接输入输出。设有理数输入格式为:
整数1 整数2 //整数1为分子,整数2为分母
有理数输出格式为:
分子/分母
2. 银行账户管理程序
问题描述
设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、单位、电话号码、地址等,允许用户进行如下操作:开户、销户、存款、取款、转账、查询,一个用户可以有多个户头,账户的数值没有上限。
基本要求
程序运行时,可以由用户选择进行何种操作,开户操作要求输入用户信息后自动获取账号,用户销户后账号被回收,并且该账号可以继续分配给其它账户,不允许用户透支,根据姓名或账号可以进行用户的信息查询,所有的账户信息应存放到一个文件中,可以随时的访问和更新。
测试数据
程序应输入不少于10人的账户信息,应考虑到人员同名的情况。
实现提示
可定义一个账户类存放账户信息以及执行相应的操作,可以用一个链表类来管理账户。
选作内容
在上述程序的基础上,添加联名账户(一个联名账户有两个拥有者)的管理 。
3. 模拟计算器程序
问题描述
设计一个程序来模拟一个简单的手持计算器。程序支持算术运算+、-、*、/、=、以及C(清除)、A(全清除)操作。
基本要求
程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入’=’ 符号后,窗口显示出结果。
测试数据
程序输入不少于5种不同的表达式进行测试。
实现提示
可定义一个计算器类,该类包括两个组件对象,一个计算引擎和一个用户接口,用户接口对象处理接受的键盘输入信息,并显示答案,计算引擎对象对给出的数据执行相应操作,并存储操作的结果。
选作内容
如果用户输入的表达式不合法,可以判别出来并给出相应的错误提示。
4,设计一个类CStudent
类中包含一个学生的基本数据如下:
编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。
并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。如:
1 LiPing m 18 89 98 94
请采用binary文件形式,并使用随机读写处理方式,对自定义CStudent类的对象数据进行存储与读写处理(即是说,总按具有连续编码的编号num为“序”来对文件中的各对象数据进行随机读写处理)。并设计该类的成员函数,而且对输出运算符“<<”进行重载,使该运算符能够完成将一个学生的信息输出到屏幕上。要求成员函数完成以下功能:
(1) 从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。
(2) 按编号对学生信息进行检索并将检索结果显示在屏幕上。
(3) 按姓名对学生信息进行检索并将检索结果显示在屏幕上。
(4) 计算某编号学生的总成绩与平均成绩。
(5) 列出所有总成绩超过n分的性别为s同学的有关信息(n,s由用户从键盘输入)。
思考:可进一步对上述程序进行扩充,如,添加学生基本数据(籍贯,专业,班级,其他各门成绩,奖惩记录等),并添加所需要的其他相关处理函数(如可通过咨询教学办公室管理人员后确立),进而将其编制成为一个简单而实用的小型学籍与成绩管理软件。
5.求解有理数分式方程
内容及要求:
设计一个Rational(有理数)类,用来求解有理数分式方程。为它设计两个数据成员,一个作为分子,另一个作为分母。分母不能为0。有理数1/2可以使用这个类的对象r表示为r(1,2)。需要完成如下操作:
如果分子和分母有公约数,就应该进行化简;
有理数可以进行四则运算,需要重载运算符;
重载流运算符,可以直接输入分子和分母,以及作为整体输出,如:
cin>>r;
1/6 //输入
cou<
解有理数方程a/b x+c/d =e/f,用有理数表示为:
r1=a/b r2=b/c r3=e/f 则
x=(r3-r2)/r1
6复数计算器
内容及要求:
(1)所设计的复数计算器可以进行+ - * += -= *= ++ -- >= = <=是针对复数的模进行运算。
(2)设计输入重载函数,要求能接收从键盘输入a+bi形式的复数,在程序中可以识别出实部虚部并正确赋值。
(3) 设计计算器测试程序,对加减法进行测试,要求在两位数以内进行,对乘法进行测试,乘法要求为一位数的运算。
(4) 设计记录功能,可以记录下不同用户使用计算器的情况,记录以文件的形式保存在计算机内,开机时要求用户输入用户名,显示该名户以前的记录。用户记录用包括:做了多少次加减法、乘法、进行测试的次数,后3次的测试平均分等,在退出计算器程序时用心的用户记录代替原有的记录。
C语言课程设计题目
例:学生管理系统设计 设计内容: 详见视频,要求数据结构用链表,数据存储使用文件。 计算每个老师在一个学期中所教课程的总工作量。(教师单个教学任务的信息为:教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时、单个教学任务总课时) A、教师信息处理 (1) 输入教师授课教学信息,包括教师号、姓名、性别、职称、认教课程、班级、班级数目、理论课时、实验课时。 (2) 插入(修改)教师授课教学信息: (3) 删除教师授课教学信息: (4) 浏览教师授课教学信息: B、教师工作量数据处理: (1) 计算单个教学任务总课时。计算原则如下表: (2) 计算一个教师一个学期总的教学工作量。总的教学工作量=所有单个教学任务总课时之和。 (3)教师数据查询: 提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。 C、教师综合信息输出 提示:输出教师信息到屏幕。 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 该系统是一个进行选择题测试的考试系统,具有测试、练习功能,具有系统设置功能,具有查分和帮助功能。 一、功能要求: 1、用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案) 2、试题录入:可随时增加试题到试题库中 3、试题抽取:每次从试题库中可以随机抽出N道题及每题的得分K(N、K由键盘输入)。 4、可以设置考试时间。 5、用户可以选择“考试”和“练习”两种方式。 5、答题:用户可实现输入自己的答案,“考试”时系统不能显示答案。“练习”时每一题都可以通过查看“按钮”显示标准答案。可以用“上一题”、“下一题”翻页。选择“交卷”按钮则显示得分; 6、自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。 7、考试开始系统显示倒计时。时间为零自动交卷。 二、其它要求: 1、源程序要有适当的注释,使程序容易阅读 2、至少采用文本菜单界面(如果能采用图形菜单界面更好) 3、学生可自动增加新功能模块(视情况可另外加分) 4、写出课程设计报告,具体要求见相关说明文档 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 设计一个简单的英语字典,输入英语单词,显示中文含义,设计要求: 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等)。该学生通信录电话簿管理程序具有加入、删除、显示和查询等功能。 设计要求: 1、 能建立、修改和增删学生通讯录 2、 具有群组工能,可以增加群组和记录。 3、 删除可以删除一条、一个群组、全部记录。 4、 查询包含模糊查询。 5、 显示可以以页面和列表方式显示。 6、 有自动排序的功能。 7、 要求:界面友好,易于操作,采用文件存储数据。 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 [设计内容] 实现一个完整的小型音像店对录像带进行管理的系统。 [设计要求] 系统要求具有以下功能: (1) 管理音像店中的所有录像带,包括新录像带入库、录像带出租、录像带的返还、所有录像带清单的显示、根据指定条件进行查找删除录像带等各种基本操作。 (2) 客户数据维护,可以将客户分为不同等级,可以根据指定客户显示其所借录像带详细信息。 (3) 租金管理,根据所借日期自动计算所需交纳的租金。 (4) 系统要求界面美观,菜单设计合理,操作方便。 [实验提示] 音像店有两个主要的组成部分:录像带和客户。可以构造3个链表存储以下数据: (1) 商店中所有录像带的链表; (2) 商店所有客户的链表; (3) 当前已出租的录像带链表; 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 [设计内容] 航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。设计一个航空订票系统实现上述功能。 [设计要求] (1) 将每条航线的有关信息存入计算机,如:终点站名、航班号、飞机号、飞行周日(星期几)、时间、乘员定额、余票量、票价,已定票客户名单和等候替补客户名单(包括姓名,所需票数); (2) 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞、最近一天航班的日期和余票量。 (3) 订票:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补; (4) 退票:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他候补客户。 发挥想像,增加新的功能,完善系统。 系统要求界面美观,菜单设计合理,操作方便。 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 [设计内容] 某旅馆有n个等级的房间,第I等级有 个房间,每个等级的房间有 个床位(1≤i≤n)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离店便回收床位(供下次分配)的算法。 [设计要求] (1) 旅客登记,即为旅客分配床位。输入旅客姓名、年龄、性别、到达日期和所需房间等级。分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束。 (2) 旅客离开时,即进行床位回收。输入房间等级、房间号和床位号。 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。 设计要求: 1、系统以菜单方式工作 2、职工信息录入功能(职工信息用文件保存)--输入 3、职工信息浏览功能--输出 4、职工信息查询功能--算法 查询方式 按学历查询等 按职工号查询等 5、职工信息删除、修改功能(可选项) 6、按工号排序 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 图书信息包括:书号、书名、作者名、分类号、出版社、出版时间、价格等。 设计功能: 1、系统以菜单方式工作 2、图书信息录入功能(图书信息用文件保存)--输入 3、图书信息的编辑功能(插入、删除、修改) 4、图书信息浏览功能(按书号、书名、出版时间、价格等排序输出)。 5、图书信息查询功能(按书号、书名、作者名、出版社查询,提供模糊查询的功能) 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。 设计功能: 1、能够完成对设备的录入和修改 2、对设备进行分类统计 3、设备的破损耗费和遗损处理 4、设备的查询 要求:采用文件方式存储数据,系统以菜单方式工作 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 设计一个学生选修课程系统,假定有n门课程,每门课程有:课程编号,课程名称,课程性质(公共课、必修课、选修课),总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。 设计功能: 1、系统以菜单方式工作 2、课程信息录入功能(课程信息用文件保存)--输入 3、课程信息的编辑功能(插入、删除、修改) 4、课程信息浏览功能(按课程编号、课程名称、总学时、学分等排序输出)。 5、课程信息查询功能(按课程编号、课程名称、课程性质、开课学期等查询,提供模糊查询的功能) 6、学生选修课程 7、学生选课信息查询 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:1)销售员的代号,2)产品的代号,3)这种产品的当天的销售额。每位销售员每天上缴1张便条。试设计一个便条管理系统。 设计功能: 1、系统以菜单方式工作 2、便条信息录入功能(便条信息用文件保存)--输入 3、收集到了上个月的所有便条后,读取销售情况 1)计算每个人每种产品的销售额。 2)按销售额对销售员进行排序,输出排序结果(销售员代号) 3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)(可选项) 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 设计内容: 设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 设计功能: (1)查看功能:选择此功能时,列出下列三类选择。 A.办公类 B.个人类 C.商务类,当选中某类时,显示出此类所有数据中的姓名和电话号码) (2)增加功能:能录入新数据 一个结点包括:姓名、电话号码、分类(A 办公类 B 个人类 C 商务类)、电子邮件)。 例如: 杨春 13589664454 商务类 [email protected] 当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (3)拔号功能: 能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拔号声音。 (4)修改功能: 选中某个人的姓名时,可对此人的相应数据进行修改 (5)删除功能: 选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111 每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资 - 合计扣款。 A、教师信息处理 (1) 输入教师信息 (2) 插入(修改)教师信息: (3) 删除教师信息: (4) 浏览教师信息: 提示:具体功能及操作参考题1。 B、教师数据处理: (1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。 (2) 教师实发工资、应发工资、合计扣款计算。 提示:计算规则如题目。 (3) 教师数据管理 提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件 (4) 教师数据查询: 提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。 (5) 教师综合信息输出 提示:输出教师信息到屏幕。 链接: https://pan.baidu.com/s/1AdMlIyDVtLtuVVNf62As-Q?pwd=1111 提取码: 1111
C/C++学生成绩管理系统
1.2系统功能需求 所谓学生成绩管理部单单针对院校内的学生的成绩进行管理,还涉及到针对课程信息以及学生信息进行管理,这项工作是由教务部门完成的。管理的结果就是能够使得系统中的用户针对成绩信息进行各种操作。 在本系统中,用户涉及到三类,各自有自己的功能权限,介绍如下: 1、超级用户 即系统管理员,他可以针对教师信息、学生信息、成绩信息进行管理对教师的管理可以这样进行,就是将所有教师按照院系进行分类,可以在分类的前提下进而实现对教师信息的增删改及查询等操作。对学生的管理可以根据学生的学号以及所在的班级两种方式实现,不管在哪一种方式下,都可以对此信息进行增删改及查询。对成绩的管理稍微复杂一些,单个学生成绩的增删改可以由管理员来完成,但是不可以针对某个班级的成绩进行管理,因为一个班级的成绩的录入应该交由任课教师来完成。 2、教师 在系统中﹐教师以自己身份登录系统以后,可以使用的权限对所任课班级的成绩进行添加、修改、查询;另外他还有对教师个人信息进行修改的权限,包括登录口令。此外,教师能统计各门课程的班级最高分、最低分及平均分。 3、学生 学生登录系统以后,可以修改个人信息,包括登录口令,此外就只有查询成绩的权限了。此外,学生能查询各门课程的班级最高分、最低分、平均分以及班内排名。 链接: https://pan.baidu.com/s/1nb1NT70kD4wRG39GXWasmQ 提取码:1111